← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 7327: Tracking - Anonymous program

 

------------------------------------------------------------
revno: 7327
committer: Lai <lai.hispvietnam@xxxxxxxxx>
branch nick: dhis2
timestamp: Mon 2012-06-18 17:29:46 +0700
message:
  Tracking - Anonymous program
added:
  dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/anonymous/
  dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/anonymous/action/
  dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/anonymous/action/GetAllAnonymousProgramAction.java
  dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/anonymous/action/SaveAnonymousProgramAction.java
  dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/anonymous/action/ShowAnonymousFormAction.java
  dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/anonymous/
  dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/anonymous/anonymousProgramForm.vm
  dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/anonymous/anonymousProgramSelection.vm
modified:
  dhis-2/dhis-services/dhis-service-sms/src/main/java/org/hisp/dhis/sms/inbound/HibernateIncomingSmsStore.java
  dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/singleevent/action/SaveSingleEventAction.java
  dhis-2/dhis-web/dhis-web-light/src/main/resources/META-INF/dhis/beans.xml
  dhis-2/dhis-web/dhis-web-light/src/main/resources/struts.xml
  dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/menu.vm
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-mobile/src/main/webapp/dhis-web-maintenance-mobile/receiveSMSPage.vm
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-mobile/src/main/webapp/dhis-web-maintenance-mobile/showSentSMSPage.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 'dhis-2/dhis-services/dhis-service-sms/src/main/java/org/hisp/dhis/sms/inbound/HibernateIncomingSmsStore.java'
--- dhis-2/dhis-services/dhis-service-sms/src/main/java/org/hisp/dhis/sms/inbound/HibernateIncomingSmsStore.java	2012-06-06 07:48:54 +0000
+++ dhis-2/dhis-services/dhis-service-sms/src/main/java/org/hisp/dhis/sms/inbound/HibernateIncomingSmsStore.java	2012-06-18 10:29:46 +0000
@@ -91,11 +91,12 @@
     @Override
     public Collection<IncomingSms> getAllSmses()
     {
-        return sessionFactory.getCurrentSession().createCriteria( IncomingSms.class ).addOrder( Order.asc( "id" ) ).list();
+        return sessionFactory.getCurrentSession().createCriteria( IncomingSms.class ).addOrder( Order.desc( "id" ) ).list();
     }
 
     @Override
     public long getSmsCount()
+    
     {
         Session session = sessionFactory.getCurrentSession();
         Criteria criteria = session.createCriteria( IncomingSms.class );

=== added directory 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/anonymous'
=== added directory 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/anonymous/action'
=== added file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/anonymous/action/GetAllAnonymousProgramAction.java'
--- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/anonymous/action/GetAllAnonymousProgramAction.java	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/anonymous/action/GetAllAnonymousProgramAction.java	2012-06-18 10:29:46 +0000
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2004-2012, 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.light.anonymous.action;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+
+
+import org.hisp.dhis.program.Program;
+import org.hisp.dhis.program.ProgramService;
+
+import com.opensymphony.xwork2.Action;
+
+/**
+ * @author Nguyen Kim Lai
+ * 
+ * @version $ GetAnonymousProgramAction.java $
+ */
+
+public class GetAllAnonymousProgramAction
+    implements Action
+{
+    // -------------------------------------------------------------------------
+    // Dependencies
+    // -------------------------------------------------------------------------
+
+    private ProgramService programService;
+
+    public void setProgramService( ProgramService programService )
+    {
+        this.programService = programService;
+    }
+
+    // -------------------------------------------------------------------------
+    // Output
+    // -------------------------------------------------------------------------
+
+    private Collection<Program> programs = new ArrayList<Program>();
+
+    public Collection<Program> getPrograms()
+    {
+        return programs;
+    }
+
+    // -------------------------------------------------------------------------
+    // Implementation Action
+    // -------------------------------------------------------------------------
+
+    @Override
+    public String execute()
+        throws Exception
+    {
+        programs = programService.getPrograms( Program.SINGLE_EVENT_WITHOUT_REGISTRATION );
+        return SUCCESS;
+    }
+}

=== added file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/anonymous/action/SaveAnonymousProgramAction.java'
--- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/anonymous/action/SaveAnonymousProgramAction.java	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/anonymous/action/SaveAnonymousProgramAction.java	2012-06-18 10:29:46 +0000
@@ -0,0 +1,296 @@
+/*
+ * Copyright (c) 2004-2012, 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.light.anonymous.action;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.struts2.ServletActionContext;
+import org.hisp.dhis.dataelement.DataElement;
+import org.hisp.dhis.dataelement.DataElementService;
+import org.hisp.dhis.light.utils.NamebasedUtils;
+import org.hisp.dhis.patientdatavalue.PatientDataValue;
+import org.hisp.dhis.patientdatavalue.PatientDataValueService;
+import org.hisp.dhis.program.Program;
+import org.hisp.dhis.program.ProgramInstance;
+import org.hisp.dhis.program.ProgramInstanceService;
+import org.hisp.dhis.program.ProgramService;
+import org.hisp.dhis.program.ProgramStage;
+import org.hisp.dhis.program.ProgramStageDataElement;
+import org.hisp.dhis.program.ProgramStageInstance;
+import org.hisp.dhis.program.ProgramStageInstanceService;
+import org.hisp.dhis.util.ContextUtils;
+
+import com.opensymphony.xwork2.Action;
+import com.opensymphony.xwork2.ActionContext;
+
+/**
+ * @author Nguyen Kim Lai
+ * 
+ * @version $ SaveAnonymousProgramAction.java Jun 14, 2012 $
+ */
+public class SaveAnonymousProgramAction
+    implements Action
+{
+    // -------------------------------------------------------------------------
+    // Dependencies
+    // -------------------------------------------------------------------------
+
+    private ProgramService programService;
+
+    public void setProgramService( ProgramService programService )
+    {
+        this.programService = programService;
+    }
+
+    private ProgramStageInstanceService programStageInstanceService;
+
+    public void setProgramStageInstanceService( ProgramStageInstanceService programStageInstanceService )
+    {
+        this.programStageInstanceService = programStageInstanceService;
+    }
+
+    private ProgramInstanceService programInstanceService;
+
+    public void setProgramInstanceService( ProgramInstanceService programInstanceService )
+    {
+        this.programInstanceService = programInstanceService;
+    }
+
+    private PatientDataValueService patientDataValueService;
+
+    public void setPatientDataValueService( PatientDataValueService patientDataValueService )
+    {
+        this.patientDataValueService = patientDataValueService;
+    }
+
+    private DataElementService dataElementService;
+
+    public void setDataElementService( DataElementService dataElementService )
+    {
+        this.dataElementService = dataElementService;
+    }
+
+    private NamebasedUtils util;
+
+    public NamebasedUtils getUtil()
+    {
+        return util;
+    }
+
+    public void setUtil( NamebasedUtils util )
+    {
+        this.util = util;
+    }
+
+    // -------------------------------------------------------------------------
+    // Input Output
+    // -------------------------------------------------------------------------
+
+    private Map<String, String> typeViolations = new HashMap<String, String>();
+
+    public Map<String, String> getTypeViolations()
+    {
+        return typeViolations;
+    }
+
+    private Map<String, String> prevDataValues = new HashMap<String, String>();
+
+    public Map<String, String> getPrevDataValues()
+    {
+        return prevDataValues;
+    }
+
+    private Integer programId;
+
+    public Integer getProgramId()
+    {
+        return programId;
+    }
+
+    public void setProgramId( Integer programId )
+    {
+        this.programId = programId;
+    }
+
+    List<DataElement> dataElements = new ArrayList<DataElement>();
+
+    public List<DataElement> getDataElements()
+    {
+        return dataElements;
+    }
+
+    public void setDataElements( List<DataElement> dataElements )
+    {
+        this.dataElements = dataElements;
+    }
+
+    private ArrayList<ProgramStageDataElement> programStageDataElements = new ArrayList<ProgramStageDataElement>();
+
+    public ArrayList<ProgramStageDataElement> getProgramStageDataElements()
+    {
+        return this.programStageDataElements;
+    }
+
+    static final Comparator<ProgramStageDataElement> OrderBySortOrder = new Comparator<ProgramStageDataElement>()
+    {
+        public int compare( ProgramStageDataElement i1, ProgramStageDataElement i2 )
+        {
+            return i1.getSortOrder().compareTo( i2.getSortOrder() );
+        }
+    };
+
+    // -------------------------------------------------------------------------
+    // Implementation Action
+    // -------------------------------------------------------------------------
+
+    @Override
+    public String execute()
+        throws Exception
+    {
+
+        Program program = programService.getProgram( programId );
+
+        // -------------------------------------------------------------------------
+        // Getting all data from UI
+        // -------------------------------------------------------------------------
+
+        ProgramStage programStage = program.getProgramStages().iterator().next();
+
+        programStageDataElements = new ArrayList<ProgramStageDataElement>( programStage.getProgramStageDataElements() );
+
+        for ( ProgramStageDataElement each : programStageDataElements )
+        {
+            dataElements.add( each.getDataElement() );
+        }
+
+        Collections.sort( programStageDataElements, OrderBySortOrder );
+
+        HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(
+            ServletActionContext.HTTP_REQUEST );
+
+        Map<String, String> parameterMap = ContextUtils.getParameterMap( request );
+
+        typeViolations.clear();
+
+        prevDataValues.clear();
+
+        // -------------------------------------------------------------------------
+        // Validation
+        // -------------------------------------------------------------------------
+
+        for ( String key : parameterMap.keySet() )
+        {
+            if ( key.startsWith( "DE" ) )
+            {
+                Integer dataElementId = Integer.parseInt( key.substring( 2, key.length() ) );
+
+                String value = parameterMap.get( key );
+
+                DataElement dataElement = dataElementService.getDataElement( dataElementId );
+
+                value = value.trim();
+
+                Boolean valueIsEmpty = (value == null || value.length() == 0);
+
+                if ( !valueIsEmpty )
+                {
+                    String typeViolation = util.getTypeViolation( dataElement, value );
+
+                    if ( typeViolation != null )
+                    {
+                        typeViolations.put( key, typeViolation );
+                    }
+                    prevDataValues.put( key, value );
+                }
+            }
+        }
+
+        if ( !typeViolations.isEmpty() )
+        {
+            return ERROR;
+        }
+
+        ProgramInstance programInstance = new ProgramInstance();
+
+        programInstance.setEnrollmentDate( new Date() );
+
+        programInstance.setDateOfIncident( new Date() );
+
+        programInstance.setProgram( program );
+        
+        programInstance.setCompleted( false );
+        
+        programInstanceService.addProgramInstance( programInstance );
+
+        ProgramStageInstance programStageInstance = new ProgramStageInstance();
+        
+        programStageInstance.setProgramInstance( programInstance );
+        
+        programStageInstance.setProgramStage( programStage );
+        
+        programStageInstance.setDueDate( new Date() );
+        
+        programStageInstance.setExecutionDate( new Date() );
+        
+        programStageInstance.setCompleted( false );
+        
+        programStageInstanceService.addProgramStageInstance( programStageInstance );
+
+        for ( ProgramStageDataElement programStageDataElement : programStageDataElements )
+        {
+            DataElement dataElement = programStageDataElement.getDataElement();
+
+            PatientDataValue patientDataValue = new PatientDataValue();
+            
+            patientDataValue.setDataElement( dataElement );
+            
+            String id = "DE" + dataElement.getId();
+            
+            patientDataValue.setValue( parameterMap.get( id ) );
+            
+            patientDataValue.setProgramStageInstance( programStageInstance );
+            
+            patientDataValue.setProvidedElsewhere( false );
+            
+            patientDataValue.setTimestamp( new Date() );
+            
+            patientDataValueService.savePatientDataValue( patientDataValue );
+        }
+
+        return SUCCESS;
+    }
+
+}

=== added file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/anonymous/action/ShowAnonymousFormAction.java'
--- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/anonymous/action/ShowAnonymousFormAction.java	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/anonymous/action/ShowAnonymousFormAction.java	2012-06-18 10:29:46 +0000
@@ -0,0 +1,114 @@
+/*
+ * Copyright (c) 2004-2012, 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.light.anonymous.action;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+import org.hisp.dhis.dataelement.DataElement;
+import org.hisp.dhis.program.Program;
+import org.hisp.dhis.program.ProgramService;
+import org.hisp.dhis.program.ProgramStage;
+import org.hisp.dhis.program.ProgramStageDataElement;
+
+import com.opensymphony.xwork2.Action;
+
+/**
+ * @author Nguyen Kim Lai
+ *
+ * @version $ ShowAnonymousFormAction.java $
+ */
+public class ShowAnonymousFormAction implements Action
+{
+    // -------------------------------------------------------------------------
+    // Dependencies
+    // -------------------------------------------------------------------------
+    
+    private ProgramService programService;
+
+    public void setProgramService( ProgramService programService )
+    {
+        this.programService = programService;
+    }
+    
+    // -------------------------------------------------------------------------
+    // Input & Output
+    // -------------------------------------------------------------------------
+    
+    Integer programId;
+
+    public void setProgramId( Integer programId )
+    {
+        this.programId = programId;
+    }
+    
+    public Integer getProgramId()
+    {
+        return programId;
+    }
+
+    List<DataElement> dataElements = new ArrayList<DataElement>();
+    
+    public List<DataElement> getDataElements()
+    {
+        return dataElements;
+    }
+    
+    // -------------------------------------------------------------------------
+    // Implementation Action
+    // -------------------------------------------------------------------------
+    
+    @Override
+    public String execute()
+        throws Exception
+    {
+        
+        Program program = programService.getProgram( programId );
+        
+        Collection<ProgramStage> programStages = program.getProgramStages();
+        
+        Set<ProgramStageDataElement> programStageDataElement = null;
+
+        for( ProgramStage each: programStages )
+        {
+            programStageDataElement = each.getProgramStageDataElements();
+        }
+        
+        if( programStageDataElement != null )
+        {    
+            for( ProgramStageDataElement each: programStageDataElement )
+            {
+                dataElements.add( each.getDataElement() );
+            }
+        }
+        return SUCCESS;
+    }
+
+}

=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/singleevent/action/SaveSingleEventAction.java'
--- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/singleevent/action/SaveSingleEventAction.java	2012-05-24 14:51:18 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/singleevent/action/SaveSingleEventAction.java	2012-06-18 10:29:46 +0000
@@ -304,7 +304,6 @@
 
             PatientDataValue patientDataValue = new PatientDataValue();
             patientDataValue.setDataElement( dataElement );
-            patientDataValue.setProgramStageInstance( programStageInstance );
             patientDataValue.setValue( dynForm.get( i ).trim() );
             patientDataValue.setProgramStageInstance( programStageInstance );
             patientDataValueService.savePatientDataValue( patientDataValue );

=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-web/dhis-web-light/src/main/resources/META-INF/dhis/beans.xml	2012-06-11 10:11:21 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/resources/META-INF/dhis/beans.xml	2012-06-18 10:29:46 +0000
@@ -1,523 +1,462 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans";
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+<beans xmlns="http://www.springframework.org/schema/beans";
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
 	xsi:schemaLocation="
 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd";>
-	
-	<bean id="org.hisp.dhis.light.action.NoAction"
-		class="org.hisp.dhis.light.action.NoAction" scope="prototype"/>
-	
-	<bean id="org.hisp.dhis.light.action.MenuAction"
-		class="org.hisp.dhis.light.action.MenuAction" scope="prototype">
-		<property name="messageService"
-			ref="org.hisp.dhis.message.MessageService"/>
+
+	<bean id="org.hisp.dhis.light.action.NoAction" class="org.hisp.dhis.light.action.NoAction"
+		scope="prototype" />
+
+	<bean id="org.hisp.dhis.light.action.MenuAction" class="org.hisp.dhis.light.action.MenuAction"
+		scope="prototype">
+		<property name="messageService" ref="org.hisp.dhis.message.MessageService" />
 		<property name="organisationUnitService"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitService"/>
-		<property name="dataSetService"
-			ref="org.hisp.dhis.dataset.DataSetService"/>
-		<property name="periodService" ref="org.hisp.dhis.period.PeriodService"/>
+			ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
+		<property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
+		<property name="periodService" ref="org.hisp.dhis.period.PeriodService" />
 	</bean>
-	
+
 	<!-- Data entry -->
-	
-	<bean id="org.hisp.dhis.light.dataentry.utils.FormUtils"
-		class="org.hisp.dhis.light.utils.FormUtils">
+
+	<bean id="org.hisp.dhis.light.dataentry.utils.FormUtils" class="org.hisp.dhis.light.utils.FormUtils">
 		<property name="organisationUnitService"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitService"/>
-		<property name="currentUserService"
-			ref="org.hisp.dhis.user.CurrentUserService"/>
-		<property name="dataValueService"
-			ref="org.hisp.dhis.datavalue.DataValueService"/>
-		<property name="dataSetService"
-			ref="org.hisp.dhis.dataset.DataSetService"/>
+			ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
+		<property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
+		<property name="dataValueService" ref="org.hisp.dhis.datavalue.DataValueService" />
+		<property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
 		<property name="stdDevOutlierAnalysisService"
-			ref="org.hisp.dhis.dataanalysis.StdDevOutlierAnalysisService"/>
+			ref="org.hisp.dhis.dataanalysis.StdDevOutlierAnalysisService" />
 		<property name="minMaxOutlierAnalysisService"
-			ref="org.hisp.dhis.dataanalysis.MinMaxOutlierAnalysisService"/>
+			ref="org.hisp.dhis.dataanalysis.MinMaxOutlierAnalysisService" />
 		<property name="minMaxValuesGenerationService"
-			ref="org.hisp.dhis.minmax.validation.MinMaxValuesGenerationService"/>
+			ref="org.hisp.dhis.minmax.validation.MinMaxValuesGenerationService" />
 		<property name="minMaxDataElementService"
-			ref="org.hisp.dhis.minmax.MinMaxDataElementService"/>
-		<property name="systemSettingManager"
-			ref="org.hisp.dhis.setting.SystemSettingManager"/>
+			ref="org.hisp.dhis.minmax.MinMaxDataElementService" />
+		<property name="systemSettingManager" ref="org.hisp.dhis.setting.SystemSettingManager" />
 		<property name="validationRuleService"
-			ref="org.hisp.dhis.validation.ValidationRuleService"/>
-		<property name="expressionService"
-			ref="org.hisp.dhis.expression.ExpressionService"/>
+			ref="org.hisp.dhis.validation.ValidationRuleService" />
+		<property name="expressionService" ref="org.hisp.dhis.expression.ExpressionService" />
 	</bean>
-	
+
 	<bean id="org.hisp.dhis.light.dataentry.action.GetOrganisationUnitsAction"
 		class="org.hisp.dhis.light.dataentry.action.GetOrganisationUnitsAction"
 		scope="prototype">
 		<property name="formUtils"
-			ref="org.hisp.dhis.light.dataentry.utils.FormUtils"/>
+			ref="org.hisp.dhis.light.dataentry.utils.FormUtils" />
 	</bean>
-	
+
 	<bean id="org.hisp.dhis.light.dataentry.action.GetDataSetsAction"
-		class="org.hisp.dhis.light.dataentry.action.GetDataSetsAction"
-		scope="prototype">
+		class="org.hisp.dhis.light.dataentry.action.GetDataSetsAction" scope="prototype">
 		<property name="formUtils"
-			ref="org.hisp.dhis.light.dataentry.utils.FormUtils"/>
+			ref="org.hisp.dhis.light.dataentry.utils.FormUtils" />
 		<property name="organisationUnitService"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitService"/>
+			ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
 	</bean>
-	
+
 	<bean id="org.hisp.dhis.light.dataentry.action.GetPeriodsAction"
-		class="org.hisp.dhis.light.dataentry.action.GetPeriodsAction"
-		scope="prototype">
+		class="org.hisp.dhis.light.dataentry.action.GetPeriodsAction" scope="prototype">
 		<property name="formUtils"
-			ref="org.hisp.dhis.light.dataentry.utils.FormUtils"/>
+			ref="org.hisp.dhis.light.dataentry.utils.FormUtils" />
 		<property name="organisationUnitService"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitService"/>
-		<property name="dataSetService"
-			ref="org.hisp.dhis.dataset.DataSetService"/>
+			ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
+		<property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
 		<property name="registrationService"
-			ref="org.hisp.dhis.dataset.CompleteDataSetRegistrationService"/>
+			ref="org.hisp.dhis.dataset.CompleteDataSetRegistrationService" />
 	</bean>
-	
+
 	<bean id="org.hisp.dhis.light.dataentry.action.GetDataSetOverviewAction"
 		class="org.hisp.dhis.light.dataentry.action.GetDataSetOverviewAction"
 		scope="prototype">
 		<property name="organisationUnitService"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitService"/>
-		<property name="dataSetService"
-			ref="org.hisp.dhis.dataset.DataSetService"/>
-		<property name="periodService" ref="org.hisp.dhis.period.PeriodService"/>
+			ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
+		<property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
+		<property name="periodService" ref="org.hisp.dhis.period.PeriodService" />
 		<property name="formUtils"
-			ref="org.hisp.dhis.light.dataentry.utils.FormUtils"/>
+			ref="org.hisp.dhis.light.dataentry.utils.FormUtils" />
 	</bean>
-	
+
 	<bean id="org.hisp.dhis.light.dataentry.action.MarkComplete"
-		class="org.hisp.dhis.light.dataentry.action.MarkComplete"
-		scope="prototype">
-		<property name="currentUserService"
-			ref="org.hisp.dhis.user.CurrentUserService"/>
+		class="org.hisp.dhis.light.dataentry.action.MarkComplete" scope="prototype">
+		<property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
 		<property name="organisationUnitService"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitService"/>
-		<property name="dataSetService"
-			ref="org.hisp.dhis.dataset.DataSetService"/>
+			ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
+		<property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
 		<property name="registrationService"
-			ref="org.hisp.dhis.dataset.CompleteDataSetRegistrationService"/>
-		<property name="periodService" ref="org.hisp.dhis.period.PeriodService"/>
+			ref="org.hisp.dhis.dataset.CompleteDataSetRegistrationService" />
+		<property name="periodService" ref="org.hisp.dhis.period.PeriodService" />
 	</bean>
-	
+
 	<bean id="org.hisp.dhis.light.dataentry.action.GetSectionFormAction"
 		class="org.hisp.dhis.light.dataentry.action.GetSectionFormAction"
 		scope="prototype">
 		<property name="organisationUnitService"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitService"/>
-		<property name="dataSetService"
-			ref="org.hisp.dhis.dataset.DataSetService"/>
-		<property name="periodService" ref="org.hisp.dhis.period.PeriodService"/>
+			ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
+		<property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
+		<property name="periodService" ref="org.hisp.dhis.period.PeriodService" />
 		<property name="formUtils"
-			ref="org.hisp.dhis.light.dataentry.utils.FormUtils"/>
+			ref="org.hisp.dhis.light.dataentry.utils.FormUtils" />
 	</bean>
-	
+
 	<bean id="org.hisp.dhis.light.dataentry.action.SaveSectionFormAction"
 		class="org.hisp.dhis.light.dataentry.action.SaveSectionFormAction"
 		scope="prototype">
-		<property name="currentUserService"
-			ref="org.hisp.dhis.user.CurrentUserService"/>
+		<property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
 		<property name="organisationUnitService"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitService"/>
-		<property name="dataElementService"
-			ref="org.hisp.dhis.dataelement.DataElementService"/>
+			ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
+		<property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
 		<property name="categoryService"
-			ref="org.hisp.dhis.dataelement.DataElementCategoryService"/>
-		<property name="dataValueService"
-			ref="org.hisp.dhis.datavalue.DataValueService"/>
-		<property name="dataSetService"
-			ref="org.hisp.dhis.dataset.DataSetService"/>
+			ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
+		<property name="dataValueService" ref="org.hisp.dhis.datavalue.DataValueService" />
+		<property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
 		<property name="registrationService"
-			ref="org.hisp.dhis.dataset.CompleteDataSetRegistrationService"/>
-		<property name="periodService" ref="org.hisp.dhis.period.PeriodService"/>
+			ref="org.hisp.dhis.dataset.CompleteDataSetRegistrationService" />
+		<property name="periodService" ref="org.hisp.dhis.period.PeriodService" />
 		<property name="formUtils"
-			ref="org.hisp.dhis.light.dataentry.utils.FormUtils"/>
+			ref="org.hisp.dhis.light.dataentry.utils.FormUtils" />
 	</bean>
-	
+
 	<!-- Namebased Data entry -->
-	
+
 	<bean
 		id="org.hisp.dhis.light.namebaseddataentry.action.GetNamebasedOrganisationUnitsAction"
 		class="org.hisp.dhis.light.namebaseddataentry.action.GetNamebasedOrganisationUnitsAction"
 		scope="prototype">
-		<property name="currentUserService"
-			ref="org.hisp.dhis.user.CurrentUserService"/>
+		<property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
 	</bean>
-	
+
 	<bean
 		id="org.hisp.dhis.light.namebaseddataentry.action.GetBeneficiaryListAction"
 		class="org.hisp.dhis.light.namebaseddataentry.action.GetBeneficiaryListAction">
 		<property name="organisationUnitService"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitService"/>
+			ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
 		<property name="activityReportingService"
-			ref="org.hisp.dhis.mobile.api.ActivityReportingService"/>
+			ref="org.hisp.dhis.mobile.api.ActivityReportingService" />
 	</bean>
-	
+
 	<bean
 		id="org.hisp.dhis.light.namebaseddataentry.action.ShowActivityTypeAction"
 		class="org.hisp.dhis.light.namebaseddataentry.action.ShowActivityTypeAction"
-		scope="prototype"/>
-	
+		scope="prototype" />
+
 	<bean
 		id="org.hisp.dhis.light.namebaseddataentry.action.GetActivityListAction"
 		class="org.hisp.dhis.light.namebaseddataentry.action.GetActivityListAction">
 		<property name="organisationUnitService"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitService"/>
+			ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
 		<property name="activityReportingService"
-			ref="org.hisp.dhis.mobile.api.ActivityReportingService"/>
-		<property name="util" ref="org.hisp.dhis.light.utils.NamebasedUtils"/>
+			ref="org.hisp.dhis.mobile.api.ActivityReportingService" />
+		<property name="util" ref="org.hisp.dhis.light.utils.NamebasedUtils" />
 	</bean>
-	
+
 	<bean
 		id="org.hisp.dhis.light.namebaseddataentry.action.GetProgramStageFormAction"
 		class="org.hisp.dhis.light.namebaseddataentry.action.GetProgramStageFormAction">
-		<property name="util" ref="org.hisp.dhis.light.utils.NamebasedUtils"/>
+		<property name="util" ref="org.hisp.dhis.light.utils.NamebasedUtils" />
 		<property name="programStageInstanceService"
-			ref="org.hisp.dhis.program.ProgramStageInstanceService"/>
+			ref="org.hisp.dhis.program.ProgramStageInstanceService" />
 		<property name="patientDataValueService"
-			ref="org.hisp.dhis.patientdatavalue.PatientDataValueService"/>
-		<property name="patientService"
-			ref="org.hisp.dhis.patient.PatientService"/>
-	</bean>
-	
-	<bean id="org.hisp.dhis.light.utils.NamebasedUtils"
-		class="org.hisp.dhis.light.utils.NamebasedUtils">
-		<property name="programService"
-			ref="org.hisp.dhis.mobile.api.IProgramService"/>
-	</bean>
-	
+			ref="org.hisp.dhis.patientdatavalue.PatientDataValueService" />
+		<property name="patientService" ref="org.hisp.dhis.patient.PatientService" />
+	</bean>
+
+	<bean id="org.hisp.dhis.light.utils.NamebasedUtils" class="org.hisp.dhis.light.utils.NamebasedUtils">
+		<property name="programService" ref="org.hisp.dhis.mobile.api.IProgramService" />
+	</bean>
+
 	<bean
 		id="org.hisp.dhis.light.namebaseddataentry.action.SaveProgramStageFormAction"
 		class="org.hisp.dhis.light.namebaseddataentry.action.SaveProgramStageFormAction">
 		<property name="organisationUnitService"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitService"/>
+			ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
 		<property name="activityReportingService"
-			ref="org.hisp.dhis.mobile.api.ActivityReportingService"/>
-		<property name="dataElementService"
-			ref="org.hisp.dhis.dataelement.DataElementService"/>
-		<property name="util" ref="org.hisp.dhis.light.utils.NamebasedUtils"/>
-		<property name="patientService" ref="org.hisp.dhis.patient.PatientService"/>
-		<property name="dataElementCategoryService" ref="org.hisp.dhis.dataelement.DataElementCategoryService"/>
-		<property name="programStageService"
-			ref="org.hisp.dhis.program.ProgramStageService"/>
+			ref="org.hisp.dhis.mobile.api.ActivityReportingService" />
+		<property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
+		<property name="util" ref="org.hisp.dhis.light.utils.NamebasedUtils" />
+		<property name="patientService" ref="org.hisp.dhis.patient.PatientService" />
+		<property name="dataElementCategoryService"
+			ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
+		<property name="programStageService" ref="org.hisp.dhis.program.ProgramStageService" />
 	</bean>
-	
+
 	<bean
 		id="org.hisp.dhis.light.namebaseddataentry.action.GetBeneficiaryDetailAction"
 		class="org.hisp.dhis.light.namebaseddataentry.action.GetBeneficiaryDetailAction">
-		<property name="patientService"
-			ref="org.hisp.dhis.patient.PatientService"/>
+		<property name="patientService" ref="org.hisp.dhis.patient.PatientService" />
 	</bean>
-	
+
 	<bean
 		id="org.hisp.dhis.light.namebaseddataentry.action.GetFindBeneficiaryFormAction"
 		class="org.hisp.dhis.light.namebaseddataentry.action.GetFindBeneficiaryFormAction">
-		<property name="currentUserService"
-			ref="org.hisp.dhis.user.CurrentUserService"/>
+		<property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
 	</bean>
-	
+
 	<bean
 		id="org.hisp.dhis.light.namebaseddataentry.action.FindBeneficiarytAction"
 		class="org.hisp.dhis.light.namebaseddataentry.action.FindBeneficiarytAction">
-		<property name="patientService"
-			ref="org.hisp.dhis.patient.PatientService"/>
+		<property name="patientService" ref="org.hisp.dhis.patient.PatientService" />
 	</bean>
-	
+
 	<bean
 		id="org.hisp.dhis.light.namebaseddataentry.action.GetPatientProgramListAction"
 		class="org.hisp.dhis.light.namebaseddataentry.action.GetPatientProgramListAction">
-		<property name="patientService"
-			ref="org.hisp.dhis.patient.PatientService"/>
-		<property name="programInstanceService"
-			ref="org.hisp.dhis.program.ProgramInstanceService"/>
-		<property name="programService"
-			ref="org.hisp.dhis.program.ProgramService"/>
+		<property name="patientService" ref="org.hisp.dhis.patient.PatientService" />
+		<property name="programInstanceService" ref="org.hisp.dhis.program.ProgramInstanceService" />
+		<property name="programService" ref="org.hisp.dhis.program.ProgramService" />
 		<property name="relationshipService"
-			ref="org.hisp.dhis.relationship.RelationshipService"/>
+			ref="org.hisp.dhis.relationship.RelationshipService" />
 		<property name="relationshipTypeService"
-			ref="org.hisp.dhis.relationship.RelationshipTypeService"/>
-		<property name="util"
-			ref="org.hisp.dhis.light.utils.NamebasedUtils"/>
+			ref="org.hisp.dhis.relationship.RelationshipTypeService" />
+		<property name="util" ref="org.hisp.dhis.light.utils.NamebasedUtils" />
 	</bean>
-	
+
 	<bean
 		id="org.hisp.dhis.light.namebaseddataentry.action.GetProgramStageListAction"
 		class="org.hisp.dhis.light.namebaseddataentry.action.GetProgramStageListAction">
-		<property name="patientService"
-			ref="org.hisp.dhis.patient.PatientService"/>
-		<property name="programInstanceService"
-			ref="org.hisp.dhis.program.ProgramInstanceService"/>
+		<property name="patientService" ref="org.hisp.dhis.patient.PatientService" />
+		<property name="programInstanceService" ref="org.hisp.dhis.program.ProgramInstanceService" />
 	</bean>
-	
+
 	<bean
 		id="org.hisp.dhis.light.namebaseddataentry.action.GetRepeatableEventRegistrationFormAction"
 		class="org.hisp.dhis.light.namebaseddataentry.action.GetRepeatableEventRegistrationFormAction">
-		<property name="programStageService"
-			ref="org.hisp.dhis.program.ProgramStageService"/>
-		<property name="programInstanceService"
-			ref="org.hisp.dhis.program.ProgramInstanceService"/>
+		<property name="programStageService" ref="org.hisp.dhis.program.ProgramStageService" />
+		<property name="programInstanceService" ref="org.hisp.dhis.program.ProgramInstanceService" />
 	</bean>
-	
+
 	<bean
 		id="org.hisp.dhis.light.namebaseddataentry.action.SaveRepeatableEventAction"
 		class="org.hisp.dhis.light.namebaseddataentry.action.SaveRepeatableEventAction">
-		<property name="programInstanceService"
-			ref="org.hisp.dhis.program.ProgramInstanceService"/>
-		<property name="programStageService"
-			ref="org.hisp.dhis.program.ProgramStageService"/>
+		<property name="programInstanceService" ref="org.hisp.dhis.program.ProgramInstanceService" />
+		<property name="programStageService" ref="org.hisp.dhis.program.ProgramStageService" />
 		<property name="programStageInstanceService"
-			ref="org.hisp.dhis.program.ProgramStageInstanceService"/>
+			ref="org.hisp.dhis.program.ProgramStageInstanceService" />
 	</bean>
-	
+
 	<bean
 		id="org.hisp.dhis.light.namebaseddataentry.action.GetAddNewRelationshipFormAction"
 		class="org.hisp.dhis.light.namebaseddataentry.action.GetAddNewRelationshipFormAction">
 		<property name="relationshipTypeService"
-			ref="org.hisp.dhis.relationship.RelationshipTypeService"/>
-		<property name="patientService"
-			ref="org.hisp.dhis.patient.PatientService"/>
-	</bean>
-	
+			ref="org.hisp.dhis.relationship.RelationshipTypeService" />
+		<property name="patientService" ref="org.hisp.dhis.patient.PatientService" />
+	</bean>
+
 	<bean
 		id="org.hisp.dhis.light.namebaseddataentry.action.AddNewRalationshipAction"
 		class="org.hisp.dhis.light.namebaseddataentry.action.AddNewRalationshipAction">
 		<property name="relationshipTypeService"
-			ref="org.hisp.dhis.relationship.RelationshipTypeService"/>
-		<property name="patientService"
-			ref="org.hisp.dhis.patient.PatientService"/>
+			ref="org.hisp.dhis.relationship.RelationshipTypeService" />
+		<property name="patientService" ref="org.hisp.dhis.patient.PatientService" />
 		<property name="relationshipService"
-			ref="org.hisp.dhis.relationship.RelationshipService"/>
-	</bean>
-	
-	
+			ref="org.hisp.dhis.relationship.RelationshipService" />
+	</bean>
 	<!-- Beneficiary Registration -->
-	
+
 	<bean
 		id="org.hisp.dhis.light.beneficiaryregistration.action.GetBeneficiaryRegistrationOrganisationUnitAction"
 		class="org.hisp.dhis.light.beneficiaryregistration.action.GetBeneficiaryRegistrationOrganisationUnitAction"
 		scope="prototype">
-		<property name="currentUserService"
-			ref="org.hisp.dhis.user.CurrentUserService"/>
+		<property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
 	</bean>
-	
+
 	<bean
 		id="org.hisp.dhis.light.beneficiaryregistration.action.RegisterBeneficiaryAction"
 		class="org.hisp.dhis.light.beneficiaryregistration.action.RegisterBeneficiaryAction"
 		scope="prototype">
 	</bean>
-	
+
 	<bean
 		id="org.hisp.dhis.light.beneficiaryregistration.action.SaveBeneficiaryAction"
 		class="org.hisp.dhis.light.beneficiaryregistration.action.SaveBeneficiaryAction"
 		scope="prototype">
 		<property name="organisationUnitService"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitService"/>
-		<property name="patientService"
-			ref="org.hisp.dhis.patient.PatientService"/>
+			ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
+		<property name="patientService" ref="org.hisp.dhis.patient.PatientService" />
 	</bean>
-	
+
 	<!-- Beneficiary Enrollment -->
-	
+
 	<bean
 		id="org.hisp.dhis.light.beneficiaryenrollment.action.GetBeneficiaryEnrollmentOrganisationUnitAction"
 		class="org.hisp.dhis.light.beneficiaryenrollment.action.GetBeneficiaryEnrollmentOrganisationUnitAction"
 		scope="prototype">
-		<property name="currentUserService"
-			ref="org.hisp.dhis.user.CurrentUserService"/>
+		<property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
 	</bean>
-	
+
 	<bean
 		id="org.hisp.dhis.light.beneficiaryenrollment.action.GetBeneficiarySearchingFormAction"
 		class="org.hisp.dhis.light.beneficiaryenrollment.action.GetBeneficiarySearchingFormAction"
 		scope="prototype">
 	</bean>
-	
+
 	<bean
 		id="org.hisp.dhis.light.beneficiaryenrollment.action.SearchBeneficiaryAction"
 		class="org.hisp.dhis.light.beneficiaryenrollment.action.SearchBeneficiaryAction"
 		scope="prototype">
-		<property name="patientService"
-			ref="org.hisp.dhis.patient.PatientService"/>
+		<property name="patientService" ref="org.hisp.dhis.patient.PatientService" />
 	</bean>
-	
+
 	<bean
 		id="org.hisp.dhis.light.beneficiaryenrollment.action.GetEnrollmentProgramListAction"
 		class="org.hisp.dhis.light.beneficiaryenrollment.action.GetEnrollmentProgramListAction"
 		scope="prototype">
-		<property name="patientService"
-			ref="org.hisp.dhis.patient.PatientService"/>
-		<property name="programService"
-			ref="org.hisp.dhis.program.ProgramService"/>
-		<property name="programInstanceService"
-			ref="org.hisp.dhis.program.ProgramInstanceService"/>
+		<property name="patientService" ref="org.hisp.dhis.patient.PatientService" />
+		<property name="programService" ref="org.hisp.dhis.program.ProgramService" />
+		<property name="programInstanceService" ref="org.hisp.dhis.program.ProgramInstanceService" />
 	</bean>
-	
+
 	<bean
 		id="org.hisp.dhis.light.beneficiaryenrollment.action.GetProgramEnrollmentFormAction"
 		class="org.hisp.dhis.light.beneficiaryenrollment.action.GetProgramEnrollmentFormAction"
 		scope="prototype">
-		<property name="patientService"
-			ref="org.hisp.dhis.patient.PatientService"/>
-		<property name="programService"
-			ref="org.hisp.dhis.program.ProgramService"/>
+		<property name="patientService" ref="org.hisp.dhis.patient.PatientService" />
+		<property name="programService" ref="org.hisp.dhis.program.ProgramService" />
 	</bean>
-	
+
 	<bean
 		id="org.hisp.dhis.light.beneficiaryenrollment.action.SaveMobileProgramEnrollmentAction"
 		class="org.hisp.dhis.light.beneficiaryenrollment.action.SaveMobileProgramEnrollmentAction"
 		scope="prototype">
-		<property name="patientService"
-			ref="org.hisp.dhis.patient.PatientService"/>
-		<property name="programService"
-			ref="org.hisp.dhis.program.ProgramService"/>
-		<property name="programInstanceService"
-			ref="org.hisp.dhis.program.ProgramInstanceService"/>
+		<property name="patientService" ref="org.hisp.dhis.patient.PatientService" />
+		<property name="programService" ref="org.hisp.dhis.program.ProgramService" />
+		<property name="programInstanceService" ref="org.hisp.dhis.program.ProgramInstanceService" />
 		<property name="programStageInstanceService"
-			ref="org.hisp.dhis.program.ProgramStageInstanceService"/>
+			ref="org.hisp.dhis.program.ProgramStageInstanceService" />
 		<property name="formUtils"
-			ref="org.hisp.dhis.light.dataentry.utils.FormUtils"/>
+			ref="org.hisp.dhis.light.dataentry.utils.FormUtils" />
 	</bean>
-	
+
 	<!-- Single Event -->
-	
+
 	<bean id="org.hisp.dhis.light.singleevent.action.GetSingleEventAction"
 		class="org.hisp.dhis.light.singleevent.action.GetSingleEventAction"
 		scope="prototype">
-		<property name="programService"
-			ref="org.hisp.dhis.program.ProgramService"/>
+		<property name="programService" ref="org.hisp.dhis.program.ProgramService" />
 		<property name="organisationUnitService"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitService"/>
+			ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
 	</bean>
-	
+
 	<bean
 		id="org.hisp.dhis.light.singleevent.action.GetSingleEventBeneficiaryAction"
 		class="org.hisp.dhis.light.singleevent.action.GetSingleEventBeneficiaryAction"
 		scope="prototype">
-		<property name="programService"
-			ref="org.hisp.dhis.program.ProgramService"/>
+		<property name="programService" ref="org.hisp.dhis.program.ProgramService" />
 		<property name="organisationUnitService"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitService"/>
-		<property name="programInstanceService"
-			ref="org.hisp.dhis.program.ProgramInstanceService"/>
-		<property name="patientService"
-			ref="org.hisp.dhis.patient.PatientService"/>
+			ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
+		<property name="programInstanceService" ref="org.hisp.dhis.program.ProgramInstanceService" />
+		<property name="patientService" ref="org.hisp.dhis.patient.PatientService" />
 	</bean>
-	
+
 	<bean id="org.hisp.dhis.light.singleevent.action.GetSingleEventFormAction"
 		class="org.hisp.dhis.light.singleevent.action.GetSingleEventFormAction"
 		scope="prototype">
-		<property name="programService"
-			ref="org.hisp.dhis.program.ProgramService"/>
+		<property name="programService" ref="org.hisp.dhis.program.ProgramService" />
 	</bean>
-	
+
 	<bean id="org.hisp.dhis.light.singleevent.action.SaveSingleEventAction"
 		class="org.hisp.dhis.light.singleevent.action.SaveSingleEventAction"
 		scope="prototype">
-		<property name="programService"
-			ref="org.hisp.dhis.program.ProgramService"/>
-		<property name="programInstanceService"
-			ref="org.hisp.dhis.program.ProgramInstanceService"/>
+		<property name="programService" ref="org.hisp.dhis.program.ProgramService" />
+		<property name="programInstanceService" ref="org.hisp.dhis.program.ProgramInstanceService" />
 		<property name="programStageInstanceService"
-			ref="org.hisp.dhis.program.ProgramStageInstanceService"/>
-		<property name="patientService"
-			ref="org.hisp.dhis.patient.PatientService"/>
+			ref="org.hisp.dhis.program.ProgramStageInstanceService" />
+		<property name="patientService" ref="org.hisp.dhis.patient.PatientService" />
 		<property name="patientDataValueService"
-			ref="org.hisp.dhis.patientdatavalue.PatientDataValueService"/>
+			ref="org.hisp.dhis.patientdatavalue.PatientDataValueService" />
 		<property name="organisationUnitService"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitService"/>
-		<property name="util"
-			ref="org.hisp.dhis.light.utils.NamebasedUtils"/>
+			ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
+		<property name="util" ref="org.hisp.dhis.light.utils.NamebasedUtils" />
 	</bean>
-	
+
 	<!-- Dashboard -->
-	
+
 	<bean id="org.hisp.dhis.light.dashboard.action.ProvideContentAction"
 		class="org.hisp.dhis.light.dashboard.action.ProvideContentAction"
 		scope="prototype">
-		<property name="dashboardManager"
-			ref="org.hisp.dhis.dashboard.DashboardManager"/>
-		<property name="dashboardService"
-			ref="org.hisp.dhis.dashboard.DashboardService"/>
-		<property name="currentUserService"
-			ref="org.hisp.dhis.user.CurrentUserService"/>
+		<property name="dashboardManager" ref="org.hisp.dhis.dashboard.DashboardManager" />
+		<property name="dashboardService" ref="org.hisp.dhis.dashboard.DashboardService" />
+		<property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
 	</bean>
-	
+
 	<bean id="org.hisp.dhis.light.dashboard.action.GetReportAction"
-		class="org.hisp.dhis.light.dashboard.action.GetReportAction"
-		scope="prototype">
-		<property name="reportTableService"
-			ref="org.hisp.dhis.reporttable.ReportTableService"/>
+		class="org.hisp.dhis.light.dashboard.action.GetReportAction" scope="prototype">
+		<property name="reportTableService" ref="org.hisp.dhis.reporttable.ReportTableService" />
 	</bean>
-	
+
 	<bean id="org.hisp.dhis.light.dashboard.action.GetChartAction"
-		class="org.hisp.dhis.light.dashboard.action.GetChartAction"
-		scope="prototype">
-		<property name="chartService" ref="org.hisp.dhis.chart.ChartService"/>
+		class="org.hisp.dhis.light.dashboard.action.GetChartAction" scope="prototype">
+		<property name="chartService" ref="org.hisp.dhis.chart.ChartService" />
 	</bean>
-	
+
 	<bean id="org.hisp.dhis.light.dashboard.action.GetReportParamsAction"
 		class="org.hisp.dhis.light.dashboard.action.GetReportParamsAction"
 		scope="prototype">
-		<property name="reportTableService"
-			ref="org.hisp.dhis.reporttable.ReportTableService"/>
+		<property name="reportTableService" ref="org.hisp.dhis.reporttable.ReportTableService" />
 		<property name="selectionTreeManager"
-			ref="org.hisp.dhis.oust.manager.SelectionTreeManager"/>
+			ref="org.hisp.dhis.oust.manager.SelectionTreeManager" />
 	</bean>
-	
+
 	<!-- Settings -->
-	
+
 	<bean id="org.hisp.dhis.light.settings.action.GetSettingsAction"
-		class="org.hisp.dhis.light.settings.action.GetSettingsAction"
-		scope="prototype">
+		class="org.hisp.dhis.light.settings.action.GetSettingsAction" scope="prototype">
 		<property name="resourceBundleManager"
-			ref="org.hisp.dhis.i18n.resourcebundle.ResourceBundleManager"/>
-		<property name="localeManager"
-			ref="org.hisp.dhis.i18n.locale.LocaleManager"/>
-		<property name="currentUserService"
-			ref="org.hisp.dhis.user.CurrentUserService"/>
+			ref="org.hisp.dhis.i18n.resourcebundle.ResourceBundleManager" />
+		<property name="localeManager" ref="org.hisp.dhis.i18n.locale.LocaleManager" />
+		<property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
 	</bean>
-	
+
 	<bean id="org.hisp.dhis.light.settings.action.SaveSettingsFormAction"
 		class="org.hisp.dhis.light.settings.action.SaveSettingsFormAction"
 		scope="prototype">
-		<property name="localeManagerInterface"
-			ref="org.hisp.dhis.i18n.locale.LocaleManager"/>
-		<property name="currentUserService"
-			ref="org.hisp.dhis.user.CurrentUserService"/>
-		<property name="userService" ref="org.hisp.dhis.user.UserService"/>
+		<property name="localeManagerInterface" ref="org.hisp.dhis.i18n.locale.LocaleManager" />
+		<property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
+		<property name="userService" ref="org.hisp.dhis.user.UserService" />
 	</bean>
-	
+
 	<!-- Messages -->
-	
+
 	<bean id="org.hisp.dhis.light.message.action.GetMessagesAction"
-		class="org.hisp.dhis.light.message.action.GetMessagesAction"
-		scope="prototype">
-		<property name="messageService"
-			ref="org.hisp.dhis.message.MessageService"/>
+		class="org.hisp.dhis.light.message.action.GetMessagesAction" scope="prototype">
+		<property name="messageService" ref="org.hisp.dhis.message.MessageService" />
 	</bean>
-	
+
 	<bean id="org.hisp.dhis.light.message.action.GetMessageAction"
-		class="org.hisp.dhis.light.message.action.GetMessageAction"
-		scope="prototype">
-		<property name="messageService"
-			ref="org.hisp.dhis.message.MessageService"/>
-		<property name="currentUserService"
-			ref="org.hisp.dhis.user.CurrentUserService"/>
+		class="org.hisp.dhis.light.message.action.GetMessageAction" scope="prototype">
+		<property name="messageService" ref="org.hisp.dhis.message.MessageService" />
+		<property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
 	</bean>
-	
+
 	<bean id="org.hisp.dhis.light.message.action.SendReplyAction"
-		class="org.hisp.dhis.light.message.action.SendReplyAction"
-		scope="prototype">
-		<property name="messageService"
-			ref="org.hisp.dhis.message.MessageService"/>
+		class="org.hisp.dhis.light.message.action.SendReplyAction" scope="prototype">
+		<property name="messageService" ref="org.hisp.dhis.message.MessageService" />
 	</bean>
-	
+
 	<bean id="org.hisp.dhis.light.message.action.SendFeedbackAction"
-		class="org.hisp.dhis.light.message.action.SendFeedbackAction"
-		scope="prototype">
-		<property name="messageService"
-			ref="org.hisp.dhis.message.MessageService"/>
+		class="org.hisp.dhis.light.message.action.SendFeedbackAction" scope="prototype">
+		<property name="messageService" ref="org.hisp.dhis.message.MessageService" />
+	</bean>
+	<bean
+		id="org.hisp.dhis.light.anonymous.action.GetAllAnonymousProgramAction"
+		class="org.hisp.dhis.light.anonymous.action.GetAllAnonymousProgramAction"
+		scope="prototype">
+		<property name="programService" ref="org.hisp.dhis.program.ProgramService" />
+	</bean>
+
+	<bean id="org.hisp.dhis.light.anonymous.action.ShowAnonymousFormAction"
+		class="org.hisp.dhis.light.anonymous.action.ShowAnonymousFormAction"
+		scope="prototype">
+		<property name="programService" ref="org.hisp.dhis.program.ProgramService" />
+	</bean>
+
+	<bean id="org.hisp.dhis.light.anonymous.action.SaveAnonymousProgramAction"
+		class="org.hisp.dhis.light.anonymous.action.SaveAnonymousProgramAction"
+		scope="prototype">
+		<property name="programService" ref="org.hisp.dhis.program.ProgramService" />
+		<property name="util" ref="org.hisp.dhis.light.utils.NamebasedUtils" />
+		<property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
+		<property name="programStageInstanceService" ref="org.hisp.dhis.program.ProgramStageInstanceService" />
+		<property name="programInstanceService" ref="org.hisp.dhis.program.ProgramInstanceService" />
+		<property name="patientDataValueService" ref="org.hisp.dhis.patientdatavalue.PatientDataValueService" />
 	</bean>
-	
+
 </beans>

=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/resources/struts.xml'
--- dhis-2/dhis-web/dhis-web-light/src/main/resources/struts.xml	2012-06-11 10:11:21 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/resources/struts.xml	2012-06-18 10:29:46 +0000
@@ -3,85 +3,89 @@
     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
     "http://struts.apache.org/dtds/struts-2.0.dtd";>
 <struts>
-  <include file="dhis-web-commons.xml" />
+	<include file="dhis-web-commons.xml" />
 
-	<package name="dhis-web-light" extends="dhis-web-commons" namespace="/mobile">
-		
+	<package name="dhis-web-light" extends="dhis-web-commons"
+		namespace="/mobile">
+
 		<action name="index" class="org.hisp.dhis.light.action.MenuAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/menu.vm</param>
 		</action>
-		
+
 		<!-- data entry -->
-		
+
 		<action name="selectOrganisationUnit"
 			class="org.hisp.dhis.light.dataentry.action.GetOrganisationUnitsAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/selectOrganisationUnit.vm</param>
 			<result name="selectDataSet" type="redirect">
-				/mobile/selectDataSet.action?organisationUnitId=${organisationUnitId}</result>
+				/mobile/selectDataSet.action?organisationUnitId=${organisationUnitId}
+			</result>
 			<result name="selectPeriod" type="redirect">
-				/mobile/selectPeriod.action?organisationUnitId=${organisationUnitId}&amp;dataSetId=${dataSetId}</result>
+				/mobile/selectPeriod.action?organisationUnitId=${organisationUnitId}&amp;dataSetId=${dataSetId}
+			</result>
 		</action>
-		
+
 		<action name="selectDataSet"
 			class="org.hisp.dhis.light.dataentry.action.GetDataSetsAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/selectDataSet.vm</param>
 			<result name="selectPeriod" type="redirect">
-				/mobile/selectPeriod.action?organisationUnitId=${organisationUnitId}&amp;dataSetId=${dataSetId}</result>
+				/mobile/selectPeriod.action?organisationUnitId=${organisationUnitId}&amp;dataSetId=${dataSetId}
+			</result>
 		</action>
-		
+
 		<action name="selectPeriod"
 			class="org.hisp.dhis.light.dataentry.action.GetPeriodsAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/selectPeriod.vm</param>
 		</action>
-		
+
 		<action name="dataEntry"
 			class="org.hisp.dhis.light.dataentry.action.GetDataSetOverviewAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/dataEntryOverview.vm</param>
 		</action>
-		
+
 		<action name="dataEntrySection"
 			class="org.hisp.dhis.light.dataentry.action.GetSectionFormAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/dataEntrySection.vm</param>
 		</action>
-		
+
 		<action name="saveSectionForm"
 			class="org.hisp.dhis.light.dataentry.action.SaveSectionFormAction">
 			<result name="success" type="redirect">
-				/mobile/dataEntry.action?organisationUnitId=${organisationUnitId}&amp;dataSetId=${dataSetId}&amp;periodId=${periodId}&amp;sectionId=${sectionId}&amp;validated=${validated}</result>
+				/mobile/dataEntry.action?organisationUnitId=${organisationUnitId}&amp;dataSetId=${dataSetId}&amp;periodId=${periodId}&amp;sectionId=${sectionId}&amp;validated=${validated}
+			</result>
 			<result name="error" type="velocity">/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/dataEntrySection.vm</param>
 			<param name="requiredAuthorities">
 				F_DATAVALUE_ADD,F_DATAVALUE_UPDATE,F_DATAVALUE_DELETE</param>
 		</action>
-		
+
 		<action name="markComplete"
 			class="org.hisp.dhis.light.dataentry.action.MarkComplete">
 			<result name="success" type="redirect">
-				/mobile/index.action?organisationUnitId=${organisationUnitId}&amp;dataSetId=${dataSetId}&amp;periodId=${periodId}&amp;complete=true</result>
+				/mobile/index.action?organisationUnitId=${organisationUnitId}&amp;dataSetId=${dataSetId}&amp;periodId=${periodId}&amp;complete=true
+			</result>
 		</action>
-		
-		<!-- Namebased Data Entry -->
-		
-		<action name="trackingMenu"
-			class="org.hisp.dhis.light.action.NoAction">
+
+		<!-- Namebased Data Entry -->
+
+		<action name="trackingMenu" class="org.hisp.dhis.light.action.NoAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
 			<param name="page">
 				/dhis-web-light/trackingMenu.vm</param>
-		</action>
-		
+		</action>
 		<action name="selectNamebasedOrganisationUnit"
 			class="org.hisp.dhis.light.namebaseddataentry.action.GetNamebasedOrganisationUnitsAction">
 			<result name="success" type="velocity">
@@ -89,60 +93,63 @@
 			<param name="page">
 				/dhis-web-light/namebased/selectNamebasedOrganisationUnits.vm</param>
 		</action>
-		
+
 		<action name="selectActivityType"
 			class="org.hisp.dhis.light.namebaseddataentry.action.ShowActivityTypeAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/namebased/selectActivityType.vm</param>
 		</action>
-		
+
 		<action name="selectBeneficiary"
 			class="org.hisp.dhis.light.namebaseddataentry.action.GetBeneficiaryListAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/beneficiaryList.vm</param>
 		</action>
-		
+
 		<action name="selectActivity"
 			class="org.hisp.dhis.light.namebaseddataentry.action.GetActivityListAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/namebased/selectActivity.vm</param>
 		</action>
-		
+
 		<action name="showProgramStageForm"
 			class="org.hisp.dhis.light.namebaseddataentry.action.GetProgramStageFormAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/namebased/programStageForm.vm</param>
 		</action>
-		
+
 		<action name="showCompletedProgramStageForm"
 			class="org.hisp.dhis.light.namebaseddataentry.action.GetProgramStageFormAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/namebased/completedProgramStageForm.vm</param>
 		</action>
-		
+
 		<action name="saveProgramStageForm"
 			class="org.hisp.dhis.light.namebaseddataentry.action.SaveProgramStageFormAction">
 			<result name="success" type="redirect">
-				/mobile/selectBeneficiary.action?organisationUnitId=${orgUnitId}&amp;current=${current}&amp;validated=true</result>
+				/mobile/selectBeneficiary.action?organisationUnitId=${orgUnitId}&amp;current=${current}&amp;validated=true
+			</result>
 			<result name="success_back_to_programstage" type="redirect">
-				/mobile/showPatientProgramStageList.action?patientId=${patientId}&amp;programInstanceId=${programInstanceId}&amp;programId=${programId}&amp;validated=true</result>
-			<result name="register_next_duedate" type="redirect">showRepeatableEventRegistrationForm.action?programInstanceId=${programInstanceId}&amp;programStageId=${programStageId}&amp;currentProgramStageInstanceId=${programStageInstanceId}</result>
+				/mobile/showPatientProgramStageList.action?patientId=${patientId}&amp;programInstanceId=${programInstanceId}&amp;programId=${programId}&amp;validated=true
+			</result>
+			<result name="register_next_duedate" type="redirect">showRepeatableEventRegistrationForm.action?programInstanceId=${programInstanceId}&amp;programStageId=${programStageId}&amp;currentProgramStageInstanceId=${programStageInstanceId}
+			</result>
 			<result name="error" type="velocity">/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/namebased/programStageForm.vm</param>
 		</action>
-		
+
 		<action name="showBeneficiaryDetail"
 			class="org.hisp.dhis.light.namebaseddataentry.action.GetBeneficiaryDetailAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/namebased/beneficiaryDetail.vm</param>
 		</action>
-		
+
 		<action name="showBeneficiaryDetailInSearchPage"
 			class="org.hisp.dhis.light.namebaseddataentry.action.GetBeneficiaryDetailAction">
 			<result name="success" type="velocity">
@@ -150,7 +157,7 @@
 			<param name="page">/dhis-web-light/namebased/beneficiaryDetail.vm</param>
 			<param name="previouspage">showPatientProgramList.action?patientId=${patientId}</param>
 		</action>
-		
+
 		<action name="showFindBeneficiaryForm"
 			class="org.hisp.dhis.light.namebaseddataentry.action.GetFindBeneficiaryFormAction">
 			<result name="success" type="velocity">
@@ -158,7 +165,7 @@
 			<param name="page">
 				/dhis-web-light/namebased/findBeneficiaryForm.vm</param>
 		</action>
-		
+
 		<action name="showFindRelatedPatientForm"
 			class="org.hisp.dhis.light.namebaseddataentry.action.GetFindBeneficiaryFormAction">
 			<result name="success" type="velocity">
@@ -166,16 +173,17 @@
 			<param name="page">
 				/dhis-web-light/namebased/findRelatedPatientForm.vm</param>
 		</action>
-		
+
 		<action name="findBeneficiary"
 			class="org.hisp.dhis.light.namebaseddataentry.action.FindBeneficiarytAction">
-			<result name="redirect" type="redirect">showPatientProgramList.action?patientId=${patientId}</result>
+			<result name="redirect" type="redirect">showPatientProgramList.action?patientId=${patientId}
+			</result>
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
 			<param name="page">
 				/dhis-web-light/namebased/beneficiaryList.vm</param>
 		</action>
-		
+
 		<action name="showAddNewRelationshipForm"
 			class="org.hisp.dhis.light.namebaseddataentry.action.GetAddNewRelationshipFormAction">
 			<result name="success" type="velocity">
@@ -183,21 +191,23 @@
 			<param name="page">
 				/dhis-web-light/namebased/addNewRelationshipForm.vm</param>
 		</action>
-		
+
 		<action name="findRelatedPatient"
 			class="org.hisp.dhis.light.namebaseddataentry.action.FindBeneficiarytAction">
-			<result name="redirect" type="redirect">showAddNewRelationshipForm.action?originalPatientId=${originalPatientId}&amp;relatedPatientId=${patientId}&amp;relationshipTypeId=${relationshipTypeId}</result>
+			<result name="redirect" type="redirect">showAddNewRelationshipForm.action?originalPatientId=${originalPatientId}&amp;relatedPatientId=${patientId}&amp;relationshipTypeId=${relationshipTypeId}
+			</result>
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
 			<param name="page">
 				/dhis-web-light/namebased/relatedPatientList.vm</param>
 		</action>
-		
+
 		<action name="addNewRelationship"
 			class="org.hisp.dhis.light.namebaseddataentry.action.AddNewRalationshipAction">
-			<result name="redirect" type="redirect">showPatientProgramList.action?patientId=${originalPatientId}&amp;validated=true</result>
+			<result name="redirect" type="redirect">showPatientProgramList.action?patientId=${originalPatientId}&amp;validated=true
+			</result>
 		</action>
-		
+
 		<action name="showPatientProgramList"
 			class="org.hisp.dhis.light.namebaseddataentry.action.GetPatientProgramListAction">
 			<result name="success" type="velocity">
@@ -205,7 +215,7 @@
 			<param name="page">
 				/dhis-web-light/namebased/beneficiaryProgramList.vm</param>
 		</action>
-		
+
 		<action name="showPatientProgramStageList"
 			class="org.hisp.dhis.light.namebaseddataentry.action.GetProgramStageListAction">
 			<result name="success" type="velocity">
@@ -213,7 +223,7 @@
 			<param name="page">
 				/dhis-web-light/namebased/beneficiaryProgramStageList.vm</param>
 		</action>
-		
+
 		<action name="showRepeatableEventRegistrationForm"
 			class="org.hisp.dhis.light.namebaseddataentry.action.GetRepeatableEventRegistrationFormAction">
 			<result name="success" type="velocity">
@@ -221,14 +231,15 @@
 			<param name="page">
 				/dhis-web-light/namebased/repeatableEventRegistrationForm.vm</param>
 		</action>
-		
+
 		<action name="saveRepeatableEvent"
 			class="org.hisp.dhis.light.namebaseddataentry.action.SaveRepeatableEventAction">
-			<result name="success" type="redirect">showPatientProgramStageList.action?patientId=${patientId}&amp;programInstanceId=${programInstanceId}&amp;programId=${programId}&amp;validated=false</result>
+			<result name="success" type="redirect">showPatientProgramStageList.action?patientId=${patientId}&amp;programInstanceId=${programInstanceId}&amp;programId=${programId}&amp;validated=false
+			</result>
 		</action>
-		
+
 		<!-- Beneficiary Registration -->
-		
+
 		<action name="selectRegistrationOrganisationUnit"
 			class="org.hisp.dhis.light.beneficiaryregistration.action.GetBeneficiaryRegistrationOrganisationUnitAction">
 			<result name="success" type="velocity">
@@ -236,7 +247,7 @@
 			<param name="page">
 				/dhis-web-light/registration/selectRegistrationOrganisationUnits.vm</param>
 		</action>
-		
+
 		<action name="registerBeneficiary"
 			class="org.hisp.dhis.light.beneficiaryregistration.action.RegisterBeneficiaryAction">
 			<result name="success" type="velocity">
@@ -244,7 +255,7 @@
 			<param name="page">
 				/dhis-web-light/registration/beneficiaryRegistrationForm.vm</param>
 		</action>
-		
+
 		<action name="saveBeneficiary"
 			class="org.hisp.dhis.light.beneficiaryregistration.action.SaveBeneficiaryAction">
 			<result name="success" type="velocity">
@@ -252,9 +263,9 @@
 			<param name="page">
 				/dhis-web-light/registration/beneficiaryRegistrationForm.vm</param>
 		</action>
-		
+
 		<!-- Beneficiary Enrollment -->
-		
+
 		<action name="selectEnrollmentOrganisationUnit"
 			class="org.hisp.dhis.light.beneficiaryenrollment.action.GetBeneficiaryEnrollmentOrganisationUnitAction">
 			<result name="success" type="velocity">
@@ -262,7 +273,7 @@
 			<param name="page">
 				/dhis-web-light/enrollment/selectEnrollmentOrganisationUnits.vm</param>
 		</action>
-		
+
 		<action name="showBeneficiarySearchingForm"
 			class="org.hisp.dhis.light.beneficiaryenrollment.action.GetBeneficiaryEnrollmentOrganisationUnitAction">
 			<result name="success" type="velocity">
@@ -270,111 +281,121 @@
 			<param name="page">
 				/dhis-web-light/enrollment/beneficiarySearchingForm.vm</param>
 		</action>
-		
+
 		<action name="searchBeneficiary"
 			class="org.hisp.dhis.light.beneficiaryenrollment.action.SearchBeneficiaryAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
-			<param name="page"> /dhis-web-light/enrollment/beneficiarySearchResult.vm</param>
+			<param name="page">
+				/dhis-web-light/enrollment/beneficiarySearchResult.vm</param>
 		</action>
-		
+
 		<action name="selectEnrollmentProgram"
 			class="org.hisp.dhis.light.beneficiaryenrollment.action.GetEnrollmentProgramListAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
-			<param name="page"> /dhis-web-light/enrollment/enrollmentProgramList.vm</param>
+			<param name="page">
+				/dhis-web-light/enrollment/enrollmentProgramList.vm</param>
 		</action>
-		
+
 		<action name="showProgramEnrollmentForm"
 			class="org.hisp.dhis.light.beneficiaryenrollment.action.GetProgramEnrollmentFormAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
-			<param name="page"> /dhis-web-light/enrollment/programEnrollmentForm.vm</param>
+			<param name="page">
+				/dhis-web-light/enrollment/programEnrollmentForm.vm</param>
 		</action>
-		
+
 		<action name="saveMobileProgramEnrollment"
 			class="org.hisp.dhis.light.beneficiaryenrollment.action.SaveMobileProgramEnrollmentAction">
 			<result name="success" type="redirect">
-				/mobile/selectEnrollmentProgram.action?patientId=${patientId}&amp;validated=true</result>
+				/mobile/selectEnrollmentProgram.action?patientId=${patientId}&amp;validated=true
+			</result>
 			<result name="error" type="velocity">/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/enrollment/programEnrollmentForm.vm</param>
 		</action>
-		
+
 		<!-- Single Event -->
-		
+
 		<action name="selectSingleEvent"
 			class="org.hisp.dhis.light.singleevent.action.GetSingleEventAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/singleevent/selectSingleEvent.vm</param>
 		</action>
-		
+
 		<action name="selectSingleEventBeneficiary"
 			class="org.hisp.dhis.light.singleevent.action.GetSingleEventBeneficiaryAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/singleevent/selectSingleEventBeneficiary.vm</param>
 		</action>
-		
+
 		<action name="showSingleEventForm"
 			class="org.hisp.dhis.light.singleevent.action.GetSingleEventFormAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/singleevent/singleEventForm.vm</param>
 		</action>
-		
+
 		<action name="saveSingleEvent"
 			class="org.hisp.dhis.light.singleevent.action.SaveSingleEventAction">
 			<result name="success" type="redirect">
-				/mobile/selectSingleEventBeneficiary.action?programId=${programId}&amp;organisationUnitId=${organisationUnitId}&amp;validated=true</result>
+				/mobile/selectSingleEventBeneficiary.action?programId=${programId}&amp;organisationUnitId=${organisationUnitId}&amp;validated=true
+			</result>
 			<result name="error" type="velocity">/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/singleevent/singleEventForm.vm</param>
 		</action>
-		
+
 		<!-- Reports -->
-		
+
 		<action name="reports"
 			class="org.hisp.dhis.light.dashboard.action.ProvideContentAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/reports.vm</param>
 		</action>
-		
+
 		<action name="dashboard-charts"
 			class="org.hisp.dhis.light.dashboard.action.ProvideContentAction">
 			<result name="success" type="velocity">
-				/dhis-web-light/dashboard_page.vm</result>
+				/dhis-web-light/dashboard_page.vm
+			</result>
 			<param name="page">/dhis-web-light/dashboard_charts.vm</param>
 		</action>
-		
+
 		<action name="dashboard-reports"
 			class="org.hisp.dhis.light.dashboard.action.ProvideContentAction">
 			<result name="success" type="velocity">
-				/dhis-web-light/dashboard_page.vm</result>
+				/dhis-web-light/dashboard_page.vm
+			</result>
 			<param name="page">/dhis-web-light/dashboard_reports.vm</param>
 		</action>
-		
+
 		<action name="dashboard-documents"
 			class="org.hisp.dhis.light.dashboard.action.ProvideContentAction">
 			<result name="success" type="velocity">
-				/dhis-web-light/dashboard_page.vm</result>
+				/dhis-web-light/dashboard_page.vm
+			</result>
 			<param name="page">/dhis-web-light/dashboard_documents.vm</param>
 		</action>
-		
+
 		<action name="getReport"
 			class="org.hisp.dhis.light.dashboard.action.GetReportAction">
 			<result name="success" type="velocity">
-				/dhis-web-light/dashboard_page.vm</result>
+				/dhis-web-light/dashboard_page.vm
+			</result>
 			<param name="page">/dhis-web-commons/ajax/htmlGrid.vm</param>
 		</action>
-		
+
 		<action name="getReportParams"
 			class="org.hisp.dhis.light.dashboard.action.GetReportParamsAction">
 			<result name="success" type="velocity">
-				/dhis-web-light/dashboard_page.vm</result>
+				/dhis-web-light/dashboard_page.vm
+			</result>
 			<param name="page">/dhis-web-light/inputReportParamsForm.vm</param>
 		</action>
-		
+
 		<action name="getChart"
 			class="org.hisp.dhis.light.dashboard.action.GetChartAction">
 			<result name="success" type="chart">
@@ -382,53 +403,75 @@
 				<param name="height">800</param>
 			</result>
 		</action>
-		
+
 		<!-- Settings -->
-		
+
 		<action name="settings"
 			class="org.hisp.dhis.light.settings.action.GetSettingsAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/settings.vm</param>
 		</action>
-		
+
 		<action name="saveSettingsForm"
 			class="org.hisp.dhis.light.settings.action.SaveSettingsFormAction">
 			<result name="success" type="redirect">/mobile/index.action</result>
 		</action>
-		
+
 		<!-- Messages -->
-		
+
 		<action name="messages"
 			class="org.hisp.dhis.light.message.action.GetMessagesAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/messages.vm</param>
 		</action>
-		
+
 		<action name="reply"
 			class="org.hisp.dhis.light.message.action.GetMessageAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/message.vm</param>
 		</action>
-		
+
 		<action name="sendReply"
 			class="org.hisp.dhis.light.message.action.SendReplyAction">
 			<result name="success" type="redirect">
 				/mobile/messages.action</result>
 		</action>
-		
+
 		<action name="feedback" class="org.hisp.dhis.light.action.NoAction">
 			<result name="success" type="velocity">
 				/dhis-web-light/main.vm</result>
 			<param name="page">/dhis-web-light/feedback.vm</param>
 		</action>
-		
+
 		<action name="sendFeedback"
 			class="org.hisp.dhis.light.message.action.SendFeedbackAction">
 			<result name="success" type="redirect">/mobile/index.action</result>
+		</action>
+		
+		<!-- Anonymous -->
+		<action name="anonymous"
+			class="org.hisp.dhis.light.anonymous.action.GetAllAnonymousProgramAction">
+			<result name="success" type="velocity">
+				/dhis-web-light/main.vm</result>
+			<param name="page">/dhis-web-light/anonymous/anonymousProgramSelection.vm</param>
+		</action>
+
+		<action name="showAnonymousForm"
+			class="org.hisp.dhis.light.anonymous.action.ShowAnonymousFormAction">
+			<result name="success" type="velocity">
+				/dhis-web-light/main.vm</result>
+			<param name="page">/dhis-web-light/anonymous/anonymousProgramForm.vm</param>
+		</action>
+
+		<action name="saveAnonymousForm"
+			class="org.hisp.dhis.light.anonymous.action.SaveAnonymousProgramAction">
+			<result name="success" type="redirect">
+				/mobile/anonymous.action</result>
+			<result name="error" type="velocity">/dhis-web-light/main.vm</result>
+			<param name="page">/dhis-web-light/anonymous/anonymousProgramForm.vm</param>
 		</action>
-		
 	</package>
 </struts>

=== added directory 'dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/anonymous'
=== added file 'dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/anonymous/anonymousProgramForm.vm'
--- dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/anonymous/anonymousProgramForm.vm	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/anonymous/anonymousProgramForm.vm	2012-06-18 10:29:46 +0000
@@ -0,0 +1,107 @@
+
+<h2>Anonymous Form</h2>
+
+#set( $typeViolationsSize = $typeViolations.size() )
+#if( $typeViolationsSize > 0 )
+<div class="header-box" align="center">
+	<h3 style="text-align: left; background-color: #990000; color: white;">$i18n.getString("warnings_and_errors")</h3>
+	<p style="text-align: left;">
+		$typeViolationsSize $i18n.getString("type_violation_errors"). <br />
+	</p>
+</div>	
+#end
+
+<form action="saveAnonymousForm.action" method="POST">
+<input type="hidden" value="$programId" name="programId" />
+<div class="header-box" align="center">
+	<p style="text-align: left;">
+	#foreach( $dataElement in $dataElements)
+		#if( $dataElement.shortName )
+			#set( $dataElementName = $dataElement.shortName )
+		#else
+			#set( $dataElementName = $dataElement.name )
+		#end		
+		#if (! $dataElement.getOptionSet())
+
+			#set( $key = "DE${dataElement.id}" )
+			
+			<label>$encoder.htmlEncode( $dataElementName ) #if($dataElement.type=="date") [yyyy-MM-dd] #end
+			</label><br/>
+			
+			#if( $typeViolations.get( $key ) )
+                #set( $typeViolation = $typeViolations.get( $key ) )
+            	<br /><span style="color: #990000;">$prevDataValues.get($key) $i18n.getString($typeViolation)</span>
+            #end
+			
+			#if($dataElement.type=="bool")
+				<select name="$key">
+					<option value="">$i18n.getString("please_select")</option>
+					<option #if( $prevDataValues.get( $key ) == "true" ) selected="selected" #end value="true">$i18n.getString("yes")</option>
+					<option #if( $prevDataValues.get( $key ) == "false" ) selected="selected" #end value="false">$i18n.getString("no")</option>
+				</select>
+			#else
+				<input type=
+				#if($dataElement.type=="string") 
+					"text"
+				#elseif ($dataElement.type=="int" ) 
+					"text" 
+				#else 
+					"$dataElement.type" 
+				#end 
+				name="$key" value="$!prevDataValues.get($key)" />
+			#end	
+			
+		#elseif ($dataElement.getOptionSet())
+		
+			#set( $options = $dataElement.getOptionSet().getOptions() )
+			#set( $key = "DE${dataElement.id}" )
+			
+			$dataElementName
+			
+			#if( $typeViolations.get( $key ) )
+				#set( $typeViolation = $typeViolations.get( $key ) )
+				<br /><span style="color: #990000;"> $prevDataValues.get($key) $i18n.getString($typeViolation)</span>
+            #end
+			
+			<select type=
+			#if($dataElement.type=="string") 
+				"text"
+			#elseif($dataElement.type=="int" ) 
+				"text"
+			#else 
+				"$dataElement.type"
+			#end 
+			name="$key" />
+
+			#set( $selected=false )	
+			
+			#foreach ($option in $options)
+				<option value="$option"> $option </option>
+			#end
+			
+			#if( !$selected ) 
+				<option selected > $i18n.getString("select_option") </option>
+			#end
+			</select>
+		#end
+	#end
+	</p>
+</div>
+
+<div class="header-box" align="center">
+	<p>
+		<input type="submit" style="width: 100%;" value="$i18n.getString('save')"/>
+	</p>
+</div>
+
+</form>
+
+<div id="footer">
+<h2>$i18n.getString( "navigate_to" )</h2>
+<ul>
+    <li><a href="feedback.action">$i18n.getString("feedback")</a></li>
+	<li><a href="../dhis-web-commons-security/logout.action">$i18n.getString("logout")</a></li>
+    <li style="padding-top: 5px;"><a href="../">$i18n.getString("desktop_version")</a></li>
+</ul>
+</div>
+

=== added file 'dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/anonymous/anonymousProgramSelection.vm'
--- dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/anonymous/anonymousProgramSelection.vm	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/anonymous/anonymousProgramSelection.vm	2012-06-18 10:29:46 +0000
@@ -0,0 +1,18 @@
+
+<h2>Anonymous Menu</h2>
+<p>
+<ul>
+#foreach( $program in $programs)
+	<li><a href="showAnonymousForm.action?programId=$program.id">$program.name</a></li>
+#end
+</ul>
+</p>
+
+<div id="footer">
+<h2>$i18n.getString( "navigate_to" )</h2>
+<ul>
+    <li><a href="feedback.action">$i18n.getString("feedback")</a></li>
+	<li><a href="../dhis-web-commons-security/logout.action">$i18n.getString("logout")</a></li>
+    <li style="padding-top: 5px;"><a href="../">$i18n.getString("desktop_version")</a></li>
+</ul>
+</div>
\ No newline at end of file

=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/menu.vm'
--- dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/menu.vm	2012-05-15 07:40:06 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/menu.vm	2012-06-18 10:29:46 +0000
@@ -25,6 +25,7 @@
     <li><a href="messages.action">$i18n.getString( "messages" ) #if($unreadMessageConversationCount > 0)($unreadMessageConversationCount)#end</a></li>
     <li><a href="reports.action">$i18n.getString( "reports" )</a></li>
     <li><a href="settings.action">$i18n.getString( "settings" )</a></li>
+	<li><a href="anonymous.action">Anonymous</a></li>
 </ul>
 </p>
 

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-mobile/src/main/webapp/dhis-web-maintenance-mobile/receiveSMSPage.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-mobile/src/main/webapp/dhis-web-maintenance-mobile/receiveSMSPage.vm	2012-06-06 07:48:54 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-mobile/src/main/webapp/dhis-web-maintenance-mobile/receiveSMSPage.vm	2012-06-18 10:29:46 +0000
@@ -129,6 +129,7 @@
 				function ( json )
 				{
 					if ( json.response == "success" ) {
+						//window.confirm( jQuery( 'a[id=' + idText + ']' ).html() );
 						//jQuery( 'label[id=' + idText + '] > a' ).html( getFieldValue( idInput ) );
 						jQuery( 'a[id=' + idText + ']' ).html( getFieldValue( idInput ) );
 						showSuccessMessage( "$i18n.getString( 'update_success' )" );

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-mobile/src/main/webapp/dhis-web-maintenance-mobile/showSentSMSPage.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-mobile/src/main/webapp/dhis-web-maintenance-mobile/showSentSMSPage.vm	2012-06-04 06:37:01 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-mobile/src/main/webapp/dhis-web-maintenance-mobile/showSentSMSPage.vm	2012-06-18 10:29:46 +0000
@@ -1,6 +1,5 @@
 <h3>$i18n.getString( 'list_sent_SMS' )</h3>
 <form id="sentSMSPage" name="sentSMSPage" action="showSentPage.action" method="post" >
-$ListOutboundSMS.size()
 <table id="detailsSentSMSList" class="listTable" style="width:800px">
 	<thead>
 		<th style="text-align:center">$i18n.getString( "no." )</th>