=== added directory 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/organisationunitgrouplisting'
=== added directory 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/organisationunitgrouplisting/action'
=== added file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/organisationunitgrouplisting/action/OpenUpdateOrganisationUnitGroupAction.java'
--- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/organisationunitgrouplisting/action/OpenUpdateOrganisationUnitGroupAction.java	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/organisationunitgrouplisting/action/OpenUpdateOrganisationUnitGroupAction.java	2009-09-15 06:38:27 +0000
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2004-2007, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright notice, this
+ *   list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ *   this list of conditions and the following disclaimer in the documentation
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the HISP project nor the names of its contributors may
+ *   be used to endorse or promote products derived from this software without
+ *   specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package org.hisp.dhis.reportexcel.organisationunitgrouplisting.action;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.hisp.dhis.organisationunit.OrganisationUnitGroup;
+import org.hisp.dhis.organisationunit.OrganisationUnitGroupService;
+import org.hisp.dhis.organisationunit.comparator.OrganisationUnitGroupNameComparator;
+import org.hisp.dhis.reportexcel.ReportExcelOganiztionGroupListing;
+import org.hisp.dhis.reportexcel.ReportExcelService;
+
+import com.opensymphony.xwork2.Action;
+
+/**
+ * @author Tran Thanh Tri
+ * @version $Id$
+ */
+public class OpenUpdateOrganisationUnitGroupAction
+    implements Action
+{
+    // -------------------------------------------
+    // Dependency
+    // -------------------------------------------
+
+    private ReportExcelService reportService;
+
+    private OrganisationUnitGroupService organisationUnitGroupService;
+
+    // -------------------------------------------
+    // Input & Output
+    // -------------------------------------------
+
+    private Integer id;
+
+    private List<OrganisationUnitGroup> availableOrganisationUnitGroups;
+
+    private List<OrganisationUnitGroup> selectedOrganisationUnitGroups;
+
+    private ReportExcelOganiztionGroupListing reportExcelOganiztionGroupListing;
+
+    // -------------------------------------------
+    // Getter & Setter
+    // -------------------------------------------
+
+    public ReportExcelOganiztionGroupListing getReportExcelOganiztionGroupListing()
+    {
+        return reportExcelOganiztionGroupListing;
+    }
+
+    public List<OrganisationUnitGroup> getSelectedOrganisationUnitGroups()
+    {
+        return selectedOrganisationUnitGroups;
+    }
+
+    public List<OrganisationUnitGroup> getAvailableOrganisationUnitGroups()
+    {
+        return availableOrganisationUnitGroups;
+    }
+
+    public void setOrganisationUnitGroupService( OrganisationUnitGroupService organisationUnitGroupService )
+    {
+        this.organisationUnitGroupService = organisationUnitGroupService;
+    }
+
+    public void setReportService( ReportExcelService reportService )
+    {
+        this.reportService = reportService;
+    }
+
+    public void setId( Integer id )
+    {
+        this.id = id;
+    }
+
+    public String execute()
+        throws Exception
+    {
+        this.reportExcelOganiztionGroupListing = (ReportExcelOganiztionGroupListing) reportService.getReportExcel( id );
+
+        this.availableOrganisationUnitGroups = new ArrayList<OrganisationUnitGroup>( this.organisationUnitGroupService
+            .getAllOrganisationUnitGroups() );
+
+        this.selectedOrganisationUnitGroups = reportExcelOganiztionGroupListing.getOrganisationUnitGroups();
+
+        availableOrganisationUnitGroups.removeAll( selectedOrganisationUnitGroups );
+
+        Collections.sort( this.availableOrganisationUnitGroups, new OrganisationUnitGroupNameComparator() );
+
+        return SUCCESS;
+    }
+
+}

=== added file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/organisationunitgrouplisting/action/UpdateOrganisationUnitGroupAction.java'
--- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/organisationunitgrouplisting/action/UpdateOrganisationUnitGroupAction.java	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/organisationunitgrouplisting/action/UpdateOrganisationUnitGroupAction.java	2009-09-15 06:38:27 +0000
@@ -0,0 +1,109 @@
+/*
+ * Copyright (c) 2004-2007, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright notice, this
+ *   list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ *   this list of conditions and the following disclaimer in the documentation
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the HISP project nor the names of its contributors may
+ *   be used to endorse or promote products derived from this software without
+ *   specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package org.hisp.dhis.reportexcel.organisationunitgrouplisting.action;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.hisp.dhis.organisationunit.OrganisationUnitGroup;
+import org.hisp.dhis.organisationunit.OrganisationUnitGroupService;
+import org.hisp.dhis.reportexcel.ReportExcelOganiztionGroupListing;
+import org.hisp.dhis.reportexcel.ReportExcelService;
+
+import com.opensymphony.xwork2.Action;
+
+/**
+ * @author Tran Thanh Tri
+ * @version $Id$
+ */
+public class UpdateOrganisationUnitGroupAction
+    implements Action
+{
+    // -------------------------------------------
+    // Dependency
+    // -------------------------------------------
+
+    private ReportExcelService reportService;
+
+    private OrganisationUnitGroupService organisationUnitGroupService;
+
+    // -------------------------------------------
+    // Input & Output
+    // -------------------------------------------
+
+    private Integer id;
+
+    private List<String> selectedOrganisationUnitGroups = new ArrayList<String>();
+
+    // -------------------------------------------
+    // Getter & Setter
+    // -------------------------------------------
+
+    public void setReportService( ReportExcelService reportService )
+    {
+        this.reportService = reportService;
+    }
+
+    public void setOrganisationUnitGroupService( OrganisationUnitGroupService organisationUnitGroupService )
+    {
+        this.organisationUnitGroupService = organisationUnitGroupService;
+    }
+
+    public void setId( Integer id )
+    {
+        this.id = id;
+    }
+
+    public void setSelectedOrganisationUnitGroups( List<String> selectedOrganisationUnitGroups )
+    {
+        this.selectedOrganisationUnitGroups = selectedOrganisationUnitGroups;
+    }
+
+    public String execute()
+        throws Exception
+    {
+        ReportExcelOganiztionGroupListing reportExcelOganiztionGroupListing = (ReportExcelOganiztionGroupListing) reportService
+            .getReportExcel( id );
+
+        List<OrganisationUnitGroup> organisationUnitGroups = new ArrayList<OrganisationUnitGroup>();
+
+        for ( String oid : this.selectedOrganisationUnitGroups )
+        {
+            OrganisationUnitGroup organisationUnitGroup = organisationUnitGroupService
+                .getOrganisationUnitGroup( Integer.parseInt( oid ) );
+
+            organisationUnitGroups.add( organisationUnitGroup );
+        }
+
+        reportExcelOganiztionGroupListing.setOrganisationUnitGroups( organisationUnitGroups );
+
+        reportService.updateReportExcel( reportExcelOganiztionGroupListing );
+
+        return SUCCESS;
+    }
+
+}

=== modified file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/META-INF/dhis/beans.xml	2009-09-15 04:00:03 +0000
+++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/META-INF/dhis/beans.xml	2009-09-15 06:38:27 +0000
@@ -114,6 +114,24 @@
 		<property name="reportService" ref="org.hisp.dhis.reportexcel.ReportExcelService" />
 		<property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
 	</bean>
+	
+	<!-- REPORT ORGANISATION UNIT GROUP LISTING BEAN -->
+	
+	<bean
+		id="org.hisp.dhis.reportexcel.organisationunitgrouplisting.action.OpenUpdateOrganisationUnitGroupAction"
+		class="org.hisp.dhis.reportexcel.organisationunitgrouplisting.action.OpenUpdateOrganisationUnitGroupAction"
+		scope="prototype">
+		<property name="reportService" ref="org.hisp.dhis.reportexcel.ReportExcelService" />
+		<property name="organisationUnitGroupService" ref="org.hisp.dhis.organisationunit.OrganisationUnitGroupService" />
+	</bean>
+	
+	<bean
+		id="org.hisp.dhis.reportexcel.organisationunitgrouplisting.action.UpdateOrganisationUnitGroupAction"
+		class="org.hisp.dhis.reportexcel.organisationunitgrouplisting.action.UpdateOrganisationUnitGroupAction"
+		scope="prototype">
+		<property name="reportService" ref="org.hisp.dhis.reportexcel.ReportExcelService" />
+		<property name="organisationUnitGroupService" ref="org.hisp.dhis.organisationunit.OrganisationUnitGroupService" />
+	</bean>
 
 	<!-- REPORT EXCEL ITEM BEAN -->
 

=== modified file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/struts.xml'
--- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/struts.xml	2009-09-15 04:00:03 +0000
+++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/struts.xml	2009-09-15 06:38:27 +0000
@@ -154,6 +154,22 @@
 			<result name="success" type="velocity-xml">
 				/dhis-web-excel-reporting/responseSuccess.vm</result>
 		</action>
+		
+		<!-- REPORT ORGANISATION UNIT GROUP LISTING ACTION -->
+		
+		<action name="openUpdateOrgnisationUnitGroupListingReport"
+			class="org.hisp.dhis.reportexcel.organisationunitgrouplisting.action.OpenUpdateOrganisationUnitGroupAction">
+			<result name="success" type="velocity">/main.vm</result>
+			<param name="page">/dhis-web-excel-reporting/organisationUnitGroupListingReport.vm</param>
+			<param name="menu">/dhis-web-excel-reporting/menu.vm</param>
+			<param name="javascripts">javascript/commons.js</param>			
+		</action>
+		
+		<action name="updateOrgnisationUnitGroupListingReport"
+			class="org.hisp.dhis.reportexcel.organisationunitgrouplisting.action.UpdateOrganisationUnitGroupAction">
+			<result name="success" type="redirect">listReportExcel.action</result>
+		</action>
+		
 
 		<!-- REPORT EXCEL ITEM ACTION -->
 

=== added file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/images/group_1.jpg'
Binary files dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/images/group_1.jpg	1970-01-01 00:00:00 +0000 and dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/images/group_1.jpg	2009-09-15 06:38:27 +0000 differ
=== added file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/organisationUnitGroupListingReport.vm'
--- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/organisationUnitGroupListingReport.vm	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/organisationUnitGroupListingReport.vm	2009-09-15 06:38:27 +0000
@@ -0,0 +1,55 @@
+<h2>$i18n.getString( 'organisation_unit_group' )</h2>
+<form action="updateOrgnisationUnitGroupListingReport.action" method="GET">
+<input type="hidden" name="id" value="$reportExcelOganiztionGroupListing.id"/>
+<table>
+	<colgroup>
+  		<col width="325px">
+  		<col width="80px">
+ 		<col width="325px">
+		<col>
+  	</colgroup>
+	
+  	<tr>
+  		<th>$i18n.getString( "available_groups" )</th>
+  		<td></td>
+  		<th>$i18n.getString( "selected_groups" )</th>
+		<td></td>
+	</tr>
+	
+	<tr>
+		<td>
+			<select multiple size="13" id="availableGroups" name="availableGroups" style="width:100%" ondblclick="moveSelectedById( 'availableGroups', 'selectedGroups' )">
+				#foreach ( $group in $availableOrganisationUnitGroups )
+    				<option value="$group.id">$group.name</option>
+    			#end
+			</select>
+		</td>
+		<td style="text-align:center">
+			<input type="button" value="&gt;" title="$i18n.getString('move_selected')" style="width:50px" onclick="moveSelectedById( 'availableGroups', 'selectedGroups' )"><br>
+			<input type="button" value="&lt;" title="$i18n.getString('move_all')" style="width:50px" onclick="moveSelectedById( 'selectedGroups', 'availableGroups' )"><br>		
+			<input type="button" value="&gt;&gt;" title="$i18n.getString('remove_selected')" style="width:50px" onclick="moveAllById( 'availableGroups', 'selectedGroups' )"><br>
+			<input type="button" value="&lt;&lt;" title="$i18n.getString('remove_all')" style="width:50px" onclick="moveAllById( 'selectedGroups', 'availableGroups' )">
+		</td>
+		<td>
+			<select multiple size="13" id="selectedGroups" name="selectedOrganisationUnitGroups" style="width:100%" ondblclick="moveSelectedById( 'selectedGroups', 'availableGroups' )">
+				#foreach ( $group in $selectedOrganisationUnitGroups )
+					<option value="$group.id">$group.name</option>
+    			#end
+			</select>
+		</td>
+		<td>
+			<a href="javascript:moveSelectedOptionToTop( 'selectedGroups' );"><img align="absmiddle" src="../images/move_top.png" style="cursor:pointer;width:20px;"></a><br><br>			
+			<a href="javascript:moveUpSelectedOption( 'selectedGroups' );"><img align="absmiddle" src="../images/move_up.png" style="cursor:pointer;width:20px;"></a><br><br>		
+			<a href="javascript:moveDownSelectedOption( 'selectedGroups' );"><img align="absmiddle" src="../images/move_down.png" style="cursor:pointer;width:20px;"></a><br><br>		
+			<a href="javascript:moveSelectedOptionToBottom( 'selectedGroups' );"><img align="absmiddle" src="../images/move_bottom.png" style="cursor:pointer;width:20px;"></a>			
+		</td>
+	</tr>
+	<tr>
+		<td colspan=4>
+			<input type="submit" value="$i18n.getString( 'ok')" onclick="selectAll('selectedGroups')"/>
+			<input type="button" value="$i18n.getString( 'cancel')" onclick="window.location='listReportExcel.action'"/>
+		</td>
+	</tr>
+</table>
+
+</action>
\ No newline at end of file

=== modified file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/reportItems.vm'
--- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/reportItems.vm	2009-09-15 04:10:48 +0000
+++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/reportItems.vm	2009-09-15 06:38:27 +0000
@@ -70,12 +70,12 @@
 			<td><label>$i18n.getString('item_type')<em title="$i18n.getString( 'required' )" class="required">*</em></label></td>
 			<td>
 				<select type="text" id="itemType" name="itemType" style="min-width:20em" onchange="selectItiemType(this.value);">					
-					#if($!reportExcel.getReportType()=='CATEGORY')
+					#if($!reportExcel.isCategory())
 					<option value='dataelement'>$i18n.getString('dataelement')</option>					
 					<option value='dataelement_code'>$i18n.getString('dataelement_code')</option>
 					<option value='dataelement_name'>$i18n.getString('dataelement_name')</option>	
 					<option value='serial'>$i18n.getString('serial')</option>					
-					#else if($!reportExcel.getReportType()=='NORMAL')					
+					#else if($!reportExcel.isNormal())					
 					<option value='dataelement'>$i18n.getString('dataelement')</option>
 					<option value='formulaexcel'>$i18n.getString('formulaexcel')</option>					
 					<option value='indicator'>$i18n.getString('indicator')</option>									

=== modified file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/reports.vm'
--- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/reports.vm	2009-09-14 15:29:21 +0000
+++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/reports.vm	2009-09-15 06:38:27 +0000
@@ -20,11 +20,10 @@
 				<a href="listReportExcelItemAction.action?reportId=$report.id" title="$i18n.getString( 'report_item' )"><img src="../images/add_section.png" alt="$i18n.getString( 'report_item' )"></a>
 				<a href="javascript:deleteReportExcel('$report.id');" title="$i18n.getString( 'remove' )"><img src="../images/delete.png" alt="$i18n.getString( 'remove' )"></a>
 				<a href="javascript:openUpdateReportReportExcel( '$report.id' );" title="$i18n.getString( 'edit' )"><img src="../images/edit.png" alt="$i18n.getString( 'edit' )"></a>
-				#if($report.getReportType()=='grouplisting')
-				<a href="javascript: openAddOrgUnitForm($report.id);" title="$i18n.getString( 'organisation_unit_group' )"><img src="../images/edit.png" alt="$i18n.getString( 'organisation_unit_group' )"></a>
+				#if($report.isOrganisationUnitGroupListing())
+				<a href="openUpdateOrgnisationUnitGroupListingReport.action?id=$report.id" title="$i18n.getString( 'organisation_unit_group' )"><img src="images/group_1.jpg"/></a>
 				#end
-
-				#if($report.getReportType() == 'CATEGORY')				
+				#if($report.isCategory())				
 				<a href="listDataElementGroupOrder.action?id=$report.id" title="$i18n.getString( 'dataelement_groups' )"><img src="images/group.jpg"/></a>
 				
 				#end

=== modified file 'dhis-2/dhis-web/dhis-web-portal/pom.xml'
--- dhis-2/dhis-web/dhis-web-portal/pom.xml	2009-09-15 04:03:04 +0000
+++ dhis-2/dhis-web/dhis-web-portal/pom.xml	2009-09-15 06:38:27 +0000
@@ -90,12 +90,14 @@
       <version>${version}</version>
       <type>war</type>
     </dependency>
+	
     <dependency>
       <groupId>org.hisp.dhis</groupId>
       <artifactId>dhis-web-dataentry</artifactId>
       <version>${version}</version>
       <type>war</type>
     </dependency>
+	
     <dependency>
       <groupId>org.hisp.dhis</groupId>
       <artifactId>dhis-web-reporting</artifactId>
@@ -114,6 +116,13 @@
       <version>${version}</version>
       <type>war</type>
     </dependency>
+	
+	<dependency>
+      <groupId>org.hisp.dhis</groupId>
+      <artifactId>dhis-web-excel-reporting</artifactId>
+      <version>${version}</version>
+      <type>war</type>
+    </dependency>
         
     <!-- India modules -->
     

=== modified file 'dhis-2/dhis-web/pom.xml'
--- dhis-2/dhis-web/pom.xml	2009-09-15 03:50:33 +0000
+++ dhis-2/dhis-web/pom.xml	2009-09-15 06:38:27 +0000
@@ -23,7 +23,7 @@
     <module>dhis-web-datamart</module>
     <module>dhis-web-validationrule</module>
     <module>dhis-web-reporting</module>
-	<!--<module>dhis-web-excel-reporting</module>-->
+	<module>dhis-web-excel-reporting</module>
     <module>dhis-web-mapping</module>
     <module>dhis-web-dashboard-integration</module>
     <module>dhis-web-portal</module>

