← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 14227: local/in PBF Maintenance work in progress

 

------------------------------------------------------------
revno: 14227
committer: Mithilesh Kumar Thakur <mithilesh.hisp@xxxxxxxxx>
branch nick: dhis2
timestamp: Fri 2014-03-14 12:22:16 +0100
message:
  local/in PBF Maintenance work in progress
added:
  local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/GetAggregationQueryAction.java
  local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/RemoveAggregationQueryAction.java
  local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/RunAggregationQueryFormAction.java
  local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/ShowUpdateAggregationQueryFormAction.java
  local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/UpdateAggregationQueryAction.java
  local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/javascript/prevNextPeriods.js
  local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/jsonAggregationQuery.vm
  local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/updateAggregationQueryForm.vm
modified:
  local/in/dhis-web-coldchain/src/main/java/org/hisp/dhis/coldchain/equipment/action/AddEquipmentAction.java
  local/in/dhis-web-coldchain/src/main/resources/org/hisp/dhis/coldchain/i18n_module.properties
  local/in/dhis-web-coldchain/src/main/webapp/dhis-web-coldchain/addEquipmentForm.vm
  local/in/dhis-web-coldchain/src/main/webapp/dhis-web-coldchain/showEquipmentDetails.vm
  local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/action/AddBankDataAction.java
  local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/AddAggregationQueryAction.java
  local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/AddAggregationQueryFormAction.java
  local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/RunAggregationQueryAction.java
  local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/dataentry/LoadNextPrePeriodsAction.java
  local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/impl/DefaultPBFAggregationService.java
  local/in/dhis-web-maintenance-pbf/src/main/resources/META-INF/dhis/beans.xml
  local/in/dhis-web-maintenance-pbf/src/main/resources/org/hisp/dhis/pbf/i18n_module.properties
  local/in/dhis-web-maintenance-pbf/src/main/resources/struts.xml
  local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/addAggregationQuery.vm
  local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/aggregationQueryList.vm
  local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/javascript/aggregationEngine.js
  local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/runAggregationQueryForm.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-coldchain/src/main/java/org/hisp/dhis/coldchain/equipment/action/AddEquipmentAction.java'
--- local/in/dhis-web-coldchain/src/main/java/org/hisp/dhis/coldchain/equipment/action/AddEquipmentAction.java	2013-10-18 05:57:53 +0000
+++ local/in/dhis-web-coldchain/src/main/java/org/hisp/dhis/coldchain/equipment/action/AddEquipmentAction.java	2014-03-14 11:22:16 +0000
@@ -18,6 +18,7 @@
 import org.hisp.dhis.coldchain.equipment.EquipmentType_Attribute;
 import org.hisp.dhis.coldchain.model.Model;
 import org.hisp.dhis.coldchain.model.ModelService;
+import org.hisp.dhis.i18n.I18nFormat;
 import org.hisp.dhis.option.OptionSet;
 import org.hisp.dhis.organisationunit.OrganisationUnit;
 import org.hisp.dhis.organisationunit.OrganisationUnitService;
@@ -42,6 +43,13 @@
     
     private ModelService modelService;
     
+    private I18nFormat format;
+    
+    public void setFormat( I18nFormat format )
+    {
+        this.format = format;
+    }
+    
     // -------------------------------------------------------------------------
     // Input/ Output
     // -------------------------------------------------------------------------
@@ -78,6 +86,14 @@
     {
         this.organisationUnit = organisationUnit;
     }
+    
+    private String registrationDate;
+    
+    public void setRegistrationDate( String registrationDate )
+    {
+        this.registrationDate = registrationDate;
+    }
+
 
     // -------------------------------------------------------------------------
     // Action implementation
@@ -106,6 +122,8 @@
         equipment.setEquipmentType( equipmentType );
         equipment.setOrganisationUnit( orgUnit );
         
+        equipment.setRegistrationDate( format.parseDate( registrationDate ) );
+        
         //equipment.setWorking( workingStatus );
         
         if( selModel != null )

=== modified file 'local/in/dhis-web-coldchain/src/main/resources/org/hisp/dhis/coldchain/i18n_module.properties'
--- local/in/dhis-web-coldchain/src/main/resources/org/hisp/dhis/coldchain/i18n_module.properties	2013-12-30 05:54:06 +0000
+++ local/in/dhis-web-coldchain/src/main/resources/org/hisp/dhis/coldchain/i18n_module.properties	2014-03-14 11:22:16 +0000
@@ -182,4 +182,6 @@
 code_in_use=The code is already in use. Please choose a different code.
 type = Type
 code = Code
-ownership = Ownership
\ No newline at end of file
+ownership = Ownership
+
+registration_date = Registration date
\ No newline at end of file

=== modified file 'local/in/dhis-web-coldchain/src/main/webapp/dhis-web-coldchain/addEquipmentForm.vm'
--- local/in/dhis-web-coldchain/src/main/webapp/dhis-web-coldchain/addEquipmentForm.vm	2013-10-18 05:57:53 +0000
+++ local/in/dhis-web-coldchain/src/main/webapp/dhis-web-coldchain/addEquipmentForm.vm	2014-03-14 11:22:16 +0000
@@ -63,6 +63,19 @@
 			</tr>
 	 		#end
        
+			<tr>
+				<td width="75%">$i18n.getString( "registration_date" )<em title="$i18n.getString( 'required' )" class="required">*</em></td>
+				<td width="25%">
+					<input type="text" id="registrationDate" name="registrationDate" class="{validate:{required:true}}"/>
+					<script type="text/javascript">
+						datePickerValid( 'registrationDate', true );
+					</script>    
+				</td>			
+			</tr>			
+			
+			
+			
+			
 		<!-- EquipmentType Attributes  -->
 		<tr><td>&nbsp;</td><td>&nbsp;</td></tr>
 		<!--<tr><th colspan="2" class="heading-column">$i18n.getString( "equipmentType_attribute_details" )</th></tr>-->

=== modified file 'local/in/dhis-web-coldchain/src/main/webapp/dhis-web-coldchain/showEquipmentDetails.vm'
--- local/in/dhis-web-coldchain/src/main/webapp/dhis-web-coldchain/showEquipmentDetails.vm	2013-12-30 05:54:06 +0000
+++ local/in/dhis-web-coldchain/src/main/webapp/dhis-web-coldchain/showEquipmentDetails.vm	2014-03-14 11:22:16 +0000
@@ -11,6 +11,13 @@
         <!--<tr><td>&nbsp;</td><td>&nbsp;</td></tr>-->
         <!--<tr><th colspan="2" class="heading-column">$i18n.getString( "equipmentType_attribute_details" )</th></tr>-->
         #set( $mark = false )
+		
+		<tr #alternate($mark)>
+                <td class='text-column'><label>$i18n.getString( "registration_date" )</label></td>
+                <td class="text-column">$format.formatDate( $!equipment.getRegistrationDate() )</td>
+       </tr>
+		
+		#set( $mark = true )
         #foreach( $attribute in $equipmentTypeAttributes )
             #set( $attributeValue = "" )
             #set( $attributeValue = $!equipmentValueMap.get( $attribute.id ) )

=== modified file 'local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/action/AddBankDataAction.java'
--- local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/action/AddBankDataAction.java	2013-12-24 12:23:11 +0000
+++ local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/action/AddBankDataAction.java	2014-03-14 11:22:16 +0000
@@ -18,24 +18,25 @@
 
     private BankDetailsService bankDetailsService;
 
-    public void setBankDetailsService(BankDetailsService bankDetailsService) {
-		this.bankDetailsService = bankDetailsService;
-	}
-    
+    public void setBankDetailsService( BankDetailsService bankDetailsService )
+    {
+        this.bankDetailsService = bankDetailsService;
+    }
+
     private OrganisationUnitService organisationUnitService;
 
     public void setOrganisationUnitService( OrganisationUnitService organisationUnitService )
     {
         this.organisationUnitService = organisationUnitService;
     }
-    
+
     private DataSetService dataSetService;
-    
+
     public void setDataSetService( DataSetService dataSetService )
     {
         this.dataSetService = dataSetService;
     }
-    
+
     // -------------------------------------------------------------------------
     // Input
     // -------------------------------------------------------------------------
@@ -48,66 +49,72 @@
     }
 
     private String dataSetId;
-    
-    public void setDataSetId(String dataSetId) {
-		this.dataSetId = dataSetId;
-	}
-    
+
+    public void setDataSetId( String dataSetId )
+    {
+        this.dataSetId = dataSetId;
+
+    }
+
     private String accountNumber;
-    
-    public void setAccountNumber(String accountNumber) {
-		this.accountNumber = accountNumber;
-	}
-    
+
+    public void setAccountNumber( String accountNumber )
+    {
+        this.accountNumber = accountNumber;
+    }
+
     private String accountName;
-    
-    public void setAccountName(String accountName) {
-		this.accountName = accountName;
-	}
-    
+
+    public void setAccountName( String accountName )
+    {
+        this.accountName = accountName;
+    }
+
     private String bank;
 
-	public void setBank(String bank) {
-		this.bank = bank;
-	}
-	
-	private String branchName;
-	
-	public void setBranchName(String branchName) {
-		this.branchName = branchName;
-	}
-	
+    public void setBank( String bank )
+    {
+        this.bank = bank;
+    }
+
+    private String branchName;
+
+    public void setBranchName( String branchName )
+    {
+        this.branchName = branchName;
+    }
+
     // -------------------------------------------------------------------------
     // Action implementation
     // -------------------------------------------------------------------------
 
-	public String execute()
+    public String execute()
         throws Exception
-    {        
+    {
         OrganisationUnit organisationUnit = organisationUnitService.getOrganisationUnit( orgUnitUid );
-        
-        DataSet dataSet = dataSetService.getDataSet(Integer.parseInt(dataSetId));
-        
-        BankDetails bankDetails = bankDetailsService.getBankDetails(organisationUnit, dataSet);
-       
+
+        DataSet dataSet = dataSetService.getDataSet( Integer.parseInt( dataSetId ) );
+
+        BankDetails bankDetails = bankDetailsService.getBankDetails( organisationUnit, dataSet );
+
         if ( bankDetails == null )
         {
-        	bankDetails = new BankDetails();
-        	bankDetails.setDataSet(dataSet);
-        	bankDetails.setOrganisationUnit(organisationUnit);
-        	bankDetails.setAccountName(accountName);
-        	bankDetails.setAccountNumber(accountNumber);
-        	bankDetails.setBank(bank);
-        	bankDetails.setBranchName(branchName);
-        	bankDetailsService.addBankDetails(bankDetails);
+            bankDetails = new BankDetails();
+            bankDetails.setDataSet( dataSet );
+            bankDetails.setOrganisationUnit( organisationUnit );
+            bankDetails.setAccountName( accountName );
+            bankDetails.setAccountNumber( accountNumber );
+            bankDetails.setBank( bank );
+            bankDetails.setBranchName( branchName );
+            bankDetailsService.addBankDetails( bankDetails );
         }
         else
         {
-        	bankDetails.setAccountName(accountName);
-        	bankDetails.setAccountNumber(accountNumber);
-        	bankDetails.setBank(bank);
-        	bankDetails.setBranchName(branchName);
-            bankDetailsService.updateBankDetails(bankDetails);
+            bankDetails.setAccountName( accountName );
+            bankDetails.setAccountNumber( accountNumber );
+            bankDetails.setBank( bank );
+            bankDetails.setBranchName( branchName );
+            bankDetailsService.updateBankDetails( bankDetails );
         }
 
         return SUCCESS;

=== modified file 'local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/AddAggregationQueryAction.java'
--- local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/AddAggregationQueryAction.java	2014-02-05 10:49:02 +0000
+++ local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/AddAggregationQueryAction.java	2014-03-14 11:22:16 +0000
@@ -5,10 +5,7 @@
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementCategoryService;
 import org.hisp.dhis.dataelement.DataElementService;
-import org.hisp.dhis.dataset.DataSet;
-import org.hisp.dhis.dataset.DataSetService;
 import org.hisp.dhis.pbf.api.Lookup;
-import org.hisp.dhis.pbf.api.LookupService;
 
 import com.opensymphony.xwork2.Action;
 
@@ -32,14 +29,15 @@
     {
         this.dataElementService = dataElementService;
     }
-
+    /*
     private LookupService lookupService;
 
     public void setLookupService( LookupService lookupService )
     {
         this.lookupService = lookupService;
     }
-
+    */
+    
    /* private CCEIAggregationService cceiAggregationService;
 
     public void setCceiAggregationService( CCEIAggregationService cceiAggregationService )
@@ -53,42 +51,43 @@
     {
         this.dataElementCategoryService = dataElementCategoryService;
     }
-
+    
+    /*
     private DataSetService dataSetService;
     
     public void setDataSetService( DataSetService dataSetService )
     {
         this.dataSetService = dataSetService;
     }
+    */
     
     // -------------------------------------------------------------------------
     // Input/ Output
     // -------------------------------------------------------------------------
-
+/*
     private String name;
 
-    private String aggType;
-
-    private Integer dataElementId;
-    
-    
-    private Integer pbfDataSetId;
-
     public void setName( String name )
     {
         this.name = name;
     }
-
+*/    
+    private String aggType;
+    
     public void setAggType( String aggType )
     {
         this.aggType = aggType;
     }
 
+    private Integer dataElementId;
+    
     public void setDataElementId( Integer dataElementId )
     {
         this.dataElementId = dataElementId;
     }
-
+    
+    private Integer pbfDataSetId;
+    
     public void setPbfDataSetId( Integer pbfDataSetId )
     {
         this.pbfDataSetId = pbfDataSetId;
@@ -113,6 +112,7 @@
         /**
          * TODO support for category option combo
          */
+        
         if( aggType.equals( Lookup.PBF_AGG_TYPE_OVERALL_QUALITY_SCORE ) || aggType.equals( Lookup.PBF_AGG_TYPE_OVERALL_UNADJUSTED_PBF_AMOUNT ) )
         {
             String query = ""+pbfDataSetId;            

=== modified file 'local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/AddAggregationQueryFormAction.java'
--- local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/AddAggregationQueryFormAction.java	2014-02-05 10:49:02 +0000
+++ local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/AddAggregationQueryFormAction.java	2014-03-14 11:22:16 +0000
@@ -1,11 +1,8 @@
 package org.hisp.dhis.pbf.aggregation.action;
 
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
-import java.util.Set;
 
-import org.hisp.dhis.attribute.AttributeValue;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementService;
 import org.hisp.dhis.pbf.api.Lookup;

=== added file 'local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/GetAggregationQueryAction.java'
--- local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/GetAggregationQueryAction.java	1970-01-01 00:00:00 +0000
+++ local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/GetAggregationQueryAction.java	2014-03-14 11:22:16 +0000
@@ -0,0 +1,64 @@
+package org.hisp.dhis.pbf.aggregation.action;
+
+import org.hisp.dhis.caseaggregation.CaseAggregationCondition;
+import org.hisp.dhis.caseaggregation.CaseAggregationConditionService;
+
+import com.opensymphony.xwork2.Action;
+
+/**
+ * @author Mithilesh Kumar Thakur
+ */
+public class GetAggregationQueryAction implements Action
+{
+    // -------------------------------------------------------------------------
+    // Dependency
+    // -------------------------------------------------------------------------
+
+    private CaseAggregationConditionService aggregationConditionService;
+    
+    public void setAggregationConditionService( CaseAggregationConditionService aggregationConditionService )
+    {
+        this.aggregationConditionService = aggregationConditionService;
+    }
+
+    // -------------------------------------------------------------------------
+    // Input && Output Getters && Setters
+    // -------------------------------------------------------------------------
+
+    private Integer id;
+    
+    public void setId( Integer id )
+    {
+        this.id = id;
+    }
+
+    private CaseAggregationCondition caseAggregation;
+    
+    public String getDescription()
+    {
+        return description;
+    }
+
+    private String description;
+    
+    public CaseAggregationCondition getCaseAggregation()
+    {
+        return caseAggregation;
+    }
+
+
+    // -------------------------------------------------------------------------
+    // Action implementation
+    // -------------------------------------------------------------------------
+
+    public String execute() throws Exception
+    {
+        caseAggregation = aggregationConditionService.getCaseAggregationCondition( id );
+
+        description = aggregationConditionService.getConditionDescription( caseAggregation.getAggregationExpression() );
+        
+        return SUCCESS;
+    }
+}
+
+

=== added file 'local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/RemoveAggregationQueryAction.java'
--- local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/RemoveAggregationQueryAction.java	1970-01-01 00:00:00 +0000
+++ local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/RemoveAggregationQueryAction.java	2014-03-14 11:22:16 +0000
@@ -0,0 +1,51 @@
+package org.hisp.dhis.pbf.aggregation.action;
+
+import org.hisp.dhis.caseaggregation.CaseAggregationCondition;
+import org.hisp.dhis.caseaggregation.CaseAggregationConditionService;
+
+import com.opensymphony.xwork2.Action;
+
+/**
+ * @author Mithilesh Kumar Thakur
+ */
+public class RemoveAggregationQueryAction implements Action
+{
+    // -------------------------------------------------------------------------
+    // Dependency
+    // -------------------------------------------------------------------------
+
+    private CaseAggregationConditionService aggregationConditionService;
+    
+    public void setAggregationConditionService( CaseAggregationConditionService aggregationConditionService )
+    {
+        this.aggregationConditionService = aggregationConditionService;
+    }
+
+    // -------------------------------------------------------------------------
+    // Input
+    // -------------------------------------------------------------------------
+
+    private int id;
+
+    // -------------------------------------------------------------------------
+    // Getters && Setters
+    // -------------------------------------------------------------------------
+
+    public void setId( int id )
+    {
+        this.id = id;
+    }
+
+    // -------------------------------------------------------------------------
+    // Action implementation
+    // -------------------------------------------------------------------------
+
+    public String execute() throws Exception
+    {
+        CaseAggregationCondition condition = aggregationConditionService.getCaseAggregationCondition( id );
+
+        aggregationConditionService.deleteCaseAggregationCondition( condition );
+
+        return SUCCESS;
+    }
+}

=== modified file 'local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/RunAggregationQueryAction.java'
--- local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/RunAggregationQueryAction.java	2014-02-05 10:49:02 +0000
+++ local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/RunAggregationQueryAction.java	2014-03-14 11:22:16 +0000
@@ -18,17 +18,13 @@
 import org.hisp.dhis.dataset.DataSet;
 import org.hisp.dhis.dataset.DataSetService;
 import org.hisp.dhis.organisationunit.OrganisationUnit;
-import org.hisp.dhis.organisationunit.OrganisationUnitGroup;
-import org.hisp.dhis.organisationunit.OrganisationUnitGroupService;
 import org.hisp.dhis.organisationunit.OrganisationUnitService;
 import org.hisp.dhis.oust.manager.SelectionTreeManager;
 import org.hisp.dhis.pbf.api.Lookup;
 import org.hisp.dhis.pbf.impl.DefaultPBFAggregationService;
-import org.hisp.dhis.period.MonthlyPeriodType;
 import org.hisp.dhis.period.Period;
 import org.hisp.dhis.period.PeriodService;
 import org.hisp.dhis.period.PeriodType;
-import org.hisp.dhis.period.YearlyPeriodType;
 
 import com.opensymphony.xwork2.Action;
 
@@ -52,14 +48,14 @@
     {
         this.organisationUnitService = organisationUnitService;
     }
-
+    /*
     private OrganisationUnitGroupService organisationUnitGroupService;
 
     public void setOrganisationUnitGroupService( OrganisationUnitGroupService organisationUnitGroupService )
     {
         this.organisationUnitGroupService = organisationUnitGroupService;
     }
-
+    */
     private CaseAggregationConditionService aggregationConditionService;
 
     public void setAggregationConditionService( CaseAggregationConditionService aggregationConditionService )
@@ -118,7 +114,16 @@
     {
         return importStatus;
     }
-
+    
+    private String selectedPeriodId;
+    
+    public void setSelectedPeriodId( String selectedPeriodId )
+    {
+        this.selectedPeriodId = selectedPeriodId;
+    }
+        
+    private Date aggregationPeriod;
+    
     // -------------------------------------------------------------------------
     // Action
     // -------------------------------------------------------------------------
@@ -128,8 +133,17 @@
     {
         Map<String, Double> aggregationResultMap = new HashMap<String, Double>();
 
-        Set<OrganisationUnit> orgUnitList = new HashSet<OrganisationUnit>( selectionTreeManager.getReloadedSelectedOrganisationUnits() );
+        //Set<OrganisationUnit> orgUnitList = new HashSet<OrganisationUnit>( selectionTreeManager.getReloadedSelectedOrganisationUnits() );
 
+        Set<OrganisationUnit> tempOrgUnitList = new HashSet<OrganisationUnit>( selectionTreeManager.getReloadedSelectedOrganisationUnits() );
+        
+        Set<OrganisationUnit> orgUnitList = new HashSet<OrganisationUnit>();
+        
+        for ( OrganisationUnit org : tempOrgUnitList )
+        {
+            orgUnitList.addAll( organisationUnitService.getOrganisationUnitWithChildren( org.getId() )  ) ;
+        }
+        
         //Set<OrganisationUnitGroup> orgUnitGroups = new HashSet<OrganisationUnitGroup>( organisationUnitGroupService.getAllOrganisationUnitGroups() );
 
         /*List<OrganisationUnitGroup> ouGroups = new ArrayList<OrganisationUnitGroup>( organisationUnitGroupService.getOrganisationUnitGroupByName( EquipmentAttributeValue.HEALTHFACILITY ) );
@@ -151,6 +165,22 @@
         periods.add( period );
 */
         
+        Period period = new Period();
+        
+        period = PeriodType.getPeriodFromIsoString( selectedPeriodId );
+        
+        if( period != null )
+        {
+            aggregationPeriod = period.getStartDate();
+        }
+        
+        else
+        {
+            aggregationPeriod = new Date();
+        }
+        
+        //System.out.println( " Aggregation Period -- " + aggregationPeriod );
+        
         Constant tariff_authority = constantService.getConstantByName( "TARIFF_SETTING_AUTHORITY" );
         int tariff_setting_authority = 0;
         if ( tariff_authority == null )
@@ -179,7 +209,9 @@
                 
                 List<Period> periods = new ArrayList<Period>();
                 
-                periods.add( getCurrentPeriod( dataSet.getPeriodType(), new Date() ) );                    
+                //periods.add( getCurrentPeriod( dataSet.getPeriodType(), new Date() ) );
+                
+                periods.add( getCurrentPeriod( dataSet.getPeriodType(), aggregationPeriod ) );
 
                 aggregationResultMap.putAll( defaultPBFAggregationService.calculateOverallQualityScore( periods, dataElement, orgUnits, dataSetId, tariff_setting_authority ) );
             }
@@ -195,7 +227,9 @@
                 
                 List<Period> periods = new ArrayList<Period>();
                 
-                periods.add( getCurrentPeriod( dataSet.getPeriodType(), new Date() ) );                    
+                //periods.add( getCurrentPeriod( dataSet.getPeriodType(), new Date() ) );
+                
+                periods.add( getCurrentPeriod( dataSet.getPeriodType(), aggregationPeriod ) );
 
                 aggregationResultMap.putAll( defaultPBFAggregationService.calculateOverallUnadjustedPBFAmount( periods, dataElement, orgUnits, dataSetId ) );
             }
@@ -253,6 +287,8 @@
         }
         
         period = periodService.reloadPeriod( period );
+        
+        //System.out.println( periodType.getName() + " -- " + period.getStartDateString() );
 
         return period;
     }

=== added file 'local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/RunAggregationQueryFormAction.java'
--- local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/RunAggregationQueryFormAction.java	1970-01-01 00:00:00 +0000
+++ local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/RunAggregationQueryFormAction.java	2014-03-14 11:22:16 +0000
@@ -0,0 +1,71 @@
+package org.hisp.dhis.pbf.aggregation.action;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import org.hisp.dhis.i18n.I18nFormat;
+import org.hisp.dhis.period.CalendarPeriodType;
+import org.hisp.dhis.period.MonthlyPeriodType;
+import org.hisp.dhis.period.Period;
+import org.hisp.dhis.period.PeriodType;
+import org.hisp.dhis.system.filter.PastAndCurrentPeriodFilter;
+import org.hisp.dhis.system.util.FilterUtils;
+
+import com.opensymphony.xwork2.Action;
+
+public class RunAggregationQueryFormAction implements Action
+{
+    // -------------------------------------------------------------------------
+    // Dependencies
+    // -------------------------------------------------------------------------
+
+    // -------------------------------------------------------------------------
+    // Input & Output
+    // -------------------------------------------------------------------------
+ 
+    private List<Period> periods = new ArrayList<Period>();
+
+    public Collection<Period> getPeriods()
+    {
+        return periods;
+    }
+    
+    private I18nFormat format;
+
+    public void setFormat( I18nFormat format )
+    {
+        this.format = format;
+    }
+
+    // -------------------------------------------------------------------------
+    // Action
+    // -------------------------------------------------------------------------
+
+    public String execute() throws Exception
+    {
+        String periodTypeName = MonthlyPeriodType.NAME;
+		
+	CalendarPeriodType _periodType = (CalendarPeriodType) CalendarPeriodType.getPeriodTypeByName( periodTypeName );
+        
+        Calendar cal = PeriodType.createCalendarInstance();
+        
+        periods = _periodType.generatePeriods( cal.getTime() );
+        
+        //periods = new ArrayList<Period>( periodService.getPeriodsByPeriodType( periodType ) );
+        
+        FilterUtils.filter( periods, new PastAndCurrentPeriodFilter() );
+
+        Collections.reverse( periods );
+        //Collections.sort( periods );
+        for ( Period period : periods )
+        {
+            period.setName( format.formatPeriod( period ) );
+        }
+
+        return SUCCESS;
+    }
+
+}

=== added file 'local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/ShowUpdateAggregationQueryFormAction.java'
--- local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/ShowUpdateAggregationQueryFormAction.java	1970-01-01 00:00:00 +0000
+++ local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/ShowUpdateAggregationQueryFormAction.java	2014-03-14 11:22:16 +0000
@@ -0,0 +1,105 @@
+package org.hisp.dhis.pbf.aggregation.action;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.hisp.dhis.caseaggregation.CaseAggregationCondition;
+import org.hisp.dhis.caseaggregation.CaseAggregationConditionService;
+import org.hisp.dhis.common.comparator.IdentifiableObjectNameComparator;
+import org.hisp.dhis.dataelement.DataElement;
+import org.hisp.dhis.dataelement.DataElementService;
+import org.hisp.dhis.pbf.api.Lookup;
+import org.hisp.dhis.pbf.api.LookupService;
+
+import com.opensymphony.xwork2.Action;
+
+/**
+ * @author Mithilesh Kumar Thakur
+ */
+public class ShowUpdateAggregationQueryFormAction implements Action
+{
+    // -------------------------------------------------------------------------
+    // Dependencies
+    // -------------------------------------------------------------------------
+
+    private CaseAggregationConditionService aggregationConditionService;
+    
+    public void setAggregationConditionService( CaseAggregationConditionService aggregationConditionService )
+    {
+        this.aggregationConditionService = aggregationConditionService;
+    }
+    
+    private LookupService lookupService;
+
+    public void setLookupService(LookupService lookupService) 
+    {
+        this.lookupService = lookupService;
+    }
+        
+    private DataElementService dataElementService;
+    
+    public void setDataElementService(DataElementService dataElementService) 
+    {
+        this.dataElementService = dataElementService;
+    }
+
+    // -------------------------------------------------------------------------
+    // Input/Output Getters && Setters
+    // -------------------------------------------------------------------------
+
+    private Integer id;
+    
+    public void setId( Integer id )
+    {
+        this.id = id;
+    }
+
+    private CaseAggregationCondition aggregation;
+    
+    
+    public CaseAggregationCondition getAggregation()
+    {
+        return aggregation;
+    }
+
+    private String description;
+    
+    public String getDescription()
+    {
+        return description;
+    }
+
+    private List<Lookup> lookups;
+    
+    public List<Lookup> getLookups() 
+    {
+        return lookups;
+    }
+        
+    private List<DataElement> dataElementList;
+    
+    public List<DataElement> getDataElementList() 
+    {
+        return dataElementList;
+    }
+    
+    // -------------------------------------------------------------------------
+    // Action implementation
+    // -------------------------------------------------------------------------
+
+    public String execute() throws Exception
+    {
+        lookups = new ArrayList<Lookup>( lookupService.getAllLookupsByType( Lookup.PBF_AGG_TYPE ) );
+        Collections.sort( lookups, IdentifiableObjectNameComparator.INSTANCE );
+        
+        dataElementList = new ArrayList<DataElement>( dataElementService.getAllActiveDataElements() );
+        Collections.sort( dataElementList, IdentifiableObjectNameComparator.INSTANCE );
+        
+        aggregation = aggregationConditionService.getCaseAggregationCondition( id );
+        description = aggregationConditionService.getConditionDescription( aggregation.getAggregationExpression() );
+        
+        return SUCCESS;
+    }
+}
+

=== added file 'local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/UpdateAggregationQueryAction.java'
--- local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/UpdateAggregationQueryAction.java	1970-01-01 00:00:00 +0000
+++ local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/aggregation/action/UpdateAggregationQueryAction.java	2014-03-14 11:22:16 +0000
@@ -0,0 +1,125 @@
+package org.hisp.dhis.pbf.aggregation.action;
+
+import org.hisp.dhis.caseaggregation.CaseAggregationCondition;
+import org.hisp.dhis.caseaggregation.CaseAggregationConditionService;
+import org.hisp.dhis.dataelement.DataElement;
+import org.hisp.dhis.dataelement.DataElementCategoryService;
+import org.hisp.dhis.dataelement.DataElementService;
+import org.hisp.dhis.pbf.api.Lookup;
+
+import com.opensymphony.xwork2.Action;
+
+/**
+ * @author Mithilesh Kumar Thakur
+ */
+public class UpdateAggregationQueryAction implements Action
+{
+    // -------------------------------------------------------------------------
+    // Dependencies
+    // -------------------------------------------------------------------------
+
+    private CaseAggregationConditionService aggregationConditionService;
+
+    public void setAggregationConditionService( CaseAggregationConditionService aggregationConditionService )
+    {
+        this.aggregationConditionService = aggregationConditionService;
+    }
+
+    private DataElementService dataElementService;
+
+    public void setDataElementService( DataElementService dataElementService )
+    {
+        this.dataElementService = dataElementService;
+    }
+
+    private DataElementCategoryService dataElementCategoryService;
+
+    public void setDataElementCategoryService( DataElementCategoryService dataElementCategoryService )
+    {
+        this.dataElementCategoryService = dataElementCategoryService;
+    }
+
+    
+    // -------------------------------------------------------------------------
+    // Input/ Output
+    // -------------------------------------------------------------------------
+
+    /*
+    private String name;
+    
+    public void setName( String name )
+    {
+        this.name = name;
+    }
+    */
+    
+    private Integer id;
+    
+    public void setId( Integer id )
+    {
+        this.id = id;
+    }
+    
+    private String aggType;
+    
+    public void setAggType( String aggType )
+    {
+        this.aggType = aggType;
+    }
+
+    private Integer dataElementId;
+
+    public void setDataElementId( Integer dataElementId )
+    {
+        this.dataElementId = dataElementId;
+    }
+
+    private Integer pbfDataSetId;
+    
+    public void setPbfDataSetId( Integer pbfDataSetId )
+    {
+        this.pbfDataSetId = pbfDataSetId;
+    }
+    
+    // -------------------------------------------------------------------------
+    // Action implementation
+    // -------------------------------------------------------------------------
+    
+    public String execute() throws Exception
+    {
+        DataElement dataElement = dataElementService.getDataElement( dataElementId );
+        
+        /*
+        if( name == null &&  name.equalsIgnoreCase( "" ))
+        {
+            name = dataElement.getName();
+        }
+        
+        */
+        
+        /**
+         * TODO support for category option combo
+         */
+        
+        CaseAggregationCondition expression = aggregationConditionService.getCaseAggregationCondition( id );
+        
+        if( expression != null )
+        {
+            if( aggType.equals( Lookup.PBF_AGG_TYPE_OVERALL_QUALITY_SCORE ) || aggType.equals( Lookup.PBF_AGG_TYPE_OVERALL_UNADJUSTED_PBF_AMOUNT ) )
+            {
+                String query = ""+pbfDataSetId;            
+                
+                expression.setName( dataElement.getName() );
+                expression.setOperator( aggType );
+                expression.setAggregationExpression( query );
+                expression.setAggregationDataElement( dataElement );
+                expression.setOptionCombo( dataElementCategoryService.getDefaultDataElementCategoryOptionCombo() );
+                
+                aggregationConditionService.updateCaseAggregationCondition( expression );
+                
+            }
+        }
+ 
+        return SUCCESS;
+    }
+}

=== modified file 'local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/dataentry/LoadNextPrePeriodsAction.java'
--- local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/dataentry/LoadNextPrePeriodsAction.java	2013-12-31 07:59:05 +0000
+++ local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/dataentry/LoadNextPrePeriodsAction.java	2014-03-14 11:22:16 +0000
@@ -8,6 +8,7 @@
 import org.hisp.dhis.dataset.DataSetService;
 import org.hisp.dhis.i18n.I18nFormat;
 import org.hisp.dhis.period.CalendarPeriodType;
+import org.hisp.dhis.period.MonthlyPeriodType;
 import org.hisp.dhis.period.Period;
 import org.hisp.dhis.period.PeriodType;
 import org.hisp.dhis.system.filter.PastAndCurrentPeriodFilter;
@@ -70,6 +71,8 @@
         return periods;
     }
 
+    private String periodType;
+    
     // -------------------------------------------------------------------------
     // Action implementation
     // -------------------------------------------------------------------------
@@ -79,8 +82,15 @@
         
         DataSet dataset = dataSetService.getDataSet( dataSetId );
         
-        String periodType = dataset.getPeriodType().getName();
+        if( dataset != null )
+        {
+            periodType = dataset.getPeriodType().getName();
+        }
         
+        else
+        {
+            periodType = MonthlyPeriodType.NAME;
+        }
         
         //periodType = periodType != null && !periodType.isEmpty() ? periodType : MonthlyPeriodType.NAME;
 

=== modified file 'local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/impl/DefaultPBFAggregationService.java'
--- local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/impl/DefaultPBFAggregationService.java	2014-02-05 10:49:02 +0000
+++ local/in/dhis-web-maintenance-pbf/src/main/java/org/hisp/dhis/pbf/impl/DefaultPBFAggregationService.java	2014-03-14 11:22:16 +0000
@@ -89,7 +89,7 @@
                                         " dsm.datasetid = " + dataSetId +" " +
                                         " GROUP BY os.organisationunitid, qmv.organisationunitid, qmv.startdate, qmv.enddate";
 
-                System.out.println( query );
+                //System.out.println( query );
                 
                 SqlRowSet rs = jdbcTemplate.queryForRowSet( query );
                 while ( rs.next() )
@@ -115,7 +115,7 @@
                                     " dsm.datasetid = " + dataSetId +" " +
                                     " GROUP BY dv.sourceid, dv.periodid";
             
-            System.out.println( query );
+            //System.out.println( query );
             
             SqlRowSet rs = jdbcTemplate.queryForRowSet( query );
             while ( rs.next() )
@@ -158,18 +158,34 @@
                             " WHERE " + 
                                 " periodid IN ( "+ Lookup.PERIODID_BY_COMMA +" ) AND "+
                                 " datasetid = "+ dataSetId + " AND " +
-                                " organisationunitid IN (" + Lookup.ORGUNITID_BY_COMMA + ") " +
+                                " organisationunitid IN ( " + Lookup.ORGUNITID_BY_COMMA + " ) " +
                              " GROUP BY organisationunitid, periodid ";        
-
-            Collection<Integer> orgUnitIds = new ArrayList<Integer>( getIdentifiers( OrganisationUnit.class, orgUnits ) );
-            String orgUnitIdsByComma = getCommaDelimitedString( orgUnitIds );
-            query = query.replace( Lookup.ORGUNITID_BY_COMMA, orgUnitIdsByComma );
-
-            Collection<Integer> periodIds = new ArrayList<Integer>( getIdentifiers( Period.class, periods ) );
-            String periodsByComma = getCommaDelimitedString( periodIds );
-            query = query.replace( Lookup.PERIODID_BY_COMMA, periodsByComma );
-            
-            //System.out.println( query );
+            
+            //System.out.println( "Query Before Replace : --" +  orgUnits.size() + " -- "+  query  );
+            
+            if( periods != null && periods.size() > 0 )
+            {
+                Collection<Integer> periodIds = new ArrayList<Integer>( getIdentifiers( Period.class, periods ) );
+                String periodsByComma = getCommaDelimitedString( periodIds );
+                query = query.replace( Lookup.PERIODID_BY_COMMA, periodsByComma );
+            }
+            else
+            {
+                query = query.replace( Lookup.PERIODID_BY_COMMA, "-1" );
+            }
+            
+            if( orgUnits != null && orgUnits.size() > 0 )
+            {
+                Collection<Integer> orgUnitIds = new ArrayList<Integer>( getIdentifiers( OrganisationUnit.class, orgUnits ) );
+                String orgUnitIdsByComma = getCommaDelimitedString( orgUnitIds );
+                query = query.replace( Lookup.ORGUNITID_BY_COMMA, orgUnitIdsByComma );
+            }
+            else
+            {
+                query = query.replace( Lookup.ORGUNITID_BY_COMMA, "-1" );
+            }
+            
+            //System.out.println( "Query After Replace : --" +  query );
             
             SqlRowSet rs = jdbcTemplate.queryForRowSet( query );
             while ( rs.next() )

=== modified file 'local/in/dhis-web-maintenance-pbf/src/main/resources/META-INF/dhis/beans.xml'
--- local/in/dhis-web-maintenance-pbf/src/main/resources/META-INF/dhis/beans.xml	2014-03-03 06:33:06 +0000
+++ local/in/dhis-web-maintenance-pbf/src/main/resources/META-INF/dhis/beans.xml	2014-03-14 11:22:16 +0000
@@ -265,7 +265,7 @@
     <bean id="org.hisp.dhis.pbf.aggregation.action.AddAggregationQueryAction"
         class="org.hisp.dhis.pbf.aggregation.action.AddAggregationQueryAction"
         scope="prototype">
-        <property name="lookupService" ref="org.hisp.dhis.pbf.api.LookupService" />
+        <!--<property name="lookupService" ref="org.hisp.dhis.pbf.api.LookupService" />-->
         <property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
         <property name="aggregationConditionService" ref="org.hisp.dhis.caseaggregation.CaseAggregationConditionService" />
         <property name="dataElementCategoryService" ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
@@ -278,12 +278,18 @@
         <property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
     </bean>
 
+	<bean id="org.hisp.dhis.pbf.aggregation.action.RunAggregationQueryFormAction"
+        class="org.hisp.dhis.pbf.aggregation.action.RunAggregationQueryFormAction"
+        scope="prototype">
+    </bean>
+
+
     <bean id="org.hisp.dhis.pbf.aggregation.action.RunAggregationQueryAction"
         class="org.hisp.dhis.pbf.aggregation.action.RunAggregationQueryAction"
         scope="prototype">
         <property name="aggregationConditionService" ref="org.hisp.dhis.caseaggregation.CaseAggregationConditionService" />
         <property name="organisationUnitService" ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
-        <property name="organisationUnitGroupService" ref="org.hisp.dhis.organisationunit.OrganisationUnitGroupService" />
+        <!--<property name="organisationUnitGroupService" ref="org.hisp.dhis.organisationunit.OrganisationUnitGroupService" />-->
         <property name="selectionTreeManager" ref="org.hisp.dhis.oust.manager.SelectionTreeManager" />
         <property name="periodService" ref="org.hisp.dhis.period.PeriodService" />
         <property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
@@ -301,6 +307,47 @@
         <property name="jdbcTemplate" ref="jdbcTemplate" />
     </bean>
 	
+    <!-- Show Update  Aggregation Query Form -->
+    <bean id="org.hisp.dhis.pbf.aggregation.action.ShowUpdateAggregationQueryFormAction"
+        class="org.hisp.dhis.pbf.aggregation.action.ShowUpdateAggregationQueryFormAction"
+        scope="prototype">
+        <property name="aggregationConditionService" ref="org.hisp.dhis.caseaggregation.CaseAggregationConditionService" />
+        <property name="lookupService" ref="org.hisp.dhis.pbf.api.LookupService" />
+        <property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
+    </bean>
+    
+    <!--  Update  Aggregation Query -->
+    <bean id="org.hisp.dhis.pbf.aggregation.action.UpdateAggregationQueryAction"
+        class="org.hisp.dhis.pbf.aggregation.action.UpdateAggregationQueryAction"
+        scope="prototype">
+        <property name="aggregationConditionService" ref="org.hisp.dhis.caseaggregation.CaseAggregationConditionService" />
+        <property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
+        <property name="dataElementCategoryService" ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
+    </bean> 	
+	
+    <!--  Remove/Delete Aggregation -->
+	<bean id="org.hisp.dhis.pbf.aggregation.action.RemoveAggregationQueryAction"
+        class="org.hisp.dhis.pbf.aggregation.action.RemoveAggregationQueryAction"
+        scope="prototype">
+        <property name="aggregationConditionService" ref="org.hisp.dhis.caseaggregation.CaseAggregationConditionService" />
+    </bean> 	
+	
+    <!--  Show/Get Aggregation Details -->
+	<bean id="org.hisp.dhis.pbf.aggregation.action.GetAggregationQueryAction"
+        class="org.hisp.dhis.pbf.aggregation.action.GetAggregationQueryAction"
+        scope="prototype">
+        <property name="aggregationConditionService" ref="org.hisp.dhis.caseaggregation.CaseAggregationConditionService" />
+    </bean>	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
 	 <!-- Get All Lookups -->
     
 	<bean id="org.hisp.dhis.pbf.lookup.action.GetAllLookupsAction"

=== modified file 'local/in/dhis-web-maintenance-pbf/src/main/resources/org/hisp/dhis/pbf/i18n_module.properties'
--- local/in/dhis-web-maintenance-pbf/src/main/resources/org/hisp/dhis/pbf/i18n_module.properties	2014-01-22 11:29:04 +0000
+++ local/in/dhis-web-maintenance-pbf/src/main/resources/org/hisp/dhis/pbf/i18n_module.properties	2014-03-14 11:22:16 +0000
@@ -25,4 +25,22 @@
 quality_score_entry = Quality Score Entry
 quality_score = Score
 quality_max = Max
-quality_percentage = Percentage
\ No newline at end of file
+quality_percentage = Percentage
+
+
+
+aggregation_builder = Aggregation Builder
+aggregation_query_list = Aggregation Query List
+manual_aggregation = Manual Aggregation
+aggregation_query_builder_detail = Aggregation Query Builder Detail
+pbf_aggregation_query_builder_management = PBF Aggregation Query Builder Management
+manual_aggregation = Manual Aggregation
+aggregate_values = Aggregate Values
+
+confirm_delete_aggregation_query = Are you sure you want to delete this Aggregation Query?
+name = Name
+aggregation_data_element=Aggregation data element
+aggregation_expression=Aggregation expression
+operator=Operator
+
+update_aggregation_query_builder_detail = Update Aggregation Query Builder Detail
\ No newline at end of file

=== modified file 'local/in/dhis-web-maintenance-pbf/src/main/resources/struts.xml'
--- local/in/dhis-web-maintenance-pbf/src/main/resources/struts.xml	2014-03-03 06:33:06 +0000
+++ local/in/dhis-web-maintenance-pbf/src/main/resources/struts.xml	2014-03-14 11:22:16 +0000
@@ -196,10 +196,11 @@
         <result name="success" type="redirect">aggregationQueryList.action</result>
     </action>
 
-    <action name="runAggregationQueryForm" class="org.hisp.dhis.pbf.action.NoAction">
+    <action name="runAggregationQueryForm" class="org.hisp.dhis.pbf.aggregation.action.RunAggregationQueryFormAction">
         <result name="success" type="velocity">/main.vm</result>
         <param name="page">/dhis-web-maintenance-pbf/runAggregationQueryForm.vm</param>
         <param name="menu">/dhis-web-maintenance-pbf/menu.vm</param>
+        <param name="javascripts">javascript/prevNextPeriods.js</param>
     </action>
 
     <action name="runAggregationQuery" class="org.hisp.dhis.pbf.aggregation.action.RunAggregationQueryAction">
@@ -208,6 +209,32 @@
         <param name="menu">/dhis-web-maintenance-pbf/menu.vm</param>
     </action>
 
+
+ 	<!-- Show Update  Aggregation Query Form -->
+    <action name="showUpdateAggregationForm" class="org.hisp.dhis.pbf.aggregation.action.ShowUpdateAggregationQueryFormAction">
+        <result name="success" type="velocity">/main.vm</result>
+        <param name="page">/dhis-web-maintenance-pbf/updateAggregationQueryForm.vm</param>
+        <param name="menu">/dhis-web-maintenance-pbf/menu.vm</param>
+        <param name="javascripts">javascript/aggregationEngine.js</param>
+    </action>
+ 
+ 
+ 	<!--  Update  Aggregation Query -->
+    <action name="updateAggregationQuery" class="org.hisp.dhis.pbf.aggregation.action.UpdateAggregationQueryAction">
+        <result name="success" type="redirect">aggregationQueryList.action</result>
+    </action>
+
+ 	<!--  Remove/Delete Aggregation -->
+	<action name="removeAggregation" class="org.hisp.dhis.pbf.aggregation.action.RemoveAggregationQueryAction">
+		<result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm</result>
+	</action>
+	
+    <!--  Get Details Aggregation -->
+	<action name="getAggregation" class="org.hisp.dhis.pbf.aggregation.action.GetAggregationQueryAction">
+		<result name="success" type="velocity-json">/dhis-web-maintenance-pbf/jsonAggregationQuery.vm</result>
+		<param name="onExceptionReturn">plainTextError</param>
+	</action>
+
 	<!-- Lookup -->
     
     <!-- Get All Lookups -->

=== modified file 'local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/addAggregationQuery.vm'
--- local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/addAggregationQuery.vm	2014-02-05 10:49:02 +0000
+++ local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/addAggregationQuery.vm	2014-03-14 11:22:16 +0000
@@ -11,25 +11,60 @@
 	});
 	}
 }
-</script>
-<form id="addAggregationForm" action="addAggregationQuery.action" method="post" >
-
-<table style="width:50%" cellpadding="5" cellspacing="5"> 
+
+
+function formValidations()
+{
+   	//alert("validation");
+	
+    var aggTypeList = document.getElementById("aggType");
+    var aggTypeIndex = aggTypeList.selectedIndex;
+	
+	var dataElementList = document.getElementById("dataElementId");
+    var dataElementIndex = dataElementList.selectedIndex;
+	
+    if( dataElementList.options[dataElementIndex].value == null || dataElementList.options[dataElementIndex].value== "-1" ) 
+	{ 
+		showWarningMessage( "Please Select Data Element" );
+		
+		return false; 
+	}
+	
+    else if( aggTypeList.options[aggTypeIndex].value == null || aggTypeList.options[aggTypeIndex].value== "-1" ) 
+	{ 
+		showWarningMessage( "Please Select Aggregation Type" );
+		
+		return false; 
+	}
+	
+    return true;
+}
+
+</script>
+
+<h3>$i18n.getString( 'aggregation_query_builder_detail' )</h3>
+
+<form id="addAggregationForm" action="addAggregationQuery.action" method="post" onsubmit="return formValidations()">
+
+<table style="width:70%" cellpadding="5" cellspacing="5"> 
+	
+	<!--
 	<thead>
       <tr>
         <th colspan="2">$i18n.getString( "aggregation_query_builder_detail" )</th>
       </tr>
     </thead>
-	
+	-->
     <tbody>
     	<tr style="display:none">
         	<td style="width:40%"><label>$i18n.getString( "name" ) <em title="$i18n.getString( 'required' )" class="required">*</em></label></td>
         	<td style="width:60%"><input type="text" id="name" name="name" class="{validate:{required:true,minlength:2}}" style='width:100%; margin-bottom:-5px;'></td>
     	</tr>    
     	<tr>
-			<td style="width:40%"><label for="dataElement">$i18n.getString( "dataelement" )<em title="$i18n.getString( 'required' )" class="required">*</em></label></td>
+			<td style="width:40%"><label for="dataElement">&nbsp;&nbsp;&nbsp;$i18n.getString( "dataelement" )<em title="$i18n.getString( 'required' )" class="required">*</em></label></td>
 			<td style="width:60%">			
-				<select style='width:130%; margin-bottom:-5px;' id="dataElementId" name="dataElementId" >
+				<select style='width:97%; margin-bottom:-5px;' id="dataElementId" name="dataElementId" >
+					<option value="-1" >Please Select</option>
 					#foreach( $dataElement in $dataElementList )
 						<option value="$dataElement.id">$dataElement.name</option>
 					#end
@@ -37,9 +72,9 @@
 			</td>
 		</tr>
 		<tr>
-			<td style="width:40%"><label for="operator">$i18n.getString( "type" )</label></td>
+			<td style="width:40%"><label for="operator">&nbsp;&nbsp;&nbsp;$i18n.getString( "type" )</label></td>
 			<td style="width:60%">			
-				<select style='width:130%; margin-bottom:-5px;' id="aggType" name="aggType" onchange="getParameters()">
+				<select style='width:97%; margin-bottom:-5px;' id="aggType" name="aggType" onchange="getParameters()">
                     <option value="-1" >Please Select</option>
 					#foreach( $lookup in $lookups )
 						<option value="$lookup.name">$lookup.value</option>

=== modified file 'local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/aggregationQueryList.vm'
--- local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/aggregationQueryList.vm	2014-02-05 10:49:02 +0000
+++ local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/aggregationQueryList.vm	2014-03-14 11:22:16 +0000
@@ -8,26 +8,31 @@
 });
 </script>
 
-<h3>$i18n.getString( 'ccei_aggregation_query_builder_management' ) #openHelp( "patient_aggregation_query_builder" )</h3>
+<h3>$i18n.getString( 'pbf_aggregation_query_builder_management' ) #openHelp( "patient_aggregation_query_builder" )</h3>
 
 <div id="contextMenu" class="contextMenu">
   <ul id="contextMenuItems" class="contextMenuItems">
-    <li><a data-target-fn="showUpdateCaseAggregationForm"><i class="fa fa-edit"></i>&nbsp;&nbsp;$i18n.getString( "edit" )</a></li>
+    <li><a data-target-fn="showUpdateAggregationForm"><i class="fa fa-edit"></i>&nbsp;&nbsp;$i18n.getString( "edit" )</a></li>
     <li><a data-target-fn="translateWithContext"><i class="fa fa-globe"></i>&nbsp;&nbsp;$i18n.getString( "translation_translate" )</a></li>
-    <li><a data-target-fn="removeCaseAggregation"><i class="fa fa-trash-o"></i>&nbsp;&nbsp;$i18n.getString( "remove" )</a></li>
-    <li><a data-target-fn="showCaseAggregationDetails"><i class="fa fa-info-circle"></i>&nbsp;&nbsp;$i18n.getString( "show_details" )</a></li>
+    <li><a data-target-fn="removeAggregation"><i class="fa fa-trash-o"></i>&nbsp;&nbsp;$i18n.getString( "remove" )</a></li>
+    <li><a data-target-fn="showAggregationDetails"><i class="fa fa-info-circle"></i>&nbsp;&nbsp;$i18n.getString( "show_details" )</a></li>
   </ul>
 </div>
 
+
 <table class="mainPageTable">
   <tr>
     <td style="vertical-align:top">    	
         <table width="100%">         
             <tr>
-                <td style="text-align:right">
+				<td>$i18n.getString( "filter_by_name" )&nbsp;&nbsp;<input type="text" onkeyup="filterValues( this.value , 1)" /></td>
+				
+				<td style="text-align:right">
                     <input type="button" value="$i18n.getString( 'add_new' )" onclick="showAddAggregationForm();" >
                 </td>
             </tr>
+			
+			
         </table>
         <table class="listTable">
             <col>
@@ -56,12 +61,19 @@
                 <a href="javascript:hideDetails()" title="$i18n.getString( "hide_details" )"><img src="../images/close.png" alt="$i18n.getString( 'hide_details' )"></a>
             </div>              
             <p><label class="bold">$i18n.getString( "name" ):</label><br><span id="nameField"></span></p>
+			<p><label class="bold">$i18n.getString( "aggregation_data_element" ):</label><br><span id="aggregationDataElementField"></span></p>
             <p><label class="bold">$i18n.getString( "operator" ):</label><br><span id="operatorField"></span></p>
-            <p><label class="bold">$i18n.getString( "aggregation_data_element" ):</label><br><span id="aggregationDataElementField"></span></p>
-            <p><label class="bold">$i18n.getString( "option_combo" ):</label><br><span id="optionComboField"></span></p>
+            
+			<!--
+			<p><label class="bold">$i18n.getString( "option_combo" ):</label><br><span id="optionComboField"></span></p>
             <p><label class="bold">$i18n.getString( "data_element_for_sum_avg_min_max" ):</label><br><span id="deSumField"></span></p>
             <p><label class="bold">$i18n.getString( "aggregation_expression" ):</label><br><span id="aggregationExpressionField"></span></p>
+			-->
         </div>
     </td>
   </tr>
 </table>
+
+<script type="text/javascript">
+	var i18n_confirm_delete_aggregation_query = '$encoder.jsEscape( $i18n.getString( "confirm_delete_aggregation_query" ) , "'" )';
+</script>
\ No newline at end of file

=== modified file 'local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/javascript/aggregationEngine.js'
--- local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/javascript/aggregationEngine.js	2014-02-05 10:49:02 +0000
+++ local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/javascript/aggregationEngine.js	2014-03-14 11:22:16 +0000
@@ -1,7 +1,46 @@
 
-
+//-----------------------------------------------------------------------------
+//Add Aggregation Query Form
+//----------------------------------------------------------------------------- 
 function showAddAggregationForm() 
 {
 	window.location.href = 'addAggregationQueryForm.action';
 }
 
+
+//-----------------------------------------------------------------------------
+//Update Aggregation Query Form
+//-----------------------------------------------------------------------------
+
+function showUpdateAggregationForm( context ) 
+{
+	location.href = 'showUpdateAggregationForm.action?id=' + context.id;
+}
+
+//-----------------------------------------------------------------------------
+//Remove Aggregation
+//-----------------------------------------------------------------------------
+
+function removeAggregation( context ) 
+{
+	removeItem( context.id, context.name, i18n_confirm_delete_aggregation_query, 'removeAggregation.action');
+}
+
+
+//-----------------------------------------------------------------------------
+//View Aggregation Query details
+//-----------------------------------------------------------------------------
+
+function showAggregationDetails( context ) 
+{
+	jQuery.getJSON('getAggregation.action', { id: context.id }, function( json ) 
+	{
+		setInnerHTML('nameField', json.caseAggregation.name);
+		setInnerHTML('aggregationDataElementField', json.caseAggregation.aggregationDataElement);
+		setInnerHTML('operatorField', json.caseAggregation.operator);
+		//setInnerHTML('optionComboField', json.caseAggregation.optionCombo);
+		//setInnerHTML('aggregationExpressionField', json.caseAggregation.aggregationExpression);
+		//setInnerHTML('deSumField', json.caseAggregation.deSum);
+		showDetails();
+	});
+}
\ No newline at end of file

=== added file 'local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/javascript/prevNextPeriods.js'
--- local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/javascript/prevNextPeriods.js	1970-01-01 00:00:00 +0000
+++ local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/javascript/prevNextPeriods.js	2014-03-14 11:22:16 +0000
@@ -0,0 +1,22 @@
+
+
+//next and pre periods
+function getAvailablePeriodsTemp( availablePeriodsId, selectedPeriodsId, year )
+{	
+	var availableList = document.getElementById( availablePeriodsId );
+	var selectedList = document.getElementById( selectedPeriodsId );
+	
+	clearList( selectedList );
+	
+	addOptionToList( selectedList, '-1', '[ Select ]' );
+	
+	$.getJSON( "getAvailableNextPrePeriods.action", {
+		"year": year },
+		function( json ) {
+			
+			for ( i in json.periods ) {
+	    		addOptionToList( selectedList, json.periods[i].isoDate, json.periods[i].name );
+	    	}
+			
+		} );
+}
\ No newline at end of file

=== added file 'local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/jsonAggregationQuery.vm'
--- local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/jsonAggregationQuery.vm	1970-01-01 00:00:00 +0000
+++ local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/jsonAggregationQuery.vm	2014-03-14 11:22:16 +0000
@@ -0,0 +1,8 @@
+{ "caseAggregation":
+  {
+    "id": "${caseAggregation.id}",
+	"name": "$!encoder.jsonEncode( ${caseAggregation.name} )",
+	"aggregationDataElement": "$!encoder.jsonEncode( ${caseAggregation.aggregationDataElement.name} )",
+	"operator": "${caseAggregation.operator}"
+  }
+}
\ No newline at end of file

=== modified file 'local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/runAggregationQueryForm.vm'
--- local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/runAggregationQueryForm.vm	2014-02-05 10:49:02 +0000
+++ local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/runAggregationQueryForm.vm	2014-03-14 11:22:16 +0000
@@ -1,7 +1,54 @@
+
+<script type="text/javascript">
+
+function formValidations()
+{
+   	//alert("validation");
+	
+    var startPeriodList = document.getElementById("selectedPeriodId");
+    var startPeriodIndex = startPeriodList.selectedIndex;
+    
+    if( startPeriodList.options[startPeriodIndex].value == null || startPeriodList.options[startPeriodIndex].value== "-1" ) 
+	{ 
+		showWarningMessage( "Please Select Period" );
+		//alert("Please Select Period"); 
+		return false; 
+	}
+	
+    return true;
+}
+
+</script>
+
+
 <h3>$i18n.getString( "manual_aggregation" )</h3>
 
-<form id="runAggregationQueryForm" action="runAggregationQuery.action" method="post">
+<form id="runAggregationQueryForm" action="runAggregationQuery.action" method="post" onsubmit="return formValidations()" >
   
+<table>
+	<tr>
+		<td><label for="selectedPeriodId">$i18n.getString( "period" )</label></td>
+		<td><select id="selectedPeriodId" name="selectedPeriodId" style="width:220px" >
+				<option value="-1">[$i18n.getString( "select" )]</option>
+					#foreach( $period in $periods )
+						<option value="$period.isoDate">$encoder.htmlEncode( $period.name )</option>
+					#end
+			</select>
+			<input type="button" id="prevButton"  style="width:75px" value="$i18n.getString( 'prev_year' )" title="$i18n.getString('earlier_periods')" onclick="getAvailablePeriodsTemp( 'selectedPeriodId', 'selectedPeriodId', '-1' )" >
+			<input type="button" id="nextButton"  style="width:75px" value="$i18n.getString( 'next_year' )" title="$i18n.getString('later_periods')" onclick="getAvailablePeriodsTemp( 'selectedPeriodId', 'selectedPeriodId', '1' )" >
+		</td>
+	</tr>	
+</table>
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
   <table id="selectionTable">
 	<tr>
 	  <td>

=== added file 'local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/updateAggregationQueryForm.vm'
--- local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/updateAggregationQueryForm.vm	1970-01-01 00:00:00 +0000
+++ local/in/dhis-web-maintenance-pbf/src/main/webapp/dhis-web-maintenance-pbf/updateAggregationQueryForm.vm	2014-03-14 11:22:16 +0000
@@ -0,0 +1,123 @@
+
+<script type="text/javascript">
+
+jQuery(window).load(function() 
+{
+	getParameters();
+});
+
+
+function getParameters()
+{
+	if($("#aggType").val() != '-1')
+	{
+		$("#loadParameters").load("loadAggregationParam.action", 
+		{
+			aggTypeId : $('#aggType').val()
+		}
+		, function( ){            										
+	});
+	}
+}
+
+function formValidations()
+{
+   	//alert("validation");
+	
+    var aggTypeList = document.getElementById("aggType");
+    var aggTypeIndex = aggTypeList.selectedIndex;
+    
+	var dataElementList = document.getElementById("dataElementId");
+    var dataElementIndex = dataElementList.selectedIndex;
+	
+    if( dataElementList.options[dataElementIndex].value == null || dataElementList.options[dataElementIndex].value== "-1" ) 
+	{ 
+		showWarningMessage( "Please Select Data Element" );
+		
+		return false; 
+	}
+	
+    else if( aggTypeList.options[aggTypeIndex].value == null || aggTypeList.options[aggTypeIndex].value== "-1" ) 
+	{ 
+		showWarningMessage( "Please Select Aggregation Type" );
+		
+		return false; 
+	}
+	
+	/*
+	if( bValue == false )
+	{
+		showWarningMessage( "Please Select Parameter" );
+		
+		return false;
+	}
+	*/
+	
+	/*
+	var select = $("select").val();
+	alert(select);
+	*/
+	
+    return true;
+}
+
+</script>
+
+<h3>$i18n.getString( 'update_aggregation_query_builder_detail' )</h3>
+
+<form id="updateAggregationQueryForm" name="updateAggregationQueryForm" action="updateAggregationQuery.action" method="post" onsubmit="return formValidations()">
+
+<table style="width:70%" cellpadding="5" cellspacing="5"> 
+	
+	<!--
+	<thead>
+      <tr>
+        <th colspan="2">$i18n.getString( "update_aggregation_query_builder_detail" )</th>
+      </tr>
+    </thead>
+	-->
+    <tbody>
+    	<tr style="display:none">
+			<input type='hidden' id='id' name='id' value='$aggregation.id'>
+        	<td style="width:40%"><label>$i18n.getString( "name" ) <em title="$i18n.getString( 'required' )" class="required">*</em></label></td>
+        	<td style="width:60%"><input type="text" id="name" name="name" value="$aggregation.name" class="{validate:{required:true,minlength:2}}" style='width:130%; margin-bottom:-5px;' readonly="readonly"></td>
+    	</tr>    
+    	<tr>
+			<td style="width:40%"><label for="dataElement">&nbsp;&nbsp;&nbsp;$i18n.getString( "dataelement" )<em title="$i18n.getString( 'required' )" class="required">*</em></label></td>
+			<td style="width:60%">			
+				<select style='width:97%; margin-bottom:-5px;' id="dataElementId" name="dataElementId" >
+					<option value="-1" >Please Select</option>
+					#foreach( $dataElement in $dataElementList )
+						<option value="$dataElement.id" #if( $aggregation.getAggregationDataElement().getId() == "$dataElement.id") selected #end >$dataElement.name</option>
+					#end
+				</select>
+			</td>
+		</tr>
+		
+		<tr>
+			<td style="width:40%"><label for="operator">&nbsp;&nbsp;&nbsp;$i18n.getString( "type" )</label></td>
+			<td style="width:60%">			
+				<select style='width:97%; margin-bottom:-5px;' id="aggType" name="aggType" onchange="getParameters()">
+                    <option value="-1" >Please Select</option>
+					#foreach( $lookup in $lookups )
+						<option value="$lookup.name" #if( $aggregation.getOperator() == "$lookup.name") selected #end >$lookup.value</option>
+					#end
+				</select>
+			</td>
+		</tr>
+		
+		<tr>
+			<td colspan="2">
+				<div id="loadParameters" style="width:100%"></div>
+            </td>
+		</tr>
+		
+    </tbody>
+</table>
+
+<p>	
+	<input type="submit" value="$i18n.getString( 'update' )" />	
+	<input type="button" value="$i18n.getString( 'cancel' )" onclick="window.location.href='aggregationQueryList.action'" />
+</p>
+
+</form>