← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 5271: Merge Data Analyser Module from 2.3 to trunk

 

------------------------------------------------------------
revno: 5271
committer: Mithilesh Kumar Thakur<mithilesh.hisp@xxxxxxxxx>
branch nick: dhis2
timestamp: Sat 2011-12-03 13:14:11 +0530
message:
  Merge Data Analyser Module from 2.3 to trunk
added:
  local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/sms/action/BulkSMSForExcelSheetFormAction.java
  local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/sms/action/BulkSMSForExcelSheetResultAction.java
  local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/util/SendingBulkSMSFromExcelJob.java
  local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/BulkSMSForExcelSheetForm.vm
  local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/BulkSMSForExcelSheetResult.vm
modified:
  local/in/dhis-web-dashboard/pom.xml
  local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/action/IDSPOutbreakAction.java
  local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ds/action/GenerateCommentResultAction.java
  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/mobile/action/GenerateDataStatusMobileFormAction.java
  local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/IndicatorwiseGAFormAction.java
  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/GenerateChartIndicatorAction.java
  local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateDrillDownOrgUnitToPeriodChartDataElementResultAction.java
  local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateDrillDownPeriodToOrgChildChartDataElementResultAction.java
  local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/sms/action/BulkSMSForProgSummaryResultAction.java
  local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/util/DashBoardService.java
  local/in/dhis-web-dashboard/src/main/resources/META-INF/dhis/beans.xml
  local/in/dhis-web-dashboard/src/main/resources/org/hisp/dhis/dataanalyser/i18n_module.properties
  local/in/dhis-web-dashboard/src/main/resources/struts.xml
  local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/commentResult.vm
  local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/css/StylesForTags.css
  local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/graphicalAnalysisDataElementResult.vm
  local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/menu.vm


--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk

Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'local/in/dhis-web-dashboard/pom.xml'
--- local/in/dhis-web-dashboard/pom.xml	2011-10-24 11:27:50 +0000
+++ local/in/dhis-web-dashboard/pom.xml	2011-12-03 07:44:11 +0000
@@ -105,6 +105,17 @@
       <artifactId>junit</artifactId>
     </dependency>
    -->
+	<dependency>
+		<groupId>org.springframework</groupId>
+		<artifactId>spring-context-support</artifactId>
+		<version>${spring.version}</version>
+	</dependency>			
+	<dependency>
+		<groupId>opensymphony</groupId>
+		<artifactId>quartz</artifactId>
+		<version>1.6.3</version>
+	</dependency>		
+	  
     <dependency>
       <groupId>jfree</groupId>
       <artifactId>jfreechart</artifactId>

=== modified file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/action/IDSPOutbreakAction.java'
--- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/action/IDSPOutbreakAction.java	2011-11-03 06:07:39 +0000
+++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/action/IDSPOutbreakAction.java	2011-12-03 07:44:11 +0000
@@ -253,6 +253,7 @@
 
     private String populationDeId;
     private Integer orgUnitGroupId;
+    private String dataSetId;
     // ---------------------------------------------------------------
     // Action Implementation
     // ---------------------------------------------------------------
@@ -261,7 +262,6 @@
         throws Exception
     {
         statementManager.initialise();
-
         
         int idspFlag = 0;
         if ( currentUserService.getCurrentUser() != null )
@@ -352,6 +352,10 @@
     
                     int populationData = dashBoardService.getAggregatedData( orgUnitIdsByComma1, populationDeId, populationPeriodId );
                     
+                    int confirmedCount = dashBoardService.getConfirmedCount( orgUnitIdsByComma, dataSetId, periodId );
+                    int totalSubcentreCount = childTree.size();
+                    System.out.println(confirmedCount + " : " + totalSubcentreCount );
+                    
                     for( String norm : normInfo )
                     {
                         String normId = norm.split( "@:@" )[0];
@@ -366,14 +370,29 @@
                         if( deathData >= 1 )
                         {
                             outBreakAlertMap.put( normName+":"+ou.getId(), deathData + " Deaths" );
-                            outBreakAlertColorMap.put( normName+":"+ou.getId(), "RED" );
+                            
+                            if( confirmedCount != totalSubcentreCount )
+                            {
+                                outBreakAlertColorMap.put( normName+":"+ou.getId(), "PINK" );
+                            }
+                            else
+                            {
+                                outBreakAlertColorMap.put( normName+":"+ou.getId(), "RED" );
+                            }
                         }
                         else
                         {
                             long minLimit = Math.round( populationData/1000.0 );
                             long maxLimit = Math.round( (populationData/1000.0) * 5 );
                             outBreakAlertMap.put( normName+":"+ou.getId(), caseData + " Cases" );
+
                             
+                            if( confirmedCount != totalSubcentreCount )
+                            {
+                                outBreakAlertColorMap.put( normName+":"+ou.getId(), "PINK" );
+                                continue;
+                            }
+
                             if( minLimit == 0 || maxLimit == 0 )
                             {
                                 outBreakAlertColorMap.put( normName+":"+ou.getId(), "WHITE" );
@@ -433,6 +452,8 @@
 
             populationDeId = doc.getElementsByTagName( "population" ).item( 0 ).getFirstChild().getNodeValue();
             
+            dataSetId = doc.getElementsByTagName( "dataset" ).item( 0 ).getFirstChild().getNodeValue();
+            
             orgUnitGroupId = Integer.parseInt( doc.getElementsByTagName( "orgunitgroup" ).item( 0 ).getFirstChild().getNodeValue() );
             
             NodeList listOfNorms = doc.getElementsByTagName( "norm" );

=== modified file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ds/action/GenerateCommentResultAction.java'
--- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ds/action/GenerateCommentResultAction.java	2011-11-22 07:20:09 +0000
+++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ds/action/GenerateCommentResultAction.java	2011-12-03 07:44:11 +0000
@@ -84,13 +84,7 @@
     // ---------------------------------------------------------------
     // Input/Output Parameters
     // ---------------------------------------------------------------
-    
-    
-    
-    
-    
-    
-    
+     
     private String selectedDataSets;
     
     public void setSelectedDataSets( String selectedDataSets )

=== 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-10-14 12:26:01 +0000
+++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ds/action/GenerateSummaryDataStatusResultAction.java	2011-12-03 07:44:11 +0000
@@ -279,6 +279,8 @@
     
     Set<OrganisationUnit> dso;
 
+    Map<String, Double> tempOuMapResult;
+    
     // ---------------------------------------------------------------
     // Action Implementation
     // ---------------------------------------------------------------
@@ -289,6 +291,7 @@
         dataViewName = "";
 
         // Intialization
+        tempOuMapResult = new HashMap<String, Double>();
         ouMapForChildDSAssociation = new HashMap<OrganisationUnit, Integer>();
         ouMapForColor =  new HashMap<OrganisationUnit, Integer>();
         ouMapStatusResult = new HashMap<OrganisationUnit, List<Integer>>();
@@ -395,11 +398,9 @@
         String query = "";
         String query2 = "";
 
-        query = "SELECT COUNT(*) FROM " + dataViewName
-            + " WHERE dataelementid IN (?) AND sourceid IN (?) AND periodid IN (?)";
+        query = "SELECT COUNT(*) FROM " + dataViewName + " WHERE dataelementid IN (?) AND sourceid IN (?) AND periodid IN (?)";
 
-        query2 = "SELECT COUNT(*) FROM " + dataViewName
-            + " WHERE dataelementid IN (?) AND sourceid = ? AND periodid IN (?)";
+        query2 = "SELECT COUNT(*) FROM " + dataViewName + " WHERE dataelementid IN (?) AND sourceid = ? AND periodid IN (?)";
 
         Iterator<OrganisationUnit> orgUnitListIterator = orgUnitList.iterator();
         OrganisationUnit o;
@@ -408,17 +409,27 @@
         dso = selDataSet.getSources();
         String orgUnitId = "";
         
+        Map<Integer, Integer> orgunitLevelMap = new HashMap<Integer, Integer>( dashBoardService.getOrgunitLevelMap() );
+        
         while ( orgUnitListIterator.hasNext() )
         {
             o = (OrganisationUnit) orgUnitListIterator.next();
             orgUnitInfo = "" + o.getId();
 
-            if ( maxOULevel < organisationUnitService.getLevelOfOrganisationUnit( o ) )
-                maxOULevel = organisationUnitService.getLevelOfOrganisationUnit( o );
-
-            if ( minOULevel > organisationUnitService.getLevelOfOrganisationUnit( o ) )
-                minOULevel = organisationUnitService.getLevelOfOrganisationUnit( o );
-
+            Integer ouL = orgunitLevelMap.get( o.getId() );
+            if( ouL == null )
+            {
+                ouL = organisationUnitService.getLevelOfOrganisationUnit( o );
+            }
+            if( maxOULevel < ouL )
+            {
+                maxOULevel = ouL;
+            }
+            if( minOULevel > ouL )
+            {
+                minOULevel = ouL;
+            }
+            
             periodIterator = periodList.iterator();
             Period p;
             double dataStatusPercentatge;
@@ -461,8 +472,10 @@
                     {
                         OrganisationUnit cUnit = (OrganisationUnit) assignedChildrenIterator.next();
                         orgUnitInfo = "-1";
-                        orgUnitId = "-1,";
-                        orgUnitId += String.valueOf( cUnit.getId() );
+                        dataStatusPercentatge = 0.0;
+                        //orgUnitId = "-1,";
+                        //orgUnitId += String.valueOf( cUnit.getId() );
+                        orgUnitId = ""+ cUnit.getId();
                         orgUnitCount = 0;
                         getOrgUnitInfo( o, dso );
 
@@ -478,32 +491,47 @@
                                 + ") AND sourceid IN (" + orgUnitId + ") AND periodid IN (" + periodInfo + ")";
                         }
 
-                        SqlRowSet sqlResultSet = jdbcTemplate.queryForRowSet( query2 );
-
-                        if ( sqlResultSet.next() )
+                        Double tempDataStatusCount = tempOuMapResult.get( orgUnitId+":"+periodInfo );
+                        if( tempDataStatusCount == null )
                         {
-                            try
+                            SqlRowSet sqlResultSet = jdbcTemplate.queryForRowSet( query2 );
+    
+                            if ( sqlResultSet.next() )
                             {
-                                dataStatusPercentatge = ((double) sqlResultSet.getInt( 1 ) / (double) (dataSetMemberCount1)) * 100.0;
+                                try
+                                {
+                                    dataStatusPercentatge = ((double) sqlResultSet.getInt( 1 ) / (double) (dataSetMemberCount1)) * 100.0;
+                                }
+                                catch ( Exception e )
+                                {
+                                    dataStatusPercentatge = 0.0;
+                                }
                             }
-                            catch ( Exception e )
+                            else
                             {
                                 dataStatusPercentatge = 0.0;
                             }
+    
+                            if( dataStatusPercentatge > 100.0 )
+                            {
+                                dataStatusPercentatge = 100;
+                            }
+    
+                            dataStatusPercentatge = Math.round( dataStatusPercentatge * Math.pow( 10, 0 ) ) / Math.pow( 10, 0 );
+                            
+                            tempOuMapResult.put( orgUnitId+":"+periodInfo, dataStatusPercentatge );
+    
                         }
                         else
-                            dataStatusPercentatge = 0.0;
-
-                        if ( dataStatusPercentatge > 100.0 )
-                            dataStatusPercentatge = 100;
-
-                        dataStatusPercentatge = Math.round( dataStatusPercentatge * Math.pow( 10, 0 ) )
-                            / Math.pow( 10, 0 );
+                        {
+                            dataStatusPercentatge = tempDataStatusCount;
+                        }
 
                         if ( dataStatusPercentatge >= 5.0 )
                         {
                             dataStatusCount += 1;
                         }
+
                     }
                     
                     dsSummaryResults.add( dataStatusCount );

=== modified file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ds/mobile/action/GenerateDataStatusMobileFormAction.java'
--- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ds/mobile/action/GenerateDataStatusMobileFormAction.java	2010-12-08 07:24:10 +0000
+++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ds/mobile/action/GenerateDataStatusMobileFormAction.java	2011-12-03 07:44:11 +0000
@@ -120,7 +120,8 @@
                 } 
                 
                 // Remove datasets which are nor mobile datasets
-                else if ( d.getMobile() == null || !d.getMobile())
+                //else if ( d.getMobile() == null || !d.getMobile())
+                else if ( !d.isMobile() )    
                 {
                    dataSetListIterator.remove();
                 }

=== modified file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/IndicatorwiseGAFormAction.java'
--- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/IndicatorwiseGAFormAction.java	2011-10-24 11:27:50 +0000
+++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/IndicatorwiseGAFormAction.java	2011-12-03 07:44:11 +0000
@@ -66,7 +66,7 @@
     // Dependencies
     // -------------------------------------------------------------------------
     
-    private IndicatorService indicatorService ;
+    private IndicatorService indicatorService;
 
     public void setIndicatorService( IndicatorService indicatorService )
     {
@@ -202,13 +202,13 @@
 
     public String execute() throws Exception
     {
-    
         /* DataElements and Groups */
         indicators = new ArrayList<Indicator>( indicatorService.getAllIndicators());
         indicatorGroups = new ArrayList<IndicatorGroup>( indicatorService.getAllIndicatorGroups()) ;
         Collections.sort( indicators, new IndicatorNameComparator() );
         Collections.sort( indicatorGroups, new IndicatorGroupNameComparator() );
         
+        System.out.println( "--Size of Indicators is--" +  indicators.size() + ",----Size of Indicators Group is is-- "  + indicatorGroups.size() );
         /* Periods Type */
         periodTypes = new ArrayList<PeriodType>( periodService.getAllPeriodTypes() );
         

=== 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-09-03 09:46:15 +0000
+++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateChartDataElementAction.java	2011-12-03 07:44:11 +0000
@@ -384,7 +384,14 @@
         {
             aggChecked = "0";
         }
-
+ /*      
+        System.out.println( ougGroupSetCB );
+        
+        if( ougGroupSetCB.equalsIgnoreCase( "false" ))
+        {
+            ougGroupSetCB = null;
+        }
+ */      
         // ----------------------------------------------------------------------
         // Period Info
         // ----------------------------------------------------------------------
@@ -648,6 +655,7 @@
 
         if ( deSelection.equalsIgnoreCase( OPTIONCOMBO ) )
         {
+            System.out.println( "In side deOptionCombo "  + deSelection );
             Iterator<String> deIterator = selectedDataElements.iterator();
             while ( deIterator.hasNext() )
             {
@@ -674,7 +682,8 @@
         }
 
         selectedServiceList = new ArrayList<Object>( dataElementList );
-
+        
+        System.out.println( "Size of selected OptionCombo List is " + selectedOptionComboList.size() );
         // ----------------------------------------------------------------------
         // OrgUnit Information
         // ----------------------------------------------------------------------
@@ -826,7 +835,7 @@
                 decoc = decocList.get( serviceCount );
 
                 series[serviceCount] = dataElement.getName() + " : " + decoc.getName();
-
+                
                 CaseAggregationCondition caseAggregationCondition = caseAggregationConditionService
                     .getCaseAggregationCondition( dataElement, decoc );
 
@@ -882,25 +891,24 @@
                 selectedDrillDownData.add( drillDownData );
 
                 Double aggDataValue = 0.0;
-
-                Iterator<DataElementCategoryOptionCombo> optionComboIterator = optionCombos.iterator();
-                while ( optionComboIterator.hasNext() )
+                
+                if ( deSelection.equalsIgnoreCase( OPTIONCOMBO ) )
                 {
-                    DataElementCategoryOptionCombo decoc1 = (DataElementCategoryOptionCombo) optionComboIterator.next();
-
+                    //System.out.println( " Inside deSelection.equalsIgnoreCase( OPTIONCOMBO ) "  );
                     if ( aggDataCB != null )
                     {
-                        Double temp = aggregationService.getAggregatedDataValue( dataElement, decoc1, startDate,
+                        Double temp = aggregationService.getAggregatedDataValue( dataElement, decoc, startDate,
                             endDate, orgUnit );
                         if ( temp != null )
                             aggDataValue += temp;
+                            //aggDataValue = temp;
                     }
                     else
                     {
                         Collection<Period> periods = periodService.getPeriodsBetweenDates( startDate, endDate );
                         for ( Period period : periods )
                         {
-                            DataValue dataValue = dataValueService.getDataValue( orgUnit, dataElement, period, decoc1 );
+                            DataValue dataValue = dataValueService.getDataValue( orgUnit, dataElement, period, decoc );
                             try
                             {
                                 aggDataValue += Double.parseDouble( dataValue.getValue() );
@@ -911,7 +919,40 @@
                         }
                     }
                 }
+                else
+                {
+                    //System.out.println( " Inside not deSelection.equalsIgnoreCase( OPTIONCOMBO ) "  );
+                    Iterator<DataElementCategoryOptionCombo> 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;
+                                //aggDataValue = temp;
+                        }
+                        else
+                        {
+                            Collection<Period> 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 )
+                                {
+                                }
+                            }
+                        }
+                    }
+                }
+                //System.out.println( " Data is  : " + aggDataValue );
                 data[serviceCount][periodCount] = aggDataValue;
 
                 if ( dataElement.getType().equalsIgnoreCase( DataElement.VALUE_TYPE_INT ) )
@@ -934,7 +975,6 @@
 
             serviceCount++;
         }
-
         dataElementChartResult = new DataElementChartResult( series, categories, data, chartTitle, xAxis_Title,
             yAxis_Title );
 
@@ -1003,16 +1043,11 @@
                     Date endDate = selEndPeriodList.get( periodCount );
                     Collection<Period> periods = periodService.getPeriodsBetweenDates( startDate, endDate );
 
-                    Iterator<DataElementCategoryOptionCombo> optionComboIterator = optionCombos.iterator();
-                    while ( optionComboIterator.hasNext() )
+                    if ( deSelection.equalsIgnoreCase( OPTIONCOMBO ) )
                     {
-                        DataElementCategoryOptionCombo decoc1 = (DataElementCategoryOptionCombo) optionComboIterator
-                            .next();
-
                         if ( aggDataCB != null )
                         {
-                            Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement, decoc1,
-                                startDate, endDate, orgChild );
+                            Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement, decoc, startDate, endDate, orgChild );
                             if ( tempAggDataValue != null )
                                 aggDataValue += tempAggDataValue;
                         }
@@ -1020,8 +1055,7 @@
                         {
                             for ( Period period : periods )
                             {
-                                DataValue dataValue = dataValueService.getDataValue( orgChild, dataElement, period,
-                                    decoc1 );
+                                DataValue dataValue = dataValueService.getDataValue( orgChild, dataElement, period, decoc );
                                 try
                                 {
                                     aggDataValue += Double.parseDouble( dataValue.getValue() );
@@ -1032,6 +1066,38 @@
                             }
                         }
                     }
+                    else
+                    {
+                        Iterator<DataElementCategoryOptionCombo> 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++;
                 }
 
@@ -1118,16 +1184,12 @@
                 {
                     Date endDate = selEndPeriodList.get( periodCount );
                     Collection<Period> periods = periodService.getPeriodsBetweenDates( startDate, endDate );
-
-                    Iterator<DataElementCategoryOptionCombo> optionComboIterator = optionCombos.iterator();
-                    while ( optionComboIterator.hasNext() )
+                    
+                    if ( deSelection.equalsIgnoreCase( OPTIONCOMBO ) )
                     {
-                        DataElementCategoryOptionCombo decoc1 = (DataElementCategoryOptionCombo) optionComboIterator
-                            .next();
-
                         if ( aggDataCB != null )
                         {
-                            Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement, decoc1,
+                            Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement, decoc,
                                 startDate, endDate, orgunit );
                             if ( tempAggDataValue != null )
                                 aggDataValue += tempAggDataValue;
@@ -1137,7 +1199,7 @@
                             for ( Period period : periods )
                             {
                                 DataValue dataValue = dataValueService.getDataValue( orgunit, dataElement, period,
-                                    decoc1 );
+                                    decoc );
                                 try
                                 {
                                     aggDataValue += Double.parseDouble( dataValue.getValue() );
@@ -1148,6 +1210,38 @@
                             }
                         }
                     }
+                    else
+                    {
+                        Iterator<DataElementCategoryOptionCombo> 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++;
                 }
 
@@ -1240,15 +1334,12 @@
                 int orgGroupCount = 0;
                 for ( OrganisationUnit orgUnit : selOUGroupMemberList )
                 {
-                    Iterator<DataElementCategoryOptionCombo> optionComboIterator = optionCombos.iterator();
-                    while ( optionComboIterator.hasNext() )
+                    
+                    if ( deSelection.equalsIgnoreCase( OPTIONCOMBO ) )
                     {
-                        DataElementCategoryOptionCombo decoc1 = (DataElementCategoryOptionCombo) optionComboIterator
-                            .next();
-
                         if ( aggDataCB != null )
                         {
-                            Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement, decoc1,
+                            Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement, decoc,
                                 startDate, endDate, orgUnit );
                             if ( tempAggDataValue != null )
                                 aggDataValue += tempAggDataValue;
@@ -1258,7 +1349,7 @@
                             for ( Period period : periods )
                             {
                                 DataValue dataValue = dataValueService.getDataValue( orgUnit, dataElement, period,
-                                    decoc1 );
+                                    decoc );
                                 try
                                 {
                                     aggDataValue += Double.parseDouble( dataValue.getValue() );
@@ -1269,6 +1360,38 @@
                             }
                         }
                     }
+                    else
+                    {
+                        Iterator<DataElementCategoryOptionCombo> 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++;
                 }
 
@@ -1374,17 +1497,13 @@
                         Date endDate = selEndPeriodList.get( periodCount );
 
                         Collection<Period> periods = periodService.getPeriodsBetweenDates( startDate, endDate );
-
-                        Iterator<DataElementCategoryOptionCombo> optionComboIterator = optionCombos.iterator();
-                        while ( optionComboIterator.hasNext() )
+                        
+                        if ( deSelection.equalsIgnoreCase( OPTIONCOMBO ) )
                         {
-                            DataElementCategoryOptionCombo decoc1 = (DataElementCategoryOptionCombo) optionComboIterator
-                                .next();
-
                             if ( aggDataCB != null )
                             {
                                 Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement,
-                                    decoc1, startDate, endDate, orgUnit );
+                                    decoc, startDate, endDate, orgUnit );
                                 if ( tempAggDataValue != null )
                                     aggDataValue += tempAggDataValue;
                             }
@@ -1393,7 +1512,7 @@
                                 for ( Period period : periods )
                                 {
                                     DataValue dataValue = dataValueService.getDataValue( orgUnit, dataElement, period,
-                                        decoc1 );
+                                        decoc );
 
                                     try
                                     {
@@ -1406,6 +1525,40 @@
                                 }
                             }
                         }
+                        else
+                        {
+                            Iterator<DataElementCategoryOptionCombo> 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++;
                     }
                 }

=== modified file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateChartIndicatorAction.java'
--- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateChartIndicatorAction.java	2011-09-03 09:46:15 +0000
+++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateChartIndicatorAction.java	2011-12-03 07:44:11 +0000
@@ -1039,12 +1039,27 @@
                             aggIndicatorNumValue += tempAggIndicatorNumValue;
 
                         }
+                       
+                        if ( tempAggIndicatorDenumValue != null )
+                        {
+                            if( !indicator.getDenominator().trim().equals( "1" ) )
+                            {
+                                aggIndicatorDenumValue += tempAggIndicatorDenumValue;
+                            }
+                            else 
+                            {
+                                aggIndicatorDenumValue = 1.0;
+                            }
+                        }
+                        
+                        
+                        /*
                         if ( tempAggIndicatorDenumValue != null )
                         {
                             aggIndicatorDenumValue += tempAggIndicatorDenumValue;
 
                         }
-
+                        */
                     }
                     else
                     {
@@ -1061,10 +1076,12 @@
                         }
                         aggIndicatorNumValue += tempAggIndicatorNumValue;
 
+                        
                         Double tempAggIndicatorDenumValue = 0.0;
 
                         tempStr = reportService.getIndividualResultDataValue( indicator.getDenominator(), startDate,
                             endDate, orgChild, "" );
+                        
                         try
                         {
                             tempAggIndicatorDenumValue = Double.parseDouble( tempStr );
@@ -1073,7 +1090,17 @@
                         {
                             tempAggIndicatorDenumValue = 0.0;
                         }
-                        aggIndicatorDenumValue += tempAggIndicatorDenumValue;
+                        
+                        if( !indicator.getDenominator().trim().equals( "1" ) )
+                        {
+                            aggIndicatorDenumValue += tempAggIndicatorDenumValue;
+                        }
+                        else 
+                        {
+                            aggIndicatorDenumValue = 1.0;
+                        }
+                        
+                        //aggIndicatorDenumValue += tempAggIndicatorDenumValue;
 
                     }
 
@@ -1182,11 +1209,26 @@
                             aggIndicatorNumValue += tempAggIndicatorNumValue;
 
                         }
+                        
+                        if ( tempAggIndicatorDenumValue != null )
+                        {
+                            if( !indicator.getDenominator().trim().equals( "1" ) )
+                            {
+                                aggIndicatorDenumValue += tempAggIndicatorDenumValue;
+                            }
+                            else 
+                            {
+                                aggIndicatorDenumValue = 1.0;
+                            }
+                        }
+                        
+                        /*
                         if ( tempAggIndicatorDenumValue != null )
                         {
                             aggIndicatorDenumValue += tempAggIndicatorDenumValue;
 
                         }
+                        */
                     }
                     else
                     {
@@ -1220,7 +1262,18 @@
                         {
                             tempAggIndicatorDenumValue = 0.0;
                         }
-                        aggIndicatorDenumValue += tempAggIndicatorDenumValue;
+                        
+                        if( !indicator.getDenominator().trim().equals( "1" ) )
+                        {
+                            aggIndicatorDenumValue += tempAggIndicatorDenumValue;
+                        }
+                        else 
+                        {
+                            aggIndicatorDenumValue = 1.0;
+                        }
+                        
+                        //aggIndicatorDenumValue += tempAggIndicatorDenumValue;
+                        
                         // System.out.println( " \nAggIndicator Denum Value : "
                         // + aggIndicatorDenumValue );
 
@@ -1342,10 +1395,24 @@
                         }
                         if ( tempAggIndicatorDenumValue != null )
                         {
+                            if( !indicator.getDenominator().trim().equals( "1" ) )
+                            {
+                                aggIndicatorDenumValue += tempAggIndicatorDenumValue;
+                            }
+                            else 
+                            {
+                                aggIndicatorDenumValue = 1.0;
+                            }
+                        }
+                       
+                        
+                        /*
+                        if ( tempAggIndicatorDenumValue != null )
+                        {
                             aggIndicatorDenumValue += tempAggIndicatorDenumValue;
 
                         }
-
+                        */
                     }
                     else
                     {
@@ -1380,7 +1447,17 @@
                         {
                             tempAggIndicatorDenumValue = 0.0;
                         }
-                        aggIndicatorDenumValue += tempAggIndicatorDenumValue;
+                        
+                        if( !indicator.getDenominator().trim().equals( "1" ) )
+                        {
+                            aggIndicatorDenumValue += tempAggIndicatorDenumValue;
+                        }
+                        else 
+                        {
+                            aggIndicatorDenumValue = 1.0;
+                        }
+                        
+                        //aggIndicatorDenumValue += tempAggIndicatorDenumValue;
 
                     }
                     orgGroupCount++;
@@ -1514,10 +1591,22 @@
                             }
                             if ( tempAggIndicatorDenumValue != null )
                             {
+                                if( !indicator.getDenominator().trim().equals( "1" ) )
+                                {
+                                    aggIndicatorDenumValue += tempAggIndicatorDenumValue;
+                                }
+                                else 
+                                {
+                                    aggIndicatorDenumValue = 1.0;
+                                }
+                            }
+                            /*
+                            if ( tempAggIndicatorDenumValue != null )
+                            {
                                 aggIndicatorDenumValue += tempAggIndicatorDenumValue;
 
                             }
-
+                            */
                         }
                         else
                         {
@@ -1553,7 +1642,18 @@
                             {
                                 tempAggIndicatorDenumValue = 0.0;
                             }
-                            aggIndicatorDenumValue += tempAggIndicatorDenumValue;
+                           
+                            if( !indicator.getDenominator().trim().equals( "1" ) )
+                            {
+                                aggIndicatorDenumValue += tempAggIndicatorDenumValue;
+                            }
+                            else 
+                            {
+                                aggIndicatorDenumValue = 1.0;
+                            }
+                            
+                            //aggIndicatorDenumValue += tempAggIndicatorDenumValue;
+                            
                             // System.out.println(
                             // " \nAggIndicator Denum Value : " +
                             // aggIndicatorDenumValue );

=== modified file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateDrillDownOrgUnitToPeriodChartDataElementResultAction.java'
--- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateDrillDownOrgUnitToPeriodChartDataElementResultAction.java	2011-03-01 09:39:28 +0000
+++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateDrillDownOrgUnitToPeriodChartDataElementResultAction.java	2011-12-03 07:44:11 +0000
@@ -268,8 +268,8 @@
         String deSelection = values[8];
         String aggDataCB = values[9];
         
-        System.out.println( selStartPeriodList + ":" + selEndPeriodList + ":" + periodTypeLB + ":" +  dataElementList+ ":" + deSelection + ":" + selectedOptionComboList +  ":" + selectedOrgUnit + ":" + aggDataCB );
-        System.out.println( "Chart Generation Start Time is for drillDown: \t" + new Date() );
+        //System.out.println( selStartPeriodList + ":" + selEndPeriodList + ":" + periodTypeLB + ":" +  dataElementList+ ":" + deSelection + ":" + selectedOptionComboList +  ":" + selectedOrgUnit + ":" + aggDataCB );
+        //System.out.println( "Chart Generation Start Time is for drillDown: \t" + new Date() );
         
         if( orgUnitGroup == 0 && ( categoryLB.equalsIgnoreCase( PERIODWISE )) ) 
         {

=== modified file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateDrillDownPeriodToOrgChildChartDataElementResultAction.java'
--- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateDrillDownPeriodToOrgChildChartDataElementResultAction.java	2011-03-01 09:39:28 +0000
+++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateDrillDownPeriodToOrgChildChartDataElementResultAction.java	2011-12-03 07:44:11 +0000
@@ -270,8 +270,8 @@
         String deSelection = values[8];
         String aggDataCB = values[9];
         
-        System.out.println( selStartPeriodList + ":" + selEndPeriodList + ":" +periodTypeLB + ":" +  dataElementList+ ":" + deSelection + ":" + selectedOptionComboList +  ":" + selectedOrgUnit + ":" + aggDataCB );
-        System.out.println( "Chart Generation Start Time is for drillDown: \t" + new Date() );
+        //System.out.println( selStartPeriodList + ":" + selEndPeriodList + ":" +periodTypeLB + ":" +  dataElementList+ ":" + deSelection + ":" + selectedOptionComboList +  ":" + selectedOrgUnit + ":" + aggDataCB );
+       // System.out.println( "Chart Generation Start Time is for drillDown: \t" + new Date() );
         
         if( orgUnitGroup == 0 && ( categoryLB.equalsIgnoreCase( CHILDREN ) || ( categoryLB.equalsIgnoreCase( SELECTED )) )) 
         {

=== added file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/sms/action/BulkSMSForExcelSheetFormAction.java'
--- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/sms/action/BulkSMSForExcelSheetFormAction.java	1970-01-01 00:00:00 +0000
+++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/sms/action/BulkSMSForExcelSheetFormAction.java	2011-12-03 07:44:11 +0000
@@ -0,0 +1,17 @@
+package org.hisp.dhis.dataanalyser.sms.action;
+
+import com.opensymphony.xwork2.Action;
+
+public class BulkSMSForExcelSheetFormAction implements Action
+{
+    
+    // -------------------------------------------------------------------------
+    // Action Implementation
+    // -------------------------------------------------------------------------
+    
+    public String execute() throws Exception
+    {
+        return SUCCESS;
+    }
+
+}

=== added file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/sms/action/BulkSMSForExcelSheetResultAction.java'
--- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/sms/action/BulkSMSForExcelSheetResultAction.java	1970-01-01 00:00:00 +0000
+++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/sms/action/BulkSMSForExcelSheetResultAction.java	2011-12-03 07:44:11 +0000
@@ -0,0 +1,91 @@
+package org.hisp.dhis.dataanalyser.sms.action;
+
+import java.io.File;
+import java.util.UUID;
+import jxl.Sheet;
+import jxl.Workbook;
+import jxl.write.WritableWorkbook;
+
+import org.hisp.dhis.dataanalyser.util.BulkSMSHttpInterface;
+
+import com.opensymphony.xwork2.Action;
+
+public class BulkSMSForExcelSheetResultAction implements Action
+{
+
+    // -------------------------------------------------------------------------
+    // Dependencies
+    // -------------------------------------------------------------------------
+
+    // -------------------------------------------------------------------------
+    // Getter & Setter
+    // -------------------------------------------------------------------------
+
+    private String resultMessage;
+    
+    public String getResultMessage()
+    {
+        return resultMessage;
+    }
+    
+    private File output;
+
+    public File getOutput()
+    {
+        return output;
+    }
+
+    private File upload;
+
+    public File getUpload()
+    {
+        return upload;
+    }
+
+    public void setUpload( File upload )
+    {
+        this.upload = upload;
+    }
+
+    // -------------------------------------------------------------------------
+    // Action Implementation
+    // -------------------------------------------------------------------------
+
+    public String execute() throws Exception
+    {
+        BulkSMSHttpInterface bulkSMSHTTPInterface = new BulkSMSHttpInterface();
+
+        int rowStart = 2;
+        int colStart = 1;
+        int rowEnd = 65530;
+        
+        try
+        {
+            String outputReportPath = System.getenv( "DHIS2_HOME" ) + File.separator + "temp" + File.separator + UUID.randomUUID().toString() + ".xls";
+            Workbook excelImportFile = Workbook.getWorkbook( upload );
+            WritableWorkbook writableExcelImportFile = Workbook.createWorkbook( new File(outputReportPath), excelImportFile );
+            Sheet sheet = writableExcelImportFile.getSheet( 0 );
+
+            for( int i = rowStart; i < rowEnd; i++ )
+            {                
+                String cellContent1 = sheet.getCell( colStart, i).getContents();
+                String cellContent2 = sheet.getCell( colStart+1, i).getContents();
+                if( cellContent1 == null || cellContent1.equalsIgnoreCase( "" ) || cellContent2 == null || cellContent2.equalsIgnoreCase( "" ) )
+                {
+                    continue;
+                }
+                System.out.println( cellContent1 + " : " + cellContent2 );
+                bulkSMSHTTPInterface.sendMessage( cellContent2, cellContent1 );
+            }
+
+            resultMessage = bulkSMSHTTPInterface.checkBalance();
+        }
+        catch( Exception e )
+        {
+            resultMessage = "Not able to send SMS to the group bec of "+e.getMessage();
+            e.printStackTrace();
+        }
+
+        return SUCCESS;
+    }
+}

=== modified file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/sms/action/BulkSMSForProgSummaryResultAction.java'
--- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/sms/action/BulkSMSForProgSummaryResultAction.java	2011-10-13 09:49:44 +0000
+++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/sms/action/BulkSMSForProgSummaryResultAction.java	2011-12-03 07:44:11 +0000
@@ -60,7 +60,7 @@
     {
         Map<OrganisationUnit,String> tempOrgUnitMap = new HashMap<OrganisationUnit, String>();
         
-        BulkSMSHttpInterface bulkSMSHTTPInterface = new BulkSMSHttpInterface();;
+        BulkSMSHttpInterface bulkSMSHTTPInterface = new BulkSMSHttpInterface();
         
         try
         {

=== modified file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/util/DashBoardService.java'
--- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/util/DashBoardService.java	2011-11-03 06:07:39 +0000
+++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/util/DashBoardService.java	2011-12-03 07:44:11 +0000
@@ -126,6 +126,31 @@
     }
     
 
+    public Map<Integer, Integer> getOrgunitLevelMap( )
+    {
+        Map<Integer, Integer> orgUnitLevelMap = new HashMap<Integer, Integer>();
+        try
+        {
+            String query = "SELECT organisationunitid,level FROM _orgunitstructure";
+
+            SqlRowSet rs = jdbcTemplate.queryForRowSet( query );
+            
+            while ( rs.next() )
+            {                
+                Integer orgUnitId = rs.getInt( 1 );
+                Integer level = rs.getInt( 2 );
+                
+                orgUnitLevelMap.put( orgUnitId, level );
+            }
+            
+            return orgUnitLevelMap;
+        }
+        catch( Exception e )
+        {
+            throw new RuntimeException( "Illegal DataElement id", e );
+        }
+    }
+
     public String getPeriodIdForIDSPPopulation( )
     {
         String periodIdResult = "-1";
@@ -155,6 +180,34 @@
             
     }
     
+    public Integer getConfirmedCount( String orgUnitIdsByComma, String dataSetId, String periodId )
+    {
+        Integer confirmedCount = 0;
+        
+        try
+        {
+            String query = "SELECT COUNT(*) FROM completedatasetregistration " +
+                                " WHERE sourceid IN ("+ orgUnitIdsByComma +") AND " +
+                                " datasetid = "+ dataSetId +" AND " +
+                                " periodid = "+periodId;
+    
+            SqlRowSet rs1 = jdbcTemplate.queryForRowSet( query );
+    
+            if ( rs1 != null && rs1.next() )
+            {
+                double temp = rs1.getDouble( 1 ); 
+                
+                confirmedCount =  (int) temp;
+            }
+        }
+        catch( Exception e )
+        {
+            throw new RuntimeException( e );
+        }
+        
+        return confirmedCount;
+    }
+    
     public String getPeriodIdForIDSPOutBreak( )
     {
         String periodIdResult = "-1";
@@ -169,7 +222,7 @@
             int periodId = -1;
             
             String query = "SELECT periodid, startdate, enddate FROM period WHERE periodtypeid = 2 AND " +
-            		        " startdate <= '" + toDaysDate + "' AND enddate >= '"+ toDaysDate +"'";
+                                " startdate <= '" + toDaysDate + "' AND enddate >= '"+ toDaysDate +"'";
     
             SqlRowSet rs1 = jdbcTemplate.queryForRowSet( query );
             if ( rs1 != null && rs1.next() )
@@ -278,9 +331,9 @@
             }
             
             query = "SELECT program.name, COUNT(*) FROM programinstance " +
-            		" INNER JOIN patient ON programinstance.patientid = patient.patientid " +
-            		" INNER JOIN program ON programinstance.programid = program.programid " +
-            		" WHERE patient.organisationunitid IN ("+ orgUnitIdsByComma +") GROUP BY program.programid";
+                        " INNER JOIN patient ON programinstance.patientid = patient.patientid " +
+                        " INNER JOIN program ON programinstance.programid = program.programid " +
+                        " WHERE patient.organisationunitid IN ("+ orgUnitIdsByComma +") GROUP BY program.programid";
             
             SqlRowSet rs2 = jdbcTemplate.queryForRowSet( query );
             
@@ -306,8 +359,8 @@
         try
         {
             String query = "SELECT programinstance.programid, COUNT(*) FROM programinstance INNER JOIN patient " +
-            				" ON programinstance.patientid = patient.patientid " +
-            				" WHERE patient.organisationunitid IN ("+ orgUnitIdsByComma +") GROUP BY programid";
+                                        " ON programinstance.patientid = patient.patientid " +
+                                        " WHERE patient.organisationunitid IN ("+ orgUnitIdsByComma +") GROUP BY programid";
 
             SqlRowSet rs = jdbcTemplate.queryForRowSet( query );
             
@@ -386,7 +439,7 @@
         {
             String query = "SELECT COUNT(*) FROM patient " +
                                " WHERE organisationunitid IN ("+ orgUnitIdsByComma +") AND " +
-                               	" registrationdate LIKE '"+ selDate+"%'";
+                                " registrationdate LIKE '"+ selDate+"%'";
 
             SqlRowSet rs = jdbcTemplate.queryForRowSet( query );
             
@@ -714,25 +767,22 @@
                    PeriodType periodType = periodService.getPeriodTypeByName( periodTypeLB );
                    Collection<Period> periods = periodService.getPeriodsBetweenDates( startDate, endDate );
                    
-                   System.out.println( periods.size() + ":" + periodType + ":" + startDate + ":" +  endDate );
+                   //System.out.println( periods.size() + ":" + periodType + ":" + startDate + ":" +  endDate );
                    
                    int aggChecked = Integer.parseInt( aggDataCB );
-
-                   Iterator<DataElementCategoryOptionCombo> optionComboIterator = optionCombos.iterator();
-                   while ( optionComboIterator.hasNext() )
+                   
+                   if ( deSelection.equalsIgnoreCase( OPTIONCOMBO ) )
                    {
-                       DataElementCategoryOptionCombo decoc1 = (DataElementCategoryOptionCombo) optionComboIterator.next();
-
                        if( aggChecked == 1 )
                        {
-                           Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement, decoc1, startDate, endDate, orgChild );
+                           Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement, decoc, startDate, endDate, orgChild );
                            if( tempAggDataValue != null ) aggDataValue += tempAggDataValue;
                        }
                        else
                        {
                            for( Period period : periods )
                            {
-                               DataValue dataValue = dataValueService.getDataValue( orgChild, dataElement, period, decoc1 );                               
+                               DataValue dataValue = dataValueService.getDataValue( orgChild, dataElement, period, decoc );                               
                                try
                                {
                                    aggDataValue += Double.parseDouble( dataValue.getValue() );
@@ -743,6 +793,36 @@
                            }
                        }
                    }
+                   
+                   else
+                   {
+                       Iterator<DataElementCategoryOptionCombo> optionComboIterator = optionCombos.iterator();
+                       while ( optionComboIterator.hasNext() )
+                       {
+                           DataElementCategoryOptionCombo decoc1 = (DataElementCategoryOptionCombo) optionComboIterator.next();
+
+                           if( aggChecked == 1 )
+                           {
+                               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++;
                }
  
@@ -829,22 +909,19 @@
                    Collection<Period> periods = periodService.getPeriodsBetweenDates( startDate, endDate );
                        
                    int aggChecked = Integer.parseInt( aggDataCB );
-
-                   Iterator<DataElementCategoryOptionCombo> optionComboIterator = optionCombos.iterator();
-                   while ( optionComboIterator.hasNext() )
+                   
+                   if ( deSelection.equalsIgnoreCase( OPTIONCOMBO ) )
                    {
-                       DataElementCategoryOptionCombo decoc1 = (DataElementCategoryOptionCombo) optionComboIterator.next();
-
                        if( aggChecked == 1 )
                        {
-                           Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement, decoc1, startDate, endDate, orgUnit );
+                           Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement, decoc, startDate, endDate, orgUnit );
                            if( tempAggDataValue != null ) aggDataValue += tempAggDataValue;
                        }
                        else
                        {
                            for( Period period : periods )
                            {
-                               DataValue dataValue = dataValueService.getDataValue( orgUnit, dataElement, period, decoc1 );
+                               DataValue dataValue = dataValueService.getDataValue( orgUnit, dataElement, period, decoc );
                                try
                                {
                                    aggDataValue += Double.parseDouble( dataValue.getValue() );
@@ -855,6 +932,35 @@
                            }
                        }
                    }
+                   else
+                   {
+                       Iterator<DataElementCategoryOptionCombo> optionComboIterator = optionCombos.iterator();
+                       while ( optionComboIterator.hasNext() )
+                       {
+                           DataElementCategoryOptionCombo decoc1 = (DataElementCategoryOptionCombo) optionComboIterator.next();
+
+                           if( aggChecked == 1 )
+                           {
+                               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++;
                }
  
@@ -928,14 +1034,11 @@
                Double aggDataValue = 0.0;
                int aggChecked = Integer.parseInt( aggDataCB );
                
-               Iterator<DataElementCategoryOptionCombo> optionComboIterator = optionCombos.iterator();
-               while ( optionComboIterator.hasNext() )
+               if ( deSelection.equalsIgnoreCase( OPTIONCOMBO ) )
                {
-                   DataElementCategoryOptionCombo decoc1 = (DataElementCategoryOptionCombo) optionComboIterator.next();
-
                    if( aggChecked == 1 )
                    {
-                       Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement, decoc1, startDate, endDate, selectedOrgUnit );
+                       Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement, decoc, startDate, endDate, selectedOrgUnit );
                        if( tempAggDataValue != null ) aggDataValue += tempAggDataValue;
                    }
                    else
@@ -943,7 +1046,7 @@
                        Collection<Period> periods = periodService.getPeriodsBetweenDates( startDate, endDate );
                        for( Period period : periods )
                        {
-                           DataValue dataValue = dataValueService.getDataValue( selectedOrgUnit, dataElement, period, decoc1 );
+                           DataValue dataValue = dataValueService.getDataValue( selectedOrgUnit, dataElement, period, decoc );
                            try
                            {
                                aggDataValue += Double.parseDouble( dataValue.getValue() );
@@ -954,6 +1057,35 @@
                        }
                    }
                }
+               else
+               {
+                   Iterator<DataElementCategoryOptionCombo> optionComboIterator = optionCombos.iterator();
+                   while ( optionComboIterator.hasNext() )
+                   {
+                       DataElementCategoryOptionCombo decoc1 = (DataElementCategoryOptionCombo) optionComboIterator.next();
+
+                       if( aggChecked == 1 )
+                       {
+                           Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement, decoc1, startDate, endDate, selectedOrgUnit );
+                           if( tempAggDataValue != null ) aggDataValue += tempAggDataValue;
+                       }
+                       else
+                       {
+                           Collection<Period> periods = periodService.getPeriodsBetweenDates( startDate, endDate );
+                           for( Period period : periods )
+                           {
+                               DataValue dataValue = dataValueService.getDataValue( selectedOrgUnit, dataElement, period, decoc1 );
+                               try
+                               {
+                                   aggDataValue += Double.parseDouble( dataValue.getValue() );
+                               }
+                               catch( Exception e )
+                               {
+                               }
+                           }
+                       }
+                   }
+               }
                data[serviceCount][periodCount] = aggDataValue;
                
                if( dataElement.getType().equalsIgnoreCase( DataElement.VALUE_TYPE_INT ) )
@@ -1032,22 +1164,19 @@
                for( OrganisationUnit orgUnit : selectedOUGroupMemberList )
                {
                    int aggChecked = Integer.parseInt( aggDataCB );
-
-                   Iterator<DataElementCategoryOptionCombo> optionComboIterator = optionCombos.iterator();
-                   while ( optionComboIterator.hasNext() )
+                   
+                   if ( deSelection.equalsIgnoreCase( OPTIONCOMBO ) )
                    {
-                       DataElementCategoryOptionCombo decoc1 = (DataElementCategoryOptionCombo) optionComboIterator.next();
-
                        if( aggChecked == 1 )
                        {
-                           Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement, decoc1, startDate, endDate, orgUnit );
-                           if(tempAggDataValue != null ) aggDataValue = tempAggDataValue;
+                           Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement, decoc, startDate, endDate, orgUnit );
+                           if(tempAggDataValue != null ) aggDataValue += tempAggDataValue;
                        }
                        else
                        {
                            for( Period period : periods )
                            {
-                               DataValue dataValue = dataValueService.getDataValue( orgUnit, dataElement, period, decoc1 );
+                               DataValue dataValue = dataValueService.getDataValue( orgUnit, dataElement, period, decoc );
                                try
                                {
                                    aggDataValue += Double.parseDouble( dataValue.getValue() );
@@ -1058,6 +1187,34 @@
                            }
                        }
                    }
+                   else
+                   {
+                       Iterator<DataElementCategoryOptionCombo> optionComboIterator = optionCombos.iterator();
+                       while ( optionComboIterator.hasNext() )
+                       {
+                           DataElementCategoryOptionCombo decoc1 = (DataElementCategoryOptionCombo) optionComboIterator.next();
+
+                           if( aggChecked == 1 )
+                           {
+                               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++;
                }
    
@@ -1141,10 +1298,24 @@
                         {
                             aggIndicatorNumValue += tempAggIndicatorNumValue;
                         }
+                        
+                        if ( tempAggIndicatorDenumValue != null )
+                        {
+                            if( !indicator.getDenominator().trim().equals( "1" ) )
+                            {
+                                aggIndicatorDenumValue += tempAggIndicatorDenumValue;
+                            }
+                            else 
+                            {
+                                aggIndicatorDenumValue = 1.0;
+                            }
+                        }
+                        /*
                         if ( tempAggIndicatorDenumValue != null )
                         {
                             aggIndicatorDenumValue += tempAggIndicatorDenumValue;
                         }
+                        */
                     }
                     else
                     {
@@ -1171,7 +1342,17 @@
                         {
                             tempAggIndicatorDenumValue = 0.0;
                         }
-                        aggIndicatorDenumValue += tempAggIndicatorDenumValue;
+                        
+                        if( !indicator.getDenominator().trim().equals( "1" ) )
+                        {
+                            aggIndicatorDenumValue += tempAggIndicatorDenumValue;
+                        }
+                        else 
+                        {
+                            aggIndicatorDenumValue = 1.0;
+                        }
+                        
+                        //aggIndicatorDenumValue += tempAggIndicatorDenumValue;
 
                     }
 
@@ -1273,10 +1454,24 @@
                         {
                             aggIndicatorNumValue += tempAggIndicatorNumValue;
                         }
+                        
+                        if ( tempAggIndicatorDenumValue != null )
+                        {
+                            if( !indicator.getDenominator().trim().equals( "1" ) )
+                            {
+                                aggIndicatorDenumValue += tempAggIndicatorDenumValue;
+                            }
+                            else 
+                            {
+                                aggIndicatorDenumValue = 1.0;
+                            }
+                        }
+                        /*
                         if ( tempAggIndicatorDenumValue != null )
                         {
                             aggIndicatorDenumValue += tempAggIndicatorDenumValue;
                         }
+                        */
                     }
                     else
                     {
@@ -1305,7 +1500,18 @@
                         {
                             tempAggIndicatorDenumValue = 0.0;
                         }
-                        aggIndicatorDenumValue += tempAggIndicatorDenumValue;
+                        
+                        if( !indicator.getDenominator().trim().equals( "1" ) )
+                        {
+                            aggIndicatorDenumValue += tempAggIndicatorDenumValue;
+                        }
+                        else 
+                        {
+                            aggIndicatorDenumValue = 1.0;
+                        }
+                        
+                        
+                        //aggIndicatorDenumValue += tempAggIndicatorDenumValue;
                     }
 
                     periodCount++;
@@ -1501,10 +1707,25 @@
                         {
                             aggIndicatorNumValue += tempAggIndicatorNumValue;
                         }
+                        
+                        if ( tempAggIndicatorDenumValue != null )
+                        {
+                            if( !indicator.getDenominator().trim().equals( "1" ) )
+                            {
+                                aggIndicatorDenumValue += tempAggIndicatorDenumValue;
+                            }
+                            else 
+                            {
+                                aggIndicatorDenumValue = 1.0;
+                            }
+                        }
+                        
+                        /*
                         if ( tempAggIndicatorDenumValue != null )
                         {
                             aggIndicatorDenumValue += tempAggIndicatorDenumValue;
                         }
+                        */
                     }
                     else
                     {
@@ -1532,7 +1753,18 @@
                         {
                             tempAggIndicatorDenumValue = 0.0;
                         }
-                        aggIndicatorDenumValue += tempAggIndicatorDenumValue;
+                       
+                        if( !indicator.getDenominator().trim().equals( "1" ) )
+                        {
+                            aggIndicatorDenumValue += tempAggIndicatorDenumValue;
+                        }
+                        else 
+                        {
+                            aggIndicatorDenumValue = 1.0;
+                        }
+                        
+                        
+                        //aggIndicatorDenumValue += tempAggIndicatorDenumValue;
 
                     }
                     orgGroupCount++;

=== added file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/util/SendingBulkSMSFromExcelJob.java'
--- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/util/SendingBulkSMSFromExcelJob.java	1970-01-01 00:00:00 +0000
+++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/util/SendingBulkSMSFromExcelJob.java	2011-12-03 07:44:11 +0000
@@ -0,0 +1,62 @@
+package org.hisp.dhis.dataanalyser.util;
+
+import java.io.File;
+import java.io.FileReader;
+import java.util.Properties;
+import java.util.UUID;
+
+import jxl.Sheet;
+import jxl.Workbook;
+import jxl.write.WritableWorkbook;
+
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.scheduling.quartz.QuartzJobBean;
+
+public class SendingBulkSMSFromExcelJob extends QuartzJobBean
+{
+    // -------------------------------------------------------------------------
+    // implementation
+    // -------------------------------------------------------------------------
+
+    protected void executeInternal( JobExecutionContext context ) throws JobExecutionException 
+    {
+        
+        try
+        {
+            BulkSMSHttpInterface bulkSMSHTTPInterface = new BulkSMSHttpInterface();
+            
+            Properties properties = new Properties();
+            properties.load( new FileReader( System.getenv( "DHIS2_HOME" ) + File.separator + "SMSServer.conf" ) );
+            
+            String excelFilePath = properties.getProperty( "excelfilepath" );
+
+            int rowStart = 2;
+            int colStart = 1;
+            int rowEnd = 65530;
+
+            String outputReportPath = System.getenv( "DHIS2_HOME" ) + File.separator + "temp" + File.separator + UUID.randomUUID().toString() + ".xls";
+            Workbook excelImportFile = Workbook.getWorkbook( new File(excelFilePath) );
+            WritableWorkbook writableExcelImportFile = Workbook.createWorkbook( new File(outputReportPath), excelImportFile );
+            Sheet sheet = writableExcelImportFile.getSheet( 0 );
+
+            for( int i = rowStart; i < rowEnd; i++ )
+            {                
+                String cellContent1 = sheet.getCell( colStart, i).getContents();
+                String cellContent2 = sheet.getCell( colStart+1, i).getContents();
+                if( cellContent1 == null || cellContent1.equalsIgnoreCase( "" ) || cellContent2 == null || cellContent2.equalsIgnoreCase( "" ) )
+                {
+                    continue;
+                }
+                
+                bulkSMSHTTPInterface.sendMessage( cellContent2, cellContent1 );
+            }
+
+        }
+        catch( Exception e )
+        {
+            e.printStackTrace();
+        }
+
+    }
+}

=== modified file 'local/in/dhis-web-dashboard/src/main/resources/META-INF/dhis/beans.xml'
--- local/in/dhis-web-dashboard/src/main/resources/META-INF/dhis/beans.xml	2011-11-22 07:20:09 +0000
+++ local/in/dhis-web-dashboard/src/main/resources/META-INF/dhis/beans.xml	2011-12-03 07:44:11 +0000
@@ -699,11 +699,6 @@
 	   <property name="dashBoardService" ref="org.hisp.dhis.dataanalyser.util.DashBoardService">
 	   </property>	   
     </bean>			
-
-			
-	
-	
-	
 	<!-- DataStatus For Mobile start  -->
 
 	<bean id="org.hisp.dhis.dataanalyser.ds.mobile.action.GenerateDataStatusMobileFormAction"
@@ -1472,8 +1467,38 @@
         scope="prototype">
         <property name="userGroupService" ref="org.hisp.dhis.user.UserGroupService" />
 		<property name="dashBoardService" ref="org.hisp.dhis.dataanalyser.util.DashBoardService" />
-    <property name="programService" ref="org.hisp.dhis.program.ProgramService" />
-		
-    </bean>     
-		
+		<property name="programService" ref="org.hisp.dhis.program.ProgramService" />
+		
+    </bean>     
+    <!-- BULK SMS: Excel Uploading -->
+    <bean id="org.hisp.dhis.dataanalyser.sms.action.BulkSMSForExcelSheetFormAction"
+        class="org.hisp.dhis.dataanalyser.sms.action.BulkSMSForExcelSheetFormAction"
+        scope="prototype">
+    </bean>     
+    <bean id="org.hisp.dhis.dataanalyser.sms.action.BulkSMSForExcelSheetResultAction"
+        class="org.hisp.dhis.dataanalyser.sms.action.BulkSMSForExcelSheetResultAction"
+        scope="prototype">
+    </bean>
+	
+<!-- Schedular -->	
+    <bean name="schedulerForBulkSMSByExcelJob"
+        class="org.springframework.scheduling.quartz.JobDetailBean">
+        <property name="jobClass" value="org.hisp.dhis.dataanalyser.util.SendingBulkSMSFromExcelJob" />
+   </bean>
+
+   <bean id="cronTriggerForBulkSMSByExcelJob"
+        class="org.springframework.scheduling.quartz.CronTriggerBean">
+        <property name="jobDetail" ref="schedulerForBulkSMSByExcelJob" />
+        <property name="cronExpression" value="0 53 16 * * ?" />
+   </bean>
+
+<!-- Scheduler for all Jobs -->
+
+    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
+        <property name="triggers">
+            <list>
+                <ref bean="cronTriggerForBulkSMSByExcelJob" />
+            </list>
+        </property>
+   </bean>		
 </beans>
\ No newline at end of file

=== modified file 'local/in/dhis-web-dashboard/src/main/resources/org/hisp/dhis/dataanalyser/i18n_module.properties'
--- local/in/dhis-web-dashboard/src/main/resources/org/hisp/dhis/dataanalyser/i18n_module.properties	2011-11-15 09:05:27 +0000
+++ local/in/dhis-web-dashboard/src/main/resources/org/hisp/dhis/dataanalyser/i18n_module.properties	2011-12-03 07:44:11 +0000
@@ -157,6 +157,4 @@
 dataset_not_selected = Select Available data sets
 bulk_sms = Bulk SMS
 due_dates = Due Dates
-ds_sms = DS SMS
-
-
+ds_sms = DS SMS
\ No newline at end of file

=== modified file 'local/in/dhis-web-dashboard/src/main/resources/struts.xml'
--- local/in/dhis-web-dashboard/src/main/resources/struts.xml	2011-11-22 07:20:09 +0000
+++ local/in/dhis-web-dashboard/src/main/resources/struts.xml	2011-12-03 07:44:11 +0000
@@ -8,7 +8,6 @@
 	<package name="dhis-web-dashboard" extends="dhis-web-commons"
 		namespace="/dhis-web-dashboard">
 		
-		
 		<action name="index"
 			class="org.hisp.dhis.dataanalyser.action.DashBoardHomePageAction">
 			<result name="success" type="velocity">/main.vm</result>
@@ -1031,7 +1030,22 @@
             <param name="page">/dhis-web-dashboard/BulkSMSForProgSummaryResult.vm</param>
             <param name="menu">/dhis-web-dashboard/menu.vm</param>
         </action>
+    <!-- BULK SMS: Excel Uploading -->
+		<action name="excelSheetBulkSMSForm"
+			class="org.hisp.dhis.dataanalyser.sms.action.BulkSMSForExcelSheetFormAction">
+			<result name="success" type="velocity">/main.vm</result>
+			<param name="menu">/dhis-web-dashboard/menu.vm</param>
+			<param name="page">/dhis-web-dashboard/BulkSMSForExcelSheetForm.vm</param>
+		</action>                   
+        <action name="excelSheetBulkSMSResultResult"
+            class="org.hisp.dhis.dataanalyser.sms.action.BulkSMSForExcelSheetResultAction">
+            <result name="success" type="velocity">/main.vm</result>
+            <param name="menu">/dhis-web-dashboard/menu.vm</param>
+            <param name="page">/dhis-web-dashboard/BulkSMSForExcelSheetResult.vm</param>
+			<interceptor-ref name="fileUploadStack"/>
+        </action>		
 
+		
 	</package>
 
 </struts>
\ No newline at end of file

=== added file 'local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/BulkSMSForExcelSheetForm.vm'
--- local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/BulkSMSForExcelSheetForm.vm	1970-01-01 00:00:00 +0000
+++ local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/BulkSMSForExcelSheetForm.vm	2011-12-03 07:44:11 +0000
@@ -0,0 +1,82 @@
+
+<style>
+    #overlay 
+    {
+        z-index:9998;
+        position:absolute;
+        top:0;
+        bottom:0;
+        left:0;
+        width:100%;
+        background:#000;
+        opacity:0.45;
+        -moz-opacity:0.45;
+        filter:alpha(opacity=45);
+        visibility:hidden;
+    }
+
+    #overlayImg{ width: 50px; height: 50px; z-index: 9999; position: absolute; left:50%}
+</style>
+
+<div id="overlay">
+    <div id="overlayImg"><img  width="50" height="50" src="images/ajax-loader.gif" /></div>
+</div>
+
+<script>
+
+    function formValidations()
+    {
+        if( document.getElementById('upload').value == null || document.getElementById('upload').value == "" )
+        {
+            alert("Please select upload file"); return false;
+        }
+        
+        showOverlay();
+        
+        return true;
+    }
+    
+    function showOverlay() 
+    {
+        var o = document.getElementById('overlay');
+        o.style.visibility = 'visible';
+        jQuery("#overlay").css({
+            "height": jQuery(document).height()
+        });
+        jQuery("#overlayImg").css({
+            "top":jQuery(window).height()/2
+        });
+    }
+    function hideOverlay() 
+    {
+        var o = document.getElementById('overlay');
+        o.style.visibility = 'hidden';
+    }
+
+</script>
+
+<h3>BULK SMS Form</h3>
+<hr /><br />
+
+<form id="dataImportForm" name="dataImportForm" method="post" enctype="multipart/form-data" action="excelSheetBulkSMSResultResult.action" onsubmit="return formValidations()">
+    <table align="center" style=" border-collapse: collapse; margin-top: 0;" cellpadding="0" cellspacing="0" width="730" border="0" >
+        <tr>
+        <tr>
+            <td class="NormalB">
+                Upload (XLS) File :<br />
+                <input type="file" id="upload" name="upload" size="45" class="{validate:{required:true}}" />
+            </td>
+        </tr>
+        <tr>
+            <td class="NormalB">&nbsp;</td>
+        </tr>
+        <tr>
+            <td class="NormalB">&nbsp;</td>
+        </tr>
+        <tr>
+            <td class="NormalB">
+                <input type="submit" name="importReport" value='Send SMS' style="width:325px" />
+            </td>
+        </tr>
+    </table>
+</form>
\ No newline at end of file

=== added file 'local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/BulkSMSForExcelSheetResult.vm'
--- local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/BulkSMSForExcelSheetResult.vm	1970-01-01 00:00:00 +0000
+++ local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/BulkSMSForExcelSheetResult.vm	2011-12-03 07:44:11 +0000
@@ -0,0 +1,3 @@
+
+
+<font size="8">$resultMessage</font>
\ No newline at end of file

=== modified file 'local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/commentResult.vm'
--- local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/commentResult.vm	2011-11-22 07:20:09 +0000
+++ local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/commentResult.vm	2011-12-03 07:44:11 +0000
@@ -51,8 +51,8 @@
                             				#set( $dataElement = $dataElementList.get( $count2 ) )
                                	    		#set( $periodCount = $periodCounts.get( $count2 ) )
                                	    		<tr>
-                                        		<td class="DefaultFontStylesNoBold" align="left">$dataElement</td>
-                                        		<td class="DefaultFontStylesNoBold" align="left">$comment</td>
+                                        		<td class="NormalA" align="left">$dataElement</td>
+                                        		<td class="NormalA" align="left">$comment</td>
                                     #set( $count2 = $count2 + 1 )     		
                                        	   </tr>
                                 	    #end

=== modified file 'local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/css/StylesForTags.css'
--- local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/css/StylesForTags.css	2011-11-22 07:20:09 +0000
+++ local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/css/StylesForTags.css	2011-12-03 07:44:11 +0000
@@ -86,7 +86,7 @@
 
 .DefaultFontStylesNoBold {
     font-family: arial, georgia, tahoma;
-    font-size: 8px;    
+    font-size: 15px;    
     white-space: nowrap;
     cursor: default;         
 }

=== modified file 'local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/graphicalAnalysisDataElementResult.vm'
--- local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/graphicalAnalysisDataElementResult.vm	2011-01-07 05:45:11 +0000
+++ local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/graphicalAnalysisDataElementResult.vm	2011-12-03 07:44:11 +0000
@@ -130,7 +130,7 @@
         
         var aggDataCB = arugDetails[9];
         //alert( aggDataCB );
-        alert( orgUnitId + "," + orgUnitGroupId + ","  + dataElementId + "," + categoryCombo + "," + periodTypeName + "," + startDate + "," + endDate + "," + periodName );
+       // alert( orgUnitId + "," + orgUnitGroupId + ","  + dataElementId + "," + categoryCombo + "," + periodTypeName + "," + startDate + "," + endDate + "," + periodName );
 
         //var ouRadioVal = $( "input[name='riRadio']:checked" ).val();
         

=== modified file 'local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/menu.vm'
--- local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/menu.vm	2011-11-22 07:20:09 +0000
+++ local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/menu.vm	2011-12-03 07:44:11 +0000
@@ -27,6 +27,7 @@
 		<li>$i18n.getString( "bulk_sms" )</li>
 			<ul>
 
+				<li><a href="excelSheetBulkSMSForm.action">Send Bulk SMS by Excel</a></li>
 				<li><a href="dueDates.action">$i18n.getString( "due_dates" )</a></li>
 				<li><a href="prgwiseSummaryBulkSMSForm.action">$i18n.getString( "Programwise Summary" )</a></li>
 			</ul>