← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 2390: Moved service part of user group functionality to core (https://blueprints.launchpad.net/dhis2/+s...

 

------------------------------------------------------------
revno: 2390
committer: Jo Størset <storset@xxxxxxxxx>
branch nick: dhis2
timestamp: Thu 2010-12-16 23:08:32 +0530
message:
  Moved service part of user group functionality to core (https://blueprints.launchpad.net/dhis2/+spec/user-groups)
removed:
  dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user/
  dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user/UserGroup.java
  dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user/UserGroupService.java
  dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user/UserGroupStore.java
  dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user/impl/
  dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user/impl/DefaultUserGroupService.java
  dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user/impl/HiberntateUserGroupStore.java
added:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroup.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroupService.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroupStore.java
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/DefaultUserGroupService.java
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/hibernate/HiberntateUserGroupStore.java
modified:
  dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml
  dhis-mobile/dhis-service-mobile/src/main/resources/META-INF/dhis/beans.xml


--
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
=== added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroup.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroup.java	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroup.java	2010-12-16 17:38:32 +0000
@@ -0,0 +1,109 @@
+package org.hisp.dhis.user;
+
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Set;
+
+public class UserGroup implements Serializable
+{
+
+    /**
+     * id is the primary key which is auto generated
+     */
+    private int id;
+
+    /**
+     * The name of this Object. Required and unique.
+     */
+    private String name;
+    
+    /**
+     * Set of related users
+     */
+    private Set<User> members = new HashSet<User>();
+    
+    // -------------------------------------------------------------------------
+    // Constructors
+    // -------------------------------------------------------------------------     
+
+    public UserGroup()
+    {
+        
+    }
+    
+    public UserGroup( String name )
+    {
+        this.name = name;
+    }
+
+    public UserGroup( String name, Set<User> members )
+    {
+        this.name = name;
+        this.members = members;
+    }
+
+    
+    // -------------------------------------------------------------------------
+    // hashCode, equals and toString
+    // -------------------------------------------------------------------------     
+
+    public boolean equals( Object object )
+    {
+        if ( this == object )
+        {
+            return true;
+        }
+        else if ( object == null )
+        {
+            return false;
+        }
+        else if ( !( object instanceof UserGroup ) )
+        {
+            return false;
+        }
+
+        final UserGroup userGroup = (UserGroup) object;
+
+        return name.equals( userGroup.getName() );
+    }
+
+    public int hashCode()
+    {
+        return name.hashCode();
+    }
+
+    // -------------------------------------------------------------------------
+    // Getters and setters
+    // -------------------------------------------------------------------------
+
+    public int getId()
+    {
+        return id;
+    }
+
+    public void setId( int id )
+    {
+        this.id = id;
+    }
+
+    public String getName()
+    {
+        return name;
+    }
+
+    public void setName( String name )
+    {
+        this.name = name;
+    }
+
+    public Set<User> getMembers()
+    {
+        return members;
+    }
+
+    public void setMembers( Set<User> members )
+    {
+        this.members = members;
+    }
+    
+}

=== added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroupService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroupService.java	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroupService.java	2010-12-16 17:38:32 +0000
@@ -0,0 +1,21 @@
+package org.hisp.dhis.user;
+
+import java.util.Collection;
+
+
+public interface UserGroupService
+{
+    String ID = UserGroupService.class.getName();
+
+    int addUserGroup( UserGroup userGroup );
+    
+    void updateUserGroup( UserGroup userGroup );
+    
+    void deleteUserGroup( UserGroup userGroup );
+    
+    UserGroup getUserGroup( int userGroupId );
+    
+    Collection<UserGroup> getAllUserGroups();
+    
+    UserGroup getUserGroupByName( String name );
+}

=== added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroupStore.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroupStore.java	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroupStore.java	2010-12-16 17:38:32 +0000
@@ -0,0 +1,21 @@
+package org.hisp.dhis.user;
+
+import java.util.Collection;
+
+
+public interface UserGroupStore
+{
+    String ID = UserGroupStore.class.getName();
+    
+    int addUserGroup( UserGroup userGroup );
+    
+    void updateUserGroup( UserGroup userGroup );
+    
+    void deleteUserGroup( UserGroup userGroup );
+    
+    UserGroup getUserGroup( int userGroupId );
+    
+    Collection<UserGroup> getAllUserGroups();
+    
+    UserGroup getUserGroupByName( String name );
+}

=== added file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/DefaultUserGroupService.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/DefaultUserGroupService.java	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/DefaultUserGroupService.java	2010-12-16 17:38:32 +0000
@@ -0,0 +1,66 @@
+package org.hisp.dhis.user;
+
+import java.util.Collection;
+
+import org.hisp.dhis.user.UserGroup;
+import org.hisp.dhis.user.UserGroupService;
+import org.hisp.dhis.user.UserGroupStore;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class DefaultUserGroupService implements UserGroupService
+{
+
+    // -------------------------------------------------------------------------
+    // Dependencies
+    // -------------------------------------------------------------------------
+
+    private UserGroupStore userGroupStore;
+
+    public void setUserGroupStore( UserGroupStore userGroupStore )
+    {
+        this.userGroupStore = userGroupStore;
+    }
+    
+    // -------------------------------------------------------------------------
+    // UserGroup
+    // -------------------------------------------------------------------------
+
+    @Override
+    public int addUserGroup( UserGroup userGroup )
+    {
+        return userGroupStore.addUserGroup( userGroup );
+    }
+
+    @Override
+    public void deleteUserGroup( UserGroup userGroup )
+    {
+        userGroupStore.deleteUserGroup( userGroup );
+    }
+
+    @Override
+    public void updateUserGroup( UserGroup userGroup )
+    {
+        userGroupStore.updateUserGroup( userGroup );
+    }
+
+    
+    @Override
+    public Collection<UserGroup> getAllUserGroups()
+    {
+        return userGroupStore.getAllUserGroups();
+    }
+
+    @Override
+    public UserGroup getUserGroup( int userGroupId )
+    {
+        return userGroupStore.getUserGroup( userGroupId );
+    }
+
+    @Override
+    public UserGroup getUserGroupByName( String name )
+    {
+        return userGroupStore.getUserGroupByName( name );
+    }
+
+}

=== added file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/hibernate/HiberntateUserGroupStore.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/hibernate/HiberntateUserGroupStore.java	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/hibernate/HiberntateUserGroupStore.java	2010-12-16 17:38:32 +0000
@@ -0,0 +1,86 @@
+package org.hisp.dhis.user.hibernate;
+
+import java.util.Collection;
+
+import org.hibernate.Criteria;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.criterion.Restrictions;
+import org.hisp.dhis.dataelement.DataElement;
+import org.hisp.dhis.user.UserGroup;
+import org.hisp.dhis.user.UserGroupStore;
+
+public class HiberntateUserGroupStore implements UserGroupStore
+{
+    // -------------------------------------------------------------------------
+    // Dependencies
+    // -------------------------------------------------------------------------
+
+    private SessionFactory sessionFactory;
+    
+    public void setSessionFactory( SessionFactory sessionFactory )
+    {
+        this.sessionFactory = sessionFactory;
+    }
+
+    // -------------------------------------------------------------------------
+    // UserGroup
+    // -------------------------------------------------------------------------
+    
+    @Override
+    public int addUserGroup( UserGroup userGroup )
+    {
+        Session session = sessionFactory.getCurrentSession();
+
+        return (Integer) session.save( userGroup );
+    }
+
+    @Override
+    public void deleteUserGroup( UserGroup userGroup )
+    {
+        Session session = sessionFactory.getCurrentSession();
+
+        session.delete( userGroup );        
+    }
+
+    @Override
+    public void updateUserGroup( UserGroup userGroup )
+    {
+        Session session = sessionFactory.getCurrentSession();
+
+        session.update( userGroup );
+    }
+
+    
+    @Override
+    public Collection<UserGroup> getAllUserGroups()
+    {
+        Session session = sessionFactory.getCurrentSession();
+
+        Criteria criteria = session.createCriteria( UserGroup.class );
+        
+        return criteria.list();
+
+    }
+
+    @Override
+    public UserGroup getUserGroup( int userGroupId )
+    {
+        Session session = sessionFactory.getCurrentSession();
+
+        return (UserGroup) session.get( UserGroup.class, userGroupId );
+    }
+
+    @Override
+    public UserGroup getUserGroupByName( String name )
+    {
+        Session session = sessionFactory.getCurrentSession();
+
+        Criteria criteria = session.createCriteria( DataElement.class );
+        criteria.add( Restrictions.eq( "name", name ) );
+
+        return (UserGroup) criteria.uniqueResult();
+    }
+
+
+}

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml	2010-12-06 14:13:48 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml	2010-12-16 17:38:32 +0000
@@ -1,1585 +1,1403 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans";
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:aop="http://www.springframework.org/schema/aop";
-	xsi:schemaLocation="
+<beans xmlns="http://www.springframework.org/schema/beans"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xmlns:aop="http://www.springframework.org/schema/aop";
+  xsi:schemaLocation="
 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd";>
 
-	<!-- Store definitions -->
-
-	<bean id="org.hisp.dhis.dataelement.DataElementOperandStore"
-		class="org.hisp.dhis.hibernate.HibernateGenericStore">
-		<property name="clazz" value="org.hisp.dhis.dataelement.DataElementOperand" />
-		<property name="sessionFactory" ref="sessionFactory" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataentryform.DataEntryFormStore"
-		class="org.hisp.dhis.dataentryform.hibernate.HibernateDataEntryFormStore">
-		<property name="sessionFactory" ref="sessionFactory"/>
-	</bean>
-
-	<bean id="org.hisp.dhis.customvalue.CustomValueStore"
-		class="org.hisp.dhis.customvalue.hibernate.HibernateCustomValueStore">
-		<property name="clazz" value="org.hisp.dhis.customvalue.CustomValue" />
-		<property name="sessionFactory" ref="sessionFactory" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataelement.DataElementStore"
-		class="org.hisp.dhis.dataelement.hibernate.HibernateDataElementStore">
-		<property name="clazz" value="org.hisp.dhis.dataelement.DataElement"/>
-		<property name="sessionFactory" ref="sessionFactory"/>
-		<property name="statementManager" ref="statementManager"/>
-	</bean>
-
-	<bean id="org.hisp.dhis.dataelement.DataElementGroupStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
-		<property name="clazz" value="org.hisp.dhis.dataelement.DataElementGroup" />
-		<property name="sessionFactory" ref="sessionFactory" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataelement.DataElementGroupSetStore"
-		class="org.hisp.dhis.hibernate.HibernateGenericStore">
-		<property name="clazz"
-			value="org.hisp.dhis.dataelement.DataElementGroupSet" />
-		<property name="sessionFactory" ref="sessionFactory" />
-	</bean>
-
-	<bean id="org.hisp.dhis.datadictionary.DataDictionaryStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
-		<property name="clazz" value="org.hisp.dhis.datadictionary.DataDictionary" />
-		<property name="sessionFactory" ref="sessionFactory" />
-	</bean>
-
-	<bean id="org.hisp.dhis.datavalue.DataValueStore"
-		class="org.hisp.dhis.datavalue.hibernate.HibernateDataValueStore">
-		<property name="sessionFactory" ref="sessionFactory"/>
-		<property name="statementManager" ref="statementManager"/>
-		<property name="periodStore" ref="org.hisp.dhis.period.PeriodStore" />
-	</bean>
-
-	<bean id="org.hisp.dhis.indicator.IndicatorStore"
-		class="org.hisp.dhis.indicator.hibernate.HibernateIndicatorStore">
-		<property name="clazz" value="org.hisp.dhis.indicator.Indicator"/>
-		<property name="sessionFactory" ref="sessionFactory"/>
-	</bean>
-
-	<bean id="org.hisp.dhis.indicator.IndicatorTypeStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
-		<property name="clazz" value="org.hisp.dhis.indicator.IndicatorType" />
-		<property name="sessionFactory" ref="sessionFactory" />
-	</bean>
-
-	<bean id="org.hisp.dhis.indicator.IndicatorGroupStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
-		<property name="clazz" value="org.hisp.dhis.indicator.IndicatorGroup" />
-		<property name="sessionFactory" ref="sessionFactory" />
-	</bean>
-
-	<bean id="org.hisp.dhis.indicator.IndicatorGroupSetStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
-		<property name="clazz" value="org.hisp.dhis.indicator.IndicatorGroupSet" />
-		<property name="sessionFactory" ref="sessionFactory" />
-	</bean>
-
-	<bean id="org.hisp.dhis.period.PeriodStore" class="org.hisp.dhis.period.hibernate.HibernatePeriodStore">
-		<property name="sessionFactory" ref="sessionFactory"/>
-	</bean>
-
-	<bean id="org.hisp.dhis.source.SourceStore" class="org.hisp.dhis.source.hibernate.HibernateSourceStore">
-		<property name="sessionFactory" ref="sessionFactory"/>
-	</bean>
-
-	<bean id="org.hisp.dhis.dataset.DataSetStore" class="org.hisp.dhis.dataset.hibernate.HibernateDataSetStore">
-		<property name="clazz" value="org.hisp.dhis.dataset.DataSet" />
-		<property name="sessionFactory" ref="sessionFactory"/>
-		<property name="periodStore" ref="org.hisp.dhis.period.PeriodStore" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataset.CompleteDataSetRegistrationStore"
-		class="org.hisp.dhis.dataset.hibernate.HibernateCompleteDataSetRegistrationStore">
-		<property name="sessionFactory" ref="sessionFactory"/>
-		<property name="periodService" ref="org.hisp.dhis.period.PeriodService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.minmax.MinMaxDataElementStore"
-		class="org.hisp.dhis.minmax.hibernate.HibernateMinMaxDataElementStore">
-		<property name="clazz" value="org.hisp.dhis.minmax.MinMaxDataElement" />
-		<property name="sessionFactory" ref="sessionFactory" />
-	</bean>
-
-	<bean id="org.hisp.dhis.expression.ExpressionStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
-		<property name="clazz" value="org.hisp.dhis.expression.Expression" />
-		<property name="sessionFactory" ref="sessionFactory" />
-	</bean>
-
-	<bean id="org.hisp.dhis.validation.ValidationRuleStore"
-		class="org.hisp.dhis.validation.hibernate.HibernateValidationRuleStore">
-		<property name="clazz" value="org.hisp.dhis.validation.ValidationRule" />
-		<property name="sessionFactory" ref="sessionFactory" />
-		<property name="periodStore" ref="org.hisp.dhis.period.PeriodStore" />
-	</bean>
-
-	<bean id="org.hisp.dhis.validation.ValidationRuleGroupStore"
-		class="org.hisp.dhis.hibernate.HibernateGenericStore">
-		<property name="clazz" value="org.hisp.dhis.validation.ValidationRuleGroup" />
-		<property name="sessionFactory" ref="sessionFactory" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataelement.DataElementCategoryStore"
-		class="org.hisp.dhis.hibernate.HibernateGenericStore">
-		<property name="clazz"
-			value="org.hisp.dhis.dataelement.DataElementCategory" />
-		<property name="sessionFactory" ref="sessionFactory" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataelement.DataElementCategoryOptionStore"
-		class="org.hisp.dhis.hibernate.HibernateGenericStore">
-		<property name="clazz"
-			value="org.hisp.dhis.dataelement.DataElementCategoryOption" />
-		<property name="sessionFactory" ref="sessionFactory" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataelement.DataElementCategoryComboStore"
-		class="org.hisp.dhis.hibernate.HibernateGenericStore">
-		<property name="clazz"
-			value="org.hisp.dhis.dataelement.DataElementCategoryCombo" />
-		<property name="sessionFactory" ref="sessionFactory" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataelement.DataElementCategoryOptionComboStore"
-		class="org.hisp.dhis.hibernate.HibernateGenericStore">
-		<property name="clazz"
-			value="org.hisp.dhis.dataelement.DataElementCategoryOptionCombo" />
-		<property name="sessionFactory" ref="sessionFactory" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataset.SectionStore" class="org.hisp.dhis.dataset.hibernate.HibernateSectionStore">
-		<property name="sessionFactory" ref="sessionFactory"/>
-	</bean>
-
-	<bean id="org.hisp.dhis.organisationunit.OrganisationUnitStore"
-		class="org.hisp.dhis.organisationunit.hibernate.HibernateOrganisationUnitStore">
-		<property name="sessionFactory" ref="sessionFactory"/>
-		<property name="statementManager" ref="statementManager"/>
-		<property name="jdbcTemplate" ref="jdbcTemplate"/>
-	</bean>
-	
-	<bean id="org.hisp.dhis.organisationunit.OrganisationUnitGroupStore"
-		class="org.hisp.dhis.hibernate.HibernateGenericStore">
-		<property name="clazz"
-			value="org.hisp.dhis.organisationunit.OrganisationUnitGroup" />
-		<property name="sessionFactory" ref="sessionFactory" />
-	</bean>
-
-	<bean id="org.hisp.dhis.organisationunit.OrganisationUnitGroupSetStore"
-		class="org.hisp.dhis.hibernate.HibernateGenericStore">
-		<property name="clazz"
-			value="org.hisp.dhis.organisationunit.OrganisationUnitGroupSet" />
-		<property name="sessionFactory" ref="sessionFactory" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataanalysis.jdbc.DataAnalysisStore"
-		class="org.hisp.dhis.dataanalysis.jdbc.JdbcDataAnalysisStore">
-		<property name="statementManager" ref="statementManager"/>
-		<property name="statementBuilder" ref="statementBuilder"/>
-	</bean>
-
-	<bean id="org.hisp.dhis.datavalue.DataValueAuditStore"
-		class="org.hisp.dhis.datavalue.hibernate.HibernateDataValueAuditStore">
-		<property name="sessionFactory" ref="sessionFactory"/>
-	</bean>
-
-	<bean id="org.hisp.dhis.user.UserStore" class="org.hisp.dhis.user.hibernate.HibernateUserStore">
-		<property name="sessionFactory" ref="sessionFactory"/>
-		<property name="userRoleStore" ref="org.hisp.dhis.user.UserAuthorityGroupStore" />
-		<property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.validation.ValidationCriteriaStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
-		<property name="clazz" value="org.hisp.dhis.validation.ValidationCriteria" />
-		<property name="sessionFactory" ref="sessionFactory" />
-	</bean>
-
-	<bean id="org.hisp.dhis.translation.TranslationStore"
-		class="org.hisp.dhis.translation.hibernate.HibernateTranslationStore">
-		<property name="sessionFactory" ref="sessionFactory"/>
-	</bean>
-
-	<bean id="org.hisp.dhis.aggregation.AggregatedDataValueStore"
-		class="org.hisp.dhis.aggregation.jdbc.JdbcAggregatedDataValueStore">
-		<property name="statementManager" ref="statementManager"/>
-	</bean>
-	
-	<bean id="org.hisp.dhis.user.UserAuthorityGroupStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
-		<property name="clazz" value="org.hisp.dhis.user.UserAuthorityGroup" />
-		<property name="sessionFactory" ref="sessionFactory" />
-	</bean>
-	
-
-	<!-- Service definitions -->
-
-	<bean id="org.hisp.dhis.dataelement.DataElementOperandService"
-		class="org.hisp.dhis.dataelement.DefaultDataElementOperandService">
-		<property name="dataElementOperandStore"
-			ref="org.hisp.dhis.dataelement.DataElementOperandStore" />
-	</bean>
-
-	<bean id="org.hisp.dhis.customvalue.CustomValueService" class="org.hisp.dhis.customvalue.DefaultCustomValueService">
-		<property name="customValueStore" ref="org.hisp.dhis.customvalue.CustomValueStore" />
-	</bean>
-
-	<bean id="org.hisp.dhis.datavalue.DataValueService" class="org.hisp.dhis.datavalue.DefaultDataValueService">
-		<property name="dataValueStore" ref="org.hisp.dhis.datavalue.DataValueStore" />
-		<property name="dataValueAuditService"
-			ref="org.hisp.dhis.datavalue.DataValueAuditService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.datavalue.DataValueAuditService" class="org.hisp.dhis.datavalue.DefaultDataValueAuditService">
-		<property name="dataValueAuditStore" ref="org.hisp.dhis.datavalue.DataValueAuditStore" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataelement.DataElementService" class="org.hisp.dhis.dataelement.DefaultDataElementService">
-		<property name="dataElementStore" ref="org.hisp.dhis.dataelement.DataElementStore" />
-		<property name="dataElementGroupStore"
-			ref="org.hisp.dhis.dataelement.DataElementGroupStore" />
-		<property name="dataElementGroupSetStore"
-			ref="org.hisp.dhis.dataelement.DataElementGroupSetStore" />
-		<property name="i18nService" ref="org.hisp.dhis.i18n.I18nService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.minmax.MinMaxDataElementService" class="org.hisp.dhis.minmax.DefaultMinMaxDataElementService">
-		<property name="minMaxDataElementStore" ref="org.hisp.dhis.minmax.MinMaxDataElementStore" />
-	</bean>
-
-	<bean id="org.hisp.dhis.datadictionary.DataDictionaryService"
-		class="org.hisp.dhis.datadictionary.DefaultDataDictionaryService">
-		<property name="dataDictionaryStore"
-			ref="org.hisp.dhis.datadictionary.DataDictionaryStore" />
-		<property name="i18nService" ref="org.hisp.dhis.i18n.I18nService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.indicator.IndicatorService" class="org.hisp.dhis.indicator.DefaultIndicatorService">
-		<property name="indicatorStore" ref="org.hisp.dhis.indicator.IndicatorStore" />
-		<property name="indicatorTypeStore" ref="org.hisp.dhis.indicator.IndicatorTypeStore" />
-		<property name="indicatorGroupStore" ref="org.hisp.dhis.indicator.IndicatorGroupStore" />
-		<property name="indicatorGroupSetStore"
-			ref="org.hisp.dhis.indicator.IndicatorGroupSetStore" />
-		<property name="i18nService" ref="org.hisp.dhis.i18n.I18nService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.period.PeriodService" class="org.hisp.dhis.period.DefaultPeriodService">
-		<property name="periodStore" ref="org.hisp.dhis.period.PeriodStore" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataset.DataSetService" class="org.hisp.dhis.dataset.DefaultDataSetService">
-		<property name="dataSetStore" ref="org.hisp.dhis.dataset.DataSetStore" />
-		<property name="i18nService" ref="org.hisp.dhis.i18n.I18nService" />
-		<property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataset.CompleteDataSetRegistrationService"
-		class="org.hisp.dhis.dataset.DefaultCompleteDataSetRegistrationService">
-		<property name="completeDataSetRegistrationStore"
-			ref="org.hisp.dhis.dataset.CompleteDataSetRegistrationStore" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataset.SectionService" class="org.hisp.dhis.dataset.DefaultSectionService">
-		<property name="sectionStore" ref="org.hisp.dhis.dataset.SectionStore" />
-		<property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
-		<property name="i18nService" ref="org.hisp.dhis.i18n.I18nService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataentryform.DataEntryFormService" class="org.hisp.dhis.dataentryform.DefaultDataEntryFormService">
-		<property name="dataEntryFormStore"
-			ref="org.hisp.dhis.dataentryform.DataEntryFormStore" />
-	</bean>
-
-	<bean id="org.hisp.dhis.expression.ExpressionService" class="org.hisp.dhis.expression.DefaultExpressionService">
-		<property name="expressionStore" ref="org.hisp.dhis.expression.ExpressionStore" />
-		<property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
-		<property name="dataValueService" ref="org.hisp.dhis.datavalue.DataValueService" />
-		<property name="aggregatedDataValueService" ref="org.hisp.dhis.aggregation.AggregatedDataValueService"/>
-		<property name="categoryService" ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.validation.ValidationRuleService" class="org.hisp.dhis.validation.DefaultValidationRuleService">
-		<property name="validationRuleStore" ref="org.hisp.dhis.validation.ValidationRuleStore" />
-		<property name="validationRuleGroupStore"
-			ref="org.hisp.dhis.validation.ValidationRuleGroupStore" />
-		<property name="expressionService" ref="org.hisp.dhis.expression.ExpressionService" />
-		<property name="periodService" ref="org.hisp.dhis.period.PeriodService" />
-		<property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService"/>
-		<property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService"/>
-	</bean>
-
-	<bean id="org.hisp.dhis.dataelement.DataElementCategoryService"
-		class="org.hisp.dhis.dataelement.DefaultDataElementCategoryService">
-		<property name="dataElementCategoryStore"
-			ref="org.hisp.dhis.dataelement.DataElementCategoryStore" />
-		<property name="dataElementCategoryOptionStore"
-			ref="org.hisp.dhis.dataelement.DataElementCategoryOptionStore" />
-		<property name="dataElementCategoryComboStore"
-			ref="org.hisp.dhis.dataelement.DataElementCategoryComboStore" />
-		<property name="dataElementCategoryOptionComboStore"
-			ref="org.hisp.dhis.dataelement.DataElementCategoryOptionComboStore" />
-		<property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dimension.DimensionService" class="org.hisp.dhis.dimension.DefaultDimensionService">
-		<property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
-		<property name="categoryService"
-			ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.organisationunit.OrganisationUnitService"
-		class="org.hisp.dhis.organisationunit.DefaultOrganisationUnitService">
-		<property name="sourceStore" ref="org.hisp.dhis.source.SourceStore" />
-		<property name="organisationUnitStore"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitStore" />
-		<property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.organisationunit.OrganisationUnitGroupService"
-		class="org.hisp.dhis.organisationunit.DefaultOrganisationUnitGroupService">
-		<property name="organisationUnitGroupStore"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitGroupStore" />
-		<property name="organisationUnitGroupSetStore"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitGroupSetStore" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataanalysis.StdDevOutlierAnalysisService"
-		class="org.hisp.dhis.dataanalysis.StdDevOutlierAnalysisService">
-		<property name="organisationUnitService"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
-		<property name="dataAnalysisStore"
-			ref="org.hisp.dhis.dataanalysis.jdbc.DataAnalysisStore" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataanalysis.MinMaxOutlierAnalysisService"
-		class="org.hisp.dhis.dataanalysis.MinMaxOutlierAnalysisService">
-		<property name="organisationUnitService"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
-		<property name="minMaxDataElementService"
-			ref="org.hisp.dhis.minmax.MinMaxDataElementService" />
-		<property name="dataAnalysisStore"
-			ref="org.hisp.dhis.dataanalysis.jdbc.DataAnalysisStore" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataanalysis.GapAnalysisService" class="org.hisp.dhis.dataanalysis.GapAnalysisService">
-		<property name="organisationUnitService"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
-		<property name="dataAnalysisStore"
-			ref="org.hisp.dhis.dataanalysis.jdbc.DataAnalysisStore" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataanalysis.FollowupAnalysisService"
-		class="org.hisp.dhis.dataanalysis.FollowupAnalysisService">
-		<property name="dataAnalysisStore"
-			ref="org.hisp.dhis.dataanalysis.jdbc.DataAnalysisStore" />
-	</bean>
-
-	<bean id="dataAnalysisServiceProvider" class="org.hisp.dhis.common.ServiceProvider">
-		<property name="services">
-			<map>
-				<entry>
-					<key>
-						<value>stddevoutlier</value>
-					</key>
-					<ref bean="org.hisp.dhis.dataanalysis.StdDevOutlierAnalysisService" />
-				</entry>
-				<entry>
-					<key>
-						<value>minmaxoutlier</value>
-					</key>
-					<ref bean="org.hisp.dhis.dataanalysis.MinMaxOutlierAnalysisService" />
-				</entry>
-				<entry>
-					<key>
-						<value>gap</value>
-					</key>
-					<ref bean="org.hisp.dhis.dataanalysis.GapAnalysisService" />
-				</entry>
-				<entry>
-					<key>
-						<value>followup</value>
-					</key>
-					<ref bean="org.hisp.dhis.dataanalysis.FollowupAnalysisService" />
-				</entry>
-			</map>
-		</property>
-	</bean>
-
-	<bean id="org.hisp.dhis.user.CurrentUserService" class="org.hisp.dhis.user.DefaultCurrentUserService">
-		<property name="userStore" ref="org.hisp.dhis.user.UserStore" />
-	</bean>
-
-	<bean id="org.hisp.dhis.user.UserSettingService" class="org.hisp.dhis.user.DefaultUserSettingService">
-		<property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
-		<property name="userStore" ref="org.hisp.dhis.user.UserStore" />
-	</bean>
-
-	<bean id="org.hisp.dhis.user.UserService" class="org.hisp.dhis.user.DefaultUserService">
-		<property name="userStore" ref="org.hisp.dhis.user.UserStore" />
-	</bean>
-
-	<bean id="org.hisp.dhis.validation.ValidationCriteriaService"
-		class="org.hisp.dhis.validation.DefaultValidationCriteriaService">
-		<property name="validationCriteriaStore"
-			ref="org.hisp.dhis.validation.ValidationCriteriaStore" />
-	</bean>
-
-	<bean id="org.hisp.dhis.translation.TranslationService" class="org.hisp.dhis.translation.DefaultTranslationService">
-		<property name="translationStore" ref="org.hisp.dhis.translation.TranslationStore" />
-	</bean>
-
-	<bean id="org.hisp.dhis.i18n.locale.LocaleManagerDb" class="org.hisp.dhis.i18n.locale.DatabaseLocaleManager">
-		<property name="userSettingService" ref="org.hisp.dhis.user.UserSettingService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataset.PivotDataSetAssociationTableService"
-		class="org.hisp.dhis.dataset.DefaultPivotDataSetAssociationTableService">
-		<property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
-		<property name="organisationUnitService"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
-		<property name="periodService" ref="org.hisp.dhis.period.PeriodService" />
-	</bean>
-	
-	<bean id="org.hisp.dhis.aggregation.AggregatedDataValueService"
-		class="org.hisp.dhis.aggregation.DefaultAggregatedDataValueService">
-		<property name="aggregatedDataValueStore"
-			ref="org.hisp.dhis.aggregation.AggregatedDataValueStore"/>
-	</bean>
-	
-	<!-- Concept Name -->
-	
-	<bean id="org.hisp.dhis.concept.ConceptStore"
-		class="org.hisp.dhis.hibernate.HibernateGenericStore">
-		<property name="clazz" value="org.hisp.dhis.concept.Concept"/>
-		<property name="sessionFactory" ref="sessionFactory"/>
-	</bean>
-	
-	<bean id="org.hisp.dhis.concept.ConceptService" 
-		class="org.hisp.dhis.concept.DefaultConceptService">
-		<property name="conceptStore" ref="org.hisp.dhis.concept.ConceptStore" />
-	</bean>
-	
-	<!-- I18nService -->
-
-	<bean id="org.hisp.dhis.i18n.I18nService" class="org.hisp.dhis.i18n.DefaultI18nService">
-		<property name="localeManager">
-			<ref bean="org.hisp.dhis.i18n.locale.LocaleManagerDb" />
-		</property>
-		<property name="translationService">
-			<ref bean="org.hisp.dhis.translation.TranslationService" />
-		</property>
-		<property name="objects">
-			<list>
-				<ref bean="I18nDataElement" />
-				<ref bean="I18nDataElementGroup" />
-				<ref bean="I18nDataElementGroupSet" />
-				<ref bean="I18nDataDictionary" />
-				<ref bean="I18nIndicator" />
-				<ref bean="I18nIndicatorType" />
-				<ref bean="I18nIndicatorGroup" />
-				<ref bean="I18nIndicatorGroupSet" />
-				<ref bean="I18nDataSet" />
-				<ref bean="I18nOrganisationUnit" />
-				<ref bean="I18nReportExcelNormal" />
-				<ref bean="I18nReportExcelCategory" />
-				<ref bean="I18nReportExcelOganiztionGroupListing" />
-				<ref bean="I18nReportExcelPeriodColumnListing" />
-				<ref bean="I18nReportExcelItem" />
-				<ref bean="I18nExcelItemGroup" />
-				<ref bean="I18nExcelItem" />
-				<ref bean="I18nSection" />
-			</list>
-		</property>
-	</bean>
-
-	<!-- I18n object definitions -->
-
-	<bean id="I18nDataElement" class="org.hisp.dhis.i18n.I18nObject">
-		<property name="className" value="DataElement" />
-		<property name="propertyNames">
-			<list>
-				<value>name</value>
-				<value>shortName</value>
-				<value>description</value>
-			</list>
-		</property>
-
-		<property name="rulePropertyNames">
-			<map>
-				<entry key="name">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="true" />
-						<entry key="minlength" value="2" />
-						<entry key="maxlength" value="160" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-				<entry key="shortName">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="false" />
-						<entry key="minlength" value="0" />
-						<entry key="maxlength" value="25" />
-						<entry key="regex" value="/^[\w]?[\w\d]*$/" />
-						<entry key="message" value="translation_shortname_wellformed" />
-					</map>
-				</entry>
-				<entry key="description">
-					<map>
-						<entry key="unique" value="false" />
-						<entry key="required" value="false" />
-						<entry key="minlength" value="0" />
-						<entry key="maxlength" value="200" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-			</map>
-		</property>
-	</bean>
-
-	<bean id="I18nDataElementGroup" class="org.hisp.dhis.i18n.I18nObject">
-		<property name="className" value="DataElementGroup" />
-		<property name="propertyNames">
-			<list>
-				<value>name</value>
-			</list>
-		</property>
-
-		<property name="rulePropertyNames">
-			<map>
-				<entry key="name">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="true" />
-						<entry key="minlength" value="2" />
-						<entry key="maxlength" value="160" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-			</map>
-		</property>
-
-	</bean>
-
-	<bean id="I18nDataElementGroupSet" class="org.hisp.dhis.i18n.I18nObject">
-		<property name="className" value="DataElementGroupSet" />
-		<property name="propertyNames">
-			<list>
-				<value>name</value>
-			</list>
-		</property>
-
-		<property name="rulePropertyNames">
-			<map>
-				<entry key="name">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="true" />
-						<entry key="minlength" value="2" />
-						<entry key="maxlength" value="160" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-			</map>
-		</property>
-	</bean>
-
-	<bean id="I18nIndicator" class="org.hisp.dhis.i18n.I18nObject">
-		<property name="className" value="Indicator" />
-		<property name="propertyNames">
-			<list>
-				<value>name</value>
-				<value>shortName</value>
-				<value>description</value>
-				<value>numeratorDescription</value>
-				<value>denominatorDescription</value>
-			</list>
-		</property>
-
-		<property name="rulePropertyNames">
-			<map>
-				<entry key="name">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="true" />
-						<entry key="minlength" value="2" />
-						<entry key="maxlength" value="160" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-				<entry key="shortName">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="false" />
-						<entry key="minlength" value="0" />
-						<entry key="maxlength" value="25" />
-						<entry key="regex" value="/^[\w]?[\w\d]*$/" />
-						<entry key="message" value="translation_shortname_wellformed" />
-					</map>
-				</entry>
-				<entry key="description">
-					<map>
-						<entry key="unique" value="false" />
-						<entry key="required" value="false" />
-						<entry key="minlength" value="0" />
-						<entry key="maxlength" value="200" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-				<entry key="numeratorDescription">
-					<map>
-						<entry key="unique" value="false" />
-						<entry key="required" value="false" />
-						<entry key="minlength" value="0" />
-						<entry key="maxlength" value="100" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-				<entry key="denominatorDescription">
-					<map>
-						<entry key="unique" value="false" />
-						<entry key="required" value="false" />
-						<entry key="minlength" value="0" />
-						<entry key="maxlength" value="100" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-			</map>
-		</property>
-	</bean>
-
-	<bean id="I18nIndicatorType" class="org.hisp.dhis.i18n.I18nObject">
-		<property name="className" value="IndicatorType" />
-		<property name="propertyNames">
-			<list>
-				<value>name</value>
-			</list>
-		</property>
-
-		<property name="rulePropertyNames">
-			<map>
-				<entry key="name">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="true" />
-						<entry key="minlength" value="2" />
-						<entry key="maxlength" value="160" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-			</map>
-		</property>
-	</bean>
-
-	<bean id="I18nIndicatorGroup" class="org.hisp.dhis.i18n.I18nObject">
-		<property name="className" value="IndicatorGroup" />
-		<property name="propertyNames">
-			<list>
-				<value>name</value>
-			</list>
-		</property>
-
-		<property name="rulePropertyNames">
-			<map>
-				<entry key="name">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="true" />
-						<entry key="minlength" value="2" />
-						<entry key="maxlength" value="160" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-			</map>
-		</property>
-	</bean>
-
-	<bean id="I18nIndicatorGroupSet" class="org.hisp.dhis.i18n.I18nObject">
-		<property name="className" value="IndicatorGroupSet" />
-		<property name="propertyNames">
-			<list>
-				<value>name</value>
-			</list>
-		</property>
-
-		<property name="rulePropertyNames">
-			<map>
-				<entry key="name">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="true" />
-						<entry key="minlength" value="2" />
-						<entry key="maxlength" value="160" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-			</map>
-		</property>
-	</bean>
-
-	<bean id="I18nDataDictionary" class="org.hisp.dhis.i18n.I18nObject">
-		<property name="className" value="DataDictionary" />
-		<property name="propertyNames">
-			<list>
-				<value>name</value>
-				<value>description</value>
-				<value>region</value>
-			</list>
-		</property>
-
-		<property name="rulePropertyNames">
-			<map>
-				<entry key="name">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="true" />
-						<entry key="minlength" value="2" />
-						<entry key="maxlength" value="160" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-				<entry key="description">
-					<map>
-						<entry key="unique" value="false" />
-						<entry key="required" value="false" />
-						<entry key="minlength" value="0" />
-						<entry key="maxlength" value="200" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-				<entry key="region">
-					<map>
-						<entry key="unique" value="false" />
-						<entry key="required" value="false" />
-						<entry key="minlength" value="0" />
-						<entry key="maxlength" value="255" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-			</map>
-		</property>
-	</bean>
-
-	<bean id="I18nOrganisationUnit" class="org.hisp.dhis.i18n.I18nObject">
-		<property name="className" value="OrganisationUnit" />
-		<property name="propertyNames">
-			<list>
-				<value>name</value>
-				<value>shortName</value>
-				<value>comment</value>
-			</list>
-		</property>
-
-		<property name="rulePropertyNames">
-			<map>
-				<entry key="name">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="true" />
-						<entry key="minlength" value="2" />
-						<entry key="maxlength" value="160" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-				<entry key="shortName">
-					<map>
-						<entry key="unique" value="false" />
-						<entry key="required" value="false" />
-						<entry key="minlength" value="0" />
-						<entry key="maxlength" value="25" />
-						<entry key="regex" value="/^[\w]?[\w\d]*$/" />
-						<entry key="message" value="translation_shortname_wellformed" />
-					</map>
-				</entry>
-				<entry key="comment">
-					<map>
-						<entry key="unique" value="false" />
-						<entry key="required" value="false" />
-						<entry key="minlength" value="0" />
-						<entry key="maxlength" value="360" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-			</map>
-		</property>
-	</bean>
-
-	<bean id="I18nOrganisationUnitGroup" class="org.hisp.dhis.i18n.I18nObject">
-		<property name="className" value="OrganisationUnitGroup" />
-		<property name="propertyNames">
-			<list>
-				<value>name</value>
-			</list>
-		</property>
-
-		<property name="rulePropertyNames">
-			<map>
-				<entry key="name">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="true" />
-						<entry key="minlength" value="2" />
-						<entry key="maxlength" value="160" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-			</map>
-		</property>
-	</bean>
-
-	<bean id="I18nOrganisationUnitGroupSet" class="org.hisp.dhis.i18n.I18nObject">
-		<property name="className" value="OrganisationUnitGroupSet" />
-		<property name="propertyNames">
-			<list>
-				<value>name</value>
-				<value>description</value>
-			</list>
-		</property>
-
-		<property name="rulePropertyNames">
-			<map>
-				<entry key="name">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="true" />
-						<entry key="minlength" value="2" />
-						<entry key="maxlength" value="160" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-				<entry key="description">
-					<map>
-						<entry key="unique" value="false" />
-						<entry key="required" value="false" />
-						<entry key="minlength" value="0" />
-						<entry key="maxlength" value="200" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-			</map>
-		</property>
-	</bean>
-
-	<bean id="I18nDataSet" class="org.hisp.dhis.i18n.I18nObject">
-		<property name="className" value="DataSet" />
-		<property name="propertyNames">
-			<list>
-				<value>name</value>
-				<value>shortName</value>
-			</list>
-		</property>
-
-		<property name="rulePropertyNames">
-			<map>
-				<entry key="name">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="true" />
-						<entry key="minlength" value="2" />
-						<entry key="maxlength" value="160" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-				<entry key="shortName">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="false" />
-						<entry key="minlength" value="0" />
-						<entry key="maxlength" value="25" />
-						<entry key="regex" value="/^[\w]?[\w\d]*$/" />
-						<entry key="message" value="translation_shortname_wellformed" />
-					</map>
-				</entry>
-			</map>
-		</property>
-	</bean>
-
-	<bean id="I18nDataElementCategory" class="org.hisp.dhis.i18n.I18nObject">
-		<property name="className" value="DataElementCategory" />
-		<property name="propertyNames">
-			<list>
-				<value>name</value>
-			</list>
-		</property>
-
-		<property name="rulePropertyNames">
-			<map>
-				<entry key="name">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="true" />
-						<entry key="minlength" value="2" />
-						<entry key="maxlength" value="160" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-			</map>
-		</property>
-	</bean>
-
-	<bean id="I18nReportExcelNormal" class="org.hisp.dhis.i18n.I18nObject">
-		<property name="className" value="ReportExcelNormal" />
-		<property name="propertyNames">
-			<list>
-				<value>name</value>
-			</list>
-		</property>
-
-		<property name="rulePropertyNames">
-			<map>
-				<entry key="name">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="true" />
-						<entry key="minlength" value="2" />
-						<entry key="maxlength" value="160" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-			</map>
-		</property>
-	</bean>
-
-	<bean id="I18nReportExcelCategory" class="org.hisp.dhis.i18n.I18nObject">
-		<property name="className" value="ReportExcelCategory" />
-		<property name="propertyNames">
-			<list>
-				<value>name</value>
-			</list>
-		</property>
-
-		<property name="rulePropertyNames">
-			<map>
-				<entry key="name">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="true" />
-						<entry key="minlength" value="2" />
-						<entry key="maxlength" value="160" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-			</map>
-		</property>
-	</bean>
-
-	<bean id="I18nReportExcelOganiztionGroupListing" class="org.hisp.dhis.i18n.I18nObject">
-		<property name="className" value="ReportExcelOganiztionGroupListing" />
-		<property name="propertyNames">
-			<list>
-				<value>name</value>
-			</list>
-		</property>
-
-		<property name="rulePropertyNames">
-			<map>
-				<entry key="name">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="true" />
-						<entry key="minlength" value="2" />
-						<entry key="maxlength" value="160" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-			</map>
-		</property>
-	</bean>
-
-	<bean id="I18nReportExcelPeriodColumnListing" class="org.hisp.dhis.i18n.I18nObject">
-		<property name="className" value="ReportExcelPeriodColumnListing" />
-		<property name="propertyNames">
-			<list>
-				<value>name</value>
-			</list>
-		</property>
-
-		<property name="rulePropertyNames">
-			<map>
-				<entry key="name">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="true" />
-						<entry key="minlength" value="2" />
-						<entry key="maxlength" value="160" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-			</map>
-		</property>
-	</bean>
-
-	<bean id="I18nReportExcelItem" class="org.hisp.dhis.i18n.I18nObject">
-		<property name="className" value="ReportExcelItem" />
-		<property name="propertyNames">
-			<list>
-				<value>name</value>
-			</list>
-		</property>
-
-		<property name="rulePropertyNames">
-			<map>
-				<entry key="name">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="true" />
-						<entry key="minlength" value="2" />
-						<entry key="maxlength" value="160" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-			</map>
-		</property>
-	</bean>
-
-	<bean id="I18nExcelItemGroup" class="org.hisp.dhis.i18n.I18nObject">
-		<property name="className" value="ExcelItemGroup" />
-		<property name="propertyNames">
-			<list>
-				<value>name</value>
-			</list>
-		</property>
-
-		<property name="rulePropertyNames">
-			<map>
-				<entry key="name">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="true" />
-						<entry key="minlength" value="2" />
-						<entry key="maxlength" value="160" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-			</map>
-		</property>
-	</bean>
-
-	<bean id="I18nExcelItem" class="org.hisp.dhis.i18n.I18nObject">
-		<property name="className" value="ExcelItem" />
-		<property name="propertyNames">
-			<list>
-				<value>name</value>
-			</list>
-		</property>
-
-		<property name="rulePropertyNames">
-			<map>
-				<entry key="name">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="true" />
-						<entry key="minlength" value="2" />
-						<entry key="maxlength" value="160" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-			</map>
-		</property>
-	</bean>
-
-	<bean id="I18nSection" class="org.hisp.dhis.i18n.I18nObject">
-		<property name="className" value="Section" />
-		<property name="propertyNames">
-			<list>
-				<value>name</value>
-			</list>
-		</property>
-
-		<property name="rulePropertyNames">
-			<map>
-				<entry key="name">
-					<map>
-						<entry key="unique" value="true" />
-						<entry key="required" value="true" />
-						<entry key="minlength" value="2" />
-						<entry key="maxlength" value="160" />
-						<entry key="regex" value="''" />
-						<entry key="message" value="" />
-					</map>
-				</entry>
-			</map>
-		</property>
-	</bean>
-
-	<!-- Startup routine definitions -->
-
-	<bean id="org.hisp.dhis.startup.TableAlteror" class="org.hisp.dhis.startup.TableAlteror">
-		<property name="statementManager" ref="statementManager" />
-		<property name="name" value="TableAlteror" />
-		<property name="runlevel" value="1" />
-		<property name="skipInTests" value="true" />
-	</bean>
-
-	<bean id="org.hisp.dhis.period.PeriodTypePopulator" class="org.hisp.dhis.period.PeriodTypePopulator">
-		<property name="periodStore" ref="org.hisp.dhis.period.PeriodStore" />
-		<property name="name" value="PeriodTypePopulator" />
-		<property name="runlevel" value="2" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataelement.DataElementDefaultDimensionPopulator"
-		class="org.hisp.dhis.dataelement.DataElementDefaultDimensionPopulator">
-		<property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
-		<property name="conceptService" ref="org.hisp.dhis.concept.ConceptService"/>
-		<property name="categoryService" ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
-		<property name="name" value="DataElementDefaultDimensionPopulator" />
-		<property name="runlevel" value="3" />
-	</bean>
-
-	<bean id="org.hisp.dhis.expression.MultiDimensionExpressionUpgrader"
-		class="org.hisp.dhis.expression.MultiDimensionExpressionUpgrader">
-		<property name="expressionService" ref="org.hisp.dhis.expression.ExpressionService" />
-		<property name="indicatorService" ref="org.hisp.dhis.indicator.IndicatorService" />
-		<property name="categoryService"
-			ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
-		<property name="name" value="MultiDimensionExpressionUpgrader" />
-		<property name="runlevel" value="3" />
-		<property name="skipInTests" value="true" />
-	</bean>
-
-	<bean id="org.hisp.dhis.startup.TableCreator" class="org.hisp.dhis.startup.TableCreator">
-		<property name="jdbcTemplate" ref="jdbcTemplate" />
-		<property name="statementBuilder" ref="statementBuilder" />
-		<property name="name" value="TableCreator" />
-		<property name="runlevel" value="3" />
-	</bean>
-
-	<bean
-		id="org.hisp.dhis.organisationunit.OrganisationUnitGroupSetPopulator"
-		class="org.hisp.dhis.organisationunit.OrganisationUnitGroupSetPopulator">
-		<property name="organisationUnitGroupService"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitGroupService" />
-		<property name="runlevel" value="5" />
-		<property name="name" value="OrganisationUnitGroupSetPopulator" />
-		<property name="skipInTests" value="true" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataelement.UuidPopulator" class="org.hisp.dhis.dataelement.UuidPopulator">
-		<property name="categoryService"
-			ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
-		<property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
-		<property name="name" value="UuidPopulator" />
-		<property name="runlevel" value="5" />
-		<property name="skipInTests" value="true" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataset.DataSetShortNamePopulator" class="org.hisp.dhis.dataset.DataSetShortNamePopulator">
-		<property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
-		<property name="name" value="DataSetShortNamePopulator" />
-		<property name="runlevel" value="5" />
-		<property name="skipInTests" value="true" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataentryform.DataEntryFormPopulator"
-		class="org.hisp.dhis.dataentryform.DataEntryFormPopulator">
-		<property name="jdbcTemplate" ref="jdbcTemplate" />
-		<property name="statementBuilder" ref="statementBuilder" />
-		<property name="name" value="DataEntryFormPopulator" />
-		<property name="runlevel" value="5" />
-		<property name="skipInTests" value="true" />
-	</bean>
-
-	<bean
-		class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
-		<property name="targetObject"
-			ref="org.hisp.dhis.system.startup.StartupRoutineExecutor" />
-		<property name="targetMethod" value="addStartupRoutines" />
-		<property name="arguments">
-			<list>
-				<list>
-					<ref local="org.hisp.dhis.startup.TableAlteror" />
-					<ref local="org.hisp.dhis.period.PeriodTypePopulator" />
-					<ref local="org.hisp.dhis.startup.TableCreator" />
-					<ref
-						local="org.hisp.dhis.dataelement.DataElementDefaultDimensionPopulator" />
-					<ref local="org.hisp.dhis.expression.MultiDimensionExpressionUpgrader" />
-					<ref local="org.hisp.dhis.dataset.DataSetShortNamePopulator" />
-					<ref local="org.hisp.dhis.dataelement.UuidPopulator" />
-					<ref
-						local="org.hisp.dhis.organisationunit.OrganisationUnitGroupSetPopulator" />
-					<ref local="org.hisp.dhis.dataentryform.DataEntryFormPopulator" />
-				</list>
-			</list>
-		</property>
-	</bean>
-
-	<!-- DeletionHandlers -->
-
-	<bean id="org.hisp.dhis.dataentryform.DataEntryFormDeletionHandler"
-		class="org.hisp.dhis.dataentryform.DataEntryFormDeletionHandler">
-		<property name="dataEntryFormService"
-			ref="org.hisp.dhis.dataentryform.DataEntryFormService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.datadictionary.DataDictionaryDeletionHandler"
-		class="org.hisp.dhis.datadictionary.DataDictionaryDeletionHandler">
-		<property name="dataDictionaryService"
-			ref="org.hisp.dhis.datadictionary.DataDictionaryService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataelement.DataElementDeletionHandler"
-		class="org.hisp.dhis.dataelement.DataElementDeletionHandler">
-		<property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
-		<property name="categoryService"
-			ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataelement.DataElementGroupDeletionHandler"
-		class="org.hisp.dhis.dataelement.DataElementGroupDeletionHandler">
-		<property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
-	</bean>
-
-	<bean
-		id="org.hisp.dhis.dataelement.DataElementCategoryOptionDeletionHandler"
-		class="org.hisp.dhis.dataelement.DataElementCategoryOptionDeletionHandler">
-		<property name="categoryService"
-			ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
-	</bean>
-
-	<bean
-		id="org.hisp.dhis.dataelement.DataElementCategoryOptionComboDeletionHandler"
-		class="org.hisp.dhis.dataelement.DataElementCategoryOptionComboDeletionHandler">
-		<property name="jdbcTemplate" ref="jdbcTemplate" />
-		<property name="categoryService"
-			ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
-	</bean>
-
-	<bean
-		id="org.hisp.dhis.dataelement.DataElementCategoryComboDeletionHandler"
-		class="org.hisp.dhis.dataelement.DataElementCategoryComboDeletionHandler">
-		<property name="categoryService"
-			ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataset.DataSetDeletionHandler" 
-		class="org.hisp.dhis.dataset.DataSetDeletionHandler">
-		<property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
-	</bean>
-
-	<bean
-		id="org.hisp.dhis.dataset.CompleteDataSetRegistrationDeletionHandler"
-		class="org.hisp.dhis.dataset.CompleteDataSetRegistrationDeletionHandler">
-		<property name="completeDataSetRegistrationService"
-			ref="org.hisp.dhis.dataset.CompleteDataSetRegistrationService" />
-		<property name="jdbcTemplate" ref="jdbcTemplate" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataset.SectionDeletionHandler" 
-		class="org.hisp.dhis.dataset.SectionDeletionHandler">
-		<property name="sectionService" ref="org.hisp.dhis.dataset.SectionService" />
-	</bean>
-
-	<bean
-		id="org.hisp.dhis.dataset.FrequencyOverrideAssociationDeletionHandler"
-		class="org.hisp.dhis.dataset.FrequencyOverrideAssociationDeletionHandler">
-		<property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.expression.ExpressionDeletionHandler"
-		class="org.hisp.dhis.expression.ExpressionDeletionHandler">
-		<property name="expressionService" ref="org.hisp.dhis.expression.ExpressionService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.indicator.IndicatorDeletionHandler" 
-		class="org.hisp.dhis.indicator.IndicatorDeletionHandler">
-		<property name="indicatorService" ref="org.hisp.dhis.indicator.IndicatorService" />
-		<property name="expressionService" ref="org.hisp.dhis.expression.ExpressionService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.indicator.IndicatorGroupDeletionHandler"
-		class="org.hisp.dhis.indicator.IndicatorGroupDeletionHandler">
-		<property name="indicatorService" ref="org.hisp.dhis.indicator.IndicatorService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.minmax.MinMaxDataElementDeletionHandler"
-		class="org.hisp.dhis.minmax.MinMaxDataElementDeletionHandler">
-		<property name="minMaxDataElementService"
-			ref="org.hisp.dhis.minmax.MinMaxDataElementService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.validation.ValidationRuleDeletionHandler"
-		class="org.hisp.dhis.validation.ValidationRuleDeletionHandler">
-		<property name="validationRuleService"
-			ref="org.hisp.dhis.validation.ValidationRuleService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.validation.ValidationRuleGroupDeletionHandler"
-		class="org.hisp.dhis.validation.ValidationRuleGroupDeletionHandler">
-		<property name="validationRuleService"
-			ref="org.hisp.dhis.validation.ValidationRuleService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.datavalue.DataValueDeletionHandler" 
-		class="org.hisp.dhis.datavalue.DataValueDeletionHandler">
-		<property name="jdbcTemplate" ref="jdbcTemplate" />
-	</bean>
-
-	<bean
-		id="org.hisp.dhis.organisationunit.OrganisationUnitGroupDeletionHandler"
-		class="org.hisp.dhis.organisationunit.OrganisationUnitGroupDeletionHandler">
-		<property name="organisationUnitGroupService"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitGroupService" />
-	</bean>
-
-	<bean
-		id="org.hisp.dhis.organisationunit.OrganisationUnitGroupSetDeletionHandler"
-		class="org.hisp.dhis.organisationunit.OrganisationUnitGroupSetDeletionHandler">
-		<property name="organisationUnitGroupService"
-			ref="org.hisp.dhis.organisationunit.OrganisationUnitGroupService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.datavalue.DataValueAuditDeletionHandler"
-		class="org.hisp.dhis.datavalue.DataValueAuditDeletionHandler">
-		<property name="dataValueAuditService"
-			ref="org.hisp.dhis.datavalue.DataValueAuditService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.user.UserDeletionHandler" class="org.hisp.dhis.user.UserDeletionHandler">
-		<property name="userStore" ref="org.hisp.dhis.user.UserStore" />
-	</bean>
-
-	<bean id="org.hisp.dhis.user.UserAuthorityGroupDeletionHandler"
-		class="org.hisp.dhis.user.UserAuthorityGroupDeletionHandler">
-		<property name="userStore" ref="org.hisp.dhis.user.UserStore" />
-	</bean>
-
-	<bean id="org.hisp.dhis.user.UserCredentialsDeletionHandler"
-		class="org.hisp.dhis.user.UserCredentialsDeletionHandler">
-		<property name="userStore" ref="org.hisp.dhis.user.UserStore" />
-	</bean>
-
-	<bean id="org.hisp.dhis.user.UserSettingDeletionHandler" 
-		class="org.hisp.dhis.user.UserSettingDeletionHandler">
-		<property name="userSettingService" ref="org.hisp.dhis.user.UserSettingService" />
-	</bean>
-
-	<bean id="org.hisp.dhis.dataelement.DataElementCategoryDeletionHandler" 
-		class="org.hisp.dhis.dataelement.DataElementCategoryDeletionHandler">
-		<property name="categoryService" 
-			ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
-	</bean>
-	
-	<bean id="org.hisp.dhis.dataelement.DataElementGroupSetDeletionHandler"
-		class="org.hisp.dhis.dataelement.DataElementGroupSetDeletionHandler">
-		<property name="dataElementService" 
-			ref="org.hisp.dhis.dataelement.DataElementService" />
-	</bean>
-	
-	<!-- Security -->
-
-	<bean id="org.hisp.dhis.security.PasswordManager"
-		class="org.hisp.dhis.security.spring.SpringSecurityPasswordManager">
-		<property name="passwordEncoder" ref="passwordEncoder" />
-		<property name="usernameSaltSource" ref="usernameSaltSource" />
-	</bean>
-
-	<bean id="authenticationManager"
-		class="org.springframework.security.authentication.ProviderManager">
-		<property name="providers" ref="daoAuthenticationProvider" />
-		<property name="authenticationEventPublisher" ref="defaultAuthenticationEventPublisher" />
-	</bean>
-
-	<bean id="defaultAuthenticationEventPublisher"
-		class="org.springframework.security.authentication.DefaultAuthenticationEventPublisher" />
-
-	<bean id="daoAuthenticationProvider"
-		class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
-		<property name="userDetailsService" ref="userDetailsService" />
-		<property name="passwordEncoder" ref="passwordEncoder" />
-		<property name="saltSource" ref="usernameSaltSource" />
-	</bean>
-
-	<bean id="userDetailsService"
-		class="org.hisp.dhis.security.hibernate.HibernateUserDetailsService">
-		<property name="sessionFactory" ref="sessionFactory"/>
-	</bean>
-
-	<bean id="passwordEncoder"
-		class="org.springframework.security.authentication.encoding.Md5PasswordEncoder" />
-
-	<bean id="usernameSaltSource" class="org.hisp.dhis.security.DefaultUsernameSaltSource" />
-
-	<!-- DeletionManager -->
-
-	<bean
-		class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
-		<property name="targetObject" ref="deletionManager" />
-		<property name="targetMethod" value="addDeletionHandlers" />
-		<property name="arguments">
-			<list>
-				<list>
-					<ref 
-						local="org.hisp.dhis.datadictionary.DataDictionaryDeletionHandler" />
-					<ref 
-						local="org.hisp.dhis.dataelement.DataElementDeletionHandler" />
-					<ref 
-						local="org.hisp.dhis.dataelement.DataElementGroupDeletionHandler" />
-					<ref
-						local="org.hisp.dhis.dataelement.DataElementCategoryOptionDeletionHandler" />
-					<ref
-						local="org.hisp.dhis.dataelement.DataElementCategoryOptionComboDeletionHandler" />
-					<ref
-						local="org.hisp.dhis.dataelement.DataElementCategoryComboDeletionHandler" />
-					<ref 
-						local="org.hisp.dhis.dataset.DataSetDeletionHandler" />
-					<ref
-						local="org.hisp.dhis.dataset.CompleteDataSetRegistrationDeletionHandler" />
-					<ref 
-						local="org.hisp.dhis.dataset.SectionDeletionHandler" />
-					<ref 
-						local="org.hisp.dhis.dataentryform.DataEntryFormDeletionHandler" />
-					<ref
-						local="org.hisp.dhis.dataset.FrequencyOverrideAssociationDeletionHandler" />
-					<ref 
-						local="org.hisp.dhis.expression.ExpressionDeletionHandler" />
-					<ref 
-						local="org.hisp.dhis.indicator.IndicatorDeletionHandler" />
-					<ref 
-						local="org.hisp.dhis.indicator.IndicatorGroupDeletionHandler" />
-					<ref 
-						local="org.hisp.dhis.minmax.MinMaxDataElementDeletionHandler" />
-					<ref 
-						local="org.hisp.dhis.validation.ValidationRuleDeletionHandler" />
-					<ref 
-						local="org.hisp.dhis.validation.ValidationRuleGroupDeletionHandler" />
-					<ref 
-						local="org.hisp.dhis.datavalue.DataValueDeletionHandler" />
-					<ref 
-						local="org.hisp.dhis.datavalue.DataValueAuditDeletionHandler" />
-					<ref
-						local="org.hisp.dhis.organisationunit.OrganisationUnitGroupDeletionHandler" />
-					<ref
-						local="org.hisp.dhis.organisationunit.OrganisationUnitGroupSetDeletionHandler" />
-					<ref 
-						local="org.hisp.dhis.user.UserDeletionHandler" />
-					<ref 
-						local="org.hisp.dhis.user.UserAuthorityGroupDeletionHandler" />
-					<ref 
-						local="org.hisp.dhis.user.UserCredentialsDeletionHandler" />
-					<ref 
-						local="org.hisp.dhis.user.UserSettingDeletionHandler" />
-					<ref 
-						local="org.hisp.dhis.dataelement.DataElementCategoryDeletionHandler" />
-					<ref 
-						local="org.hisp.dhis.dataelement.DataElementGroupSetDeletionHandler" />
-				</list>
-			</list>
-		</property>
-	</bean>
-
-	<!-- Min/Max validation -->
-
-	<bean id="org.hisp.dhis.minmax.validation.MinMaxValuesGenerationService"
-		class="org.hisp.dhis.minmax.validation.DefaultMinMaxValuesGenerationService">
-		<property name="dataAnalysisStore"
-			ref="org.hisp.dhis.dataanalysis.jdbc.DataAnalysisStore" />
-	</bean>
-
-	<!-- AOP definitions -->
-
-	<aop:config>
-
-		<aop:aspect ref="deletionInterceptor">
-			<aop:before
-				pointcut="execution( * org.hisp.dhis.datadictionary.DataDictionaryService.delete*(..) )"
-				method="intercept" />
-			<aop:before
-				pointcut="execution( * org.hisp.dhis.dataelement.DataElementService.delete*(..) )"
-				method="intercept" />
-			<aop:before
-				pointcut="execution( * org.hisp.dhis.dataelement.DataElementCategoryService.delete*(..) )"
-				method="intercept" />
-			<aop:before
-				pointcut="execution( * org.hisp.dhis.dataset.DataSetService.delete*(..) )"
-				method="intercept" />
-			<aop:before
-				pointcut="execution( * org.hisp.dhis.indicator.IndicatorService.delete*(..) )"
-				method="intercept" />
-			<aop:before
-				pointcut="execution( * org.hisp.dhis.expression.ExpressionService.delete*(..) )"
-				method="intercept" />
-			<aop:before
-				pointcut="execution( * org.hisp.dhis.minmax.MinMaxDataElementService.delete*(..) )"
-				method="intercept" />
-			<aop:before
-				pointcut="execution( * org.hisp.dhis.validation.ValidationRuleService.delete*(..) )"
-				method="intercept" />
-			<aop:before
-				pointcut="execution( * org.hisp.dhis.period.PeriodService.delete*(..) )"
-				method="intercept" />
-			<aop:before
-				pointcut="execution( * org.hisp.dhis.organisationunit.OrganisationUnitService.delete*(..) )"
-				method="intercept" />
-			<aop:before
-				pointcut="execution( * org.hisp.dhis.organisationunit.OrganisationUnitGroupService.delete*(..) )"
-				method="intercept" />
-			<aop:before pointcut="execution( * org.hisp.dhis.user.UserStore.delete*(..) )"
-				method="intercept" />
-			<aop:before pointcut="execution( * org.hisp.dhis.concept.ConceptService.delete*(..) )"
-				method="intercept" />
-		</aop:aspect>
-
-		<aop:aspect ref="statementInterceptor">
-			<aop:around
-				pointcut="execution( * org.hisp.dhis.validation.ValidationRuleService.validate*(..) )"
-				method="intercept" />
-			<aop:around
-				pointcut="execution( * org.hisp.dhis.dataanalysis.DataAnalysisService.analyse(..) )"
-				method="intercept" />
-		</aop:aspect>
-
-		<!--
-			<aop:aspect ref="i18nTranslationInterceptor"> <aop:after-returning
-			pointcut="execution( *
-			org.hisp.dhis.dataelement.DataElementService.get*(..) )"
-			method="intercept" returning="object"/> <aop:after-returning
-			pointcut="execution( *
-			org.hisp.dhis.dataelement.DataElementCategoryService.get*(..) )"
-			method="intercept" returning="object"/> <aop:after-returning
-			pointcut="execution( *
-			org.hisp.dhis.indicator.IndicatorService.get*(..) )"
-			method="intercept" returning="object"/> <aop:after-returning
-			pointcut="execution( *
-			org.hisp.dhis.datadictionary.DataDictionaryService.get*(..) )"
-			method="intercept" returning="object"/> <aop:after-returning
-			pointcut="execution( * org.hisp.dhis.dataset.DataSetService.get*(..)
-			)" method="intercept" returning="object"/> <aop:after-returning
-			pointcut="execution( *
-			org.hisp.dhis.organisationunit.OrganisationUnitService.get*(..) )"
-			method="intercept" returning="object"/> <aop:after-returning
-			pointcut="execution( *
-			org.hisp.dhis.organisationunit.OrganisationUnitGroupService.get*(..)
-			)" method="intercept" returning="object"/> </aop:aspect>
-		-->
-
-	</aop:config>
+  <!-- Store definitions -->
+
+  <bean id="org.hisp.dhis.dataelement.DataElementOperandStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
+    <property name="clazz" value="org.hisp.dhis.dataelement.DataElementOperand" />
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataentryform.DataEntryFormStore" class="org.hisp.dhis.dataentryform.hibernate.HibernateDataEntryFormStore">
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.customvalue.CustomValueStore" class="org.hisp.dhis.customvalue.hibernate.HibernateCustomValueStore">
+    <property name="clazz" value="org.hisp.dhis.customvalue.CustomValue" />
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataelement.DataElementStore" class="org.hisp.dhis.dataelement.hibernate.HibernateDataElementStore">
+    <property name="clazz" value="org.hisp.dhis.dataelement.DataElement" />
+    <property name="sessionFactory" ref="sessionFactory" />
+    <property name="statementManager" ref="statementManager" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataelement.DataElementGroupStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
+    <property name="clazz" value="org.hisp.dhis.dataelement.DataElementGroup" />
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataelement.DataElementGroupSetStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
+    <property name="clazz" value="org.hisp.dhis.dataelement.DataElementGroupSet" />
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.datadictionary.DataDictionaryStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
+    <property name="clazz" value="org.hisp.dhis.datadictionary.DataDictionary" />
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.datavalue.DataValueStore" class="org.hisp.dhis.datavalue.hibernate.HibernateDataValueStore">
+    <property name="sessionFactory" ref="sessionFactory" />
+    <property name="statementManager" ref="statementManager" />
+    <property name="periodStore" ref="org.hisp.dhis.period.PeriodStore" />
+  </bean>
+
+  <bean id="org.hisp.dhis.indicator.IndicatorStore" class="org.hisp.dhis.indicator.hibernate.HibernateIndicatorStore">
+    <property name="clazz" value="org.hisp.dhis.indicator.Indicator" />
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.indicator.IndicatorTypeStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
+    <property name="clazz" value="org.hisp.dhis.indicator.IndicatorType" />
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.indicator.IndicatorGroupStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
+    <property name="clazz" value="org.hisp.dhis.indicator.IndicatorGroup" />
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.indicator.IndicatorGroupSetStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
+    <property name="clazz" value="org.hisp.dhis.indicator.IndicatorGroupSet" />
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.period.PeriodStore" class="org.hisp.dhis.period.hibernate.HibernatePeriodStore">
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.source.SourceStore" class="org.hisp.dhis.source.hibernate.HibernateSourceStore">
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataset.DataSetStore" class="org.hisp.dhis.dataset.hibernate.HibernateDataSetStore">
+    <property name="clazz" value="org.hisp.dhis.dataset.DataSet" />
+    <property name="sessionFactory" ref="sessionFactory" />
+    <property name="periodStore" ref="org.hisp.dhis.period.PeriodStore" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataset.CompleteDataSetRegistrationStore" class="org.hisp.dhis.dataset.hibernate.HibernateCompleteDataSetRegistrationStore">
+    <property name="sessionFactory" ref="sessionFactory" />
+    <property name="periodService" ref="org.hisp.dhis.period.PeriodService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.minmax.MinMaxDataElementStore" class="org.hisp.dhis.minmax.hibernate.HibernateMinMaxDataElementStore">
+    <property name="clazz" value="org.hisp.dhis.minmax.MinMaxDataElement" />
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.expression.ExpressionStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
+    <property name="clazz" value="org.hisp.dhis.expression.Expression" />
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.validation.ValidationRuleStore" class="org.hisp.dhis.validation.hibernate.HibernateValidationRuleStore">
+    <property name="clazz" value="org.hisp.dhis.validation.ValidationRule" />
+    <property name="sessionFactory" ref="sessionFactory" />
+    <property name="periodStore" ref="org.hisp.dhis.period.PeriodStore" />
+  </bean>
+
+  <bean id="org.hisp.dhis.validation.ValidationRuleGroupStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
+    <property name="clazz" value="org.hisp.dhis.validation.ValidationRuleGroup" />
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataelement.DataElementCategoryStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
+    <property name="clazz" value="org.hisp.dhis.dataelement.DataElementCategory" />
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataelement.DataElementCategoryOptionStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
+    <property name="clazz" value="org.hisp.dhis.dataelement.DataElementCategoryOption" />
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataelement.DataElementCategoryComboStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
+    <property name="clazz" value="org.hisp.dhis.dataelement.DataElementCategoryCombo" />
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataelement.DataElementCategoryOptionComboStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
+    <property name="clazz" value="org.hisp.dhis.dataelement.DataElementCategoryOptionCombo" />
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataset.SectionStore" class="org.hisp.dhis.dataset.hibernate.HibernateSectionStore">
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.organisationunit.OrganisationUnitStore" class="org.hisp.dhis.organisationunit.hibernate.HibernateOrganisationUnitStore">
+    <property name="sessionFactory" ref="sessionFactory" />
+    <property name="statementManager" ref="statementManager" />
+    <property name="jdbcTemplate" ref="jdbcTemplate" />
+  </bean>
+
+  <bean id="org.hisp.dhis.organisationunit.OrganisationUnitGroupStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
+    <property name="clazz" value="org.hisp.dhis.organisationunit.OrganisationUnitGroup" />
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.organisationunit.OrganisationUnitGroupSetStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
+    <property name="clazz" value="org.hisp.dhis.organisationunit.OrganisationUnitGroupSet" />
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataanalysis.jdbc.DataAnalysisStore" class="org.hisp.dhis.dataanalysis.jdbc.JdbcDataAnalysisStore">
+    <property name="statementManager" ref="statementManager" />
+    <property name="statementBuilder" ref="statementBuilder" />
+  </bean>
+
+  <bean id="org.hisp.dhis.datavalue.DataValueAuditStore" class="org.hisp.dhis.datavalue.hibernate.HibernateDataValueAuditStore">
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.user.UserStore" class="org.hisp.dhis.user.hibernate.HibernateUserStore">
+    <property name="sessionFactory" ref="sessionFactory" />
+    <property name="userRoleStore" ref="org.hisp.dhis.user.UserAuthorityGroupStore" />
+    <property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.user.UserGroupStore" class="org.hisp.dhis.user.hibernate.HiberntateUserGroupStore">
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+
+  <bean id="org.hisp.dhis.validation.ValidationCriteriaStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
+    <property name="clazz" value="org.hisp.dhis.validation.ValidationCriteria" />
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.translation.TranslationStore" class="org.hisp.dhis.translation.hibernate.HibernateTranslationStore">
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.aggregation.AggregatedDataValueStore" class="org.hisp.dhis.aggregation.jdbc.JdbcAggregatedDataValueStore">
+    <property name="statementManager" ref="statementManager" />
+  </bean>
+
+  <bean id="org.hisp.dhis.user.UserAuthorityGroupStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
+    <property name="clazz" value="org.hisp.dhis.user.UserAuthorityGroup" />
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+
+  <!-- Service definitions -->
+
+  <bean id="org.hisp.dhis.dataelement.DataElementOperandService" class="org.hisp.dhis.dataelement.DefaultDataElementOperandService">
+    <property name="dataElementOperandStore" ref="org.hisp.dhis.dataelement.DataElementOperandStore" />
+  </bean>
+
+  <bean id="org.hisp.dhis.customvalue.CustomValueService" class="org.hisp.dhis.customvalue.DefaultCustomValueService">
+    <property name="customValueStore" ref="org.hisp.dhis.customvalue.CustomValueStore" />
+  </bean>
+
+  <bean id="org.hisp.dhis.datavalue.DataValueService" class="org.hisp.dhis.datavalue.DefaultDataValueService">
+    <property name="dataValueStore" ref="org.hisp.dhis.datavalue.DataValueStore" />
+    <property name="dataValueAuditService" ref="org.hisp.dhis.datavalue.DataValueAuditService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.datavalue.DataValueAuditService" class="org.hisp.dhis.datavalue.DefaultDataValueAuditService">
+    <property name="dataValueAuditStore" ref="org.hisp.dhis.datavalue.DataValueAuditStore" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataelement.DataElementService" class="org.hisp.dhis.dataelement.DefaultDataElementService">
+    <property name="dataElementStore" ref="org.hisp.dhis.dataelement.DataElementStore" />
+    <property name="dataElementGroupStore" ref="org.hisp.dhis.dataelement.DataElementGroupStore" />
+    <property name="dataElementGroupSetStore" ref="org.hisp.dhis.dataelement.DataElementGroupSetStore" />
+    <property name="i18nService" ref="org.hisp.dhis.i18n.I18nService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.minmax.MinMaxDataElementService" class="org.hisp.dhis.minmax.DefaultMinMaxDataElementService">
+    <property name="minMaxDataElementStore" ref="org.hisp.dhis.minmax.MinMaxDataElementStore" />
+  </bean>
+
+  <bean id="org.hisp.dhis.datadictionary.DataDictionaryService" class="org.hisp.dhis.datadictionary.DefaultDataDictionaryService">
+    <property name="dataDictionaryStore" ref="org.hisp.dhis.datadictionary.DataDictionaryStore" />
+    <property name="i18nService" ref="org.hisp.dhis.i18n.I18nService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.indicator.IndicatorService" class="org.hisp.dhis.indicator.DefaultIndicatorService">
+    <property name="indicatorStore" ref="org.hisp.dhis.indicator.IndicatorStore" />
+    <property name="indicatorTypeStore" ref="org.hisp.dhis.indicator.IndicatorTypeStore" />
+    <property name="indicatorGroupStore" ref="org.hisp.dhis.indicator.IndicatorGroupStore" />
+    <property name="indicatorGroupSetStore" ref="org.hisp.dhis.indicator.IndicatorGroupSetStore" />
+    <property name="i18nService" ref="org.hisp.dhis.i18n.I18nService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.period.PeriodService" class="org.hisp.dhis.period.DefaultPeriodService">
+    <property name="periodStore" ref="org.hisp.dhis.period.PeriodStore" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataset.DataSetService" class="org.hisp.dhis.dataset.DefaultDataSetService">
+    <property name="dataSetStore" ref="org.hisp.dhis.dataset.DataSetStore" />
+    <property name="i18nService" ref="org.hisp.dhis.i18n.I18nService" />
+    <property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataset.CompleteDataSetRegistrationService" class="org.hisp.dhis.dataset.DefaultCompleteDataSetRegistrationService">
+    <property name="completeDataSetRegistrationStore" ref="org.hisp.dhis.dataset.CompleteDataSetRegistrationStore" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataset.SectionService" class="org.hisp.dhis.dataset.DefaultSectionService">
+    <property name="sectionStore" ref="org.hisp.dhis.dataset.SectionStore" />
+    <property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
+    <property name="i18nService" ref="org.hisp.dhis.i18n.I18nService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataentryform.DataEntryFormService" class="org.hisp.dhis.dataentryform.DefaultDataEntryFormService">
+    <property name="dataEntryFormStore" ref="org.hisp.dhis.dataentryform.DataEntryFormStore" />
+  </bean>
+
+  <bean id="org.hisp.dhis.expression.ExpressionService" class="org.hisp.dhis.expression.DefaultExpressionService">
+    <property name="expressionStore" ref="org.hisp.dhis.expression.ExpressionStore" />
+    <property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
+    <property name="dataValueService" ref="org.hisp.dhis.datavalue.DataValueService" />
+    <property name="aggregatedDataValueService" ref="org.hisp.dhis.aggregation.AggregatedDataValueService" />
+    <property name="categoryService" ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.validation.ValidationRuleService" class="org.hisp.dhis.validation.DefaultValidationRuleService">
+    <property name="validationRuleStore" ref="org.hisp.dhis.validation.ValidationRuleStore" />
+    <property name="validationRuleGroupStore" ref="org.hisp.dhis.validation.ValidationRuleGroupStore" />
+    <property name="expressionService" ref="org.hisp.dhis.expression.ExpressionService" />
+    <property name="periodService" ref="org.hisp.dhis.period.PeriodService" />
+    <property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
+    <property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataelement.DataElementCategoryService" class="org.hisp.dhis.dataelement.DefaultDataElementCategoryService">
+    <property name="dataElementCategoryStore" ref="org.hisp.dhis.dataelement.DataElementCategoryStore" />
+    <property name="dataElementCategoryOptionStore" ref="org.hisp.dhis.dataelement.DataElementCategoryOptionStore" />
+    <property name="dataElementCategoryComboStore" ref="org.hisp.dhis.dataelement.DataElementCategoryComboStore" />
+    <property name="dataElementCategoryOptionComboStore" ref="org.hisp.dhis.dataelement.DataElementCategoryOptionComboStore" />
+    <property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dimension.DimensionService" class="org.hisp.dhis.dimension.DefaultDimensionService">
+    <property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
+    <property name="categoryService" ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.organisationunit.OrganisationUnitService" class="org.hisp.dhis.organisationunit.DefaultOrganisationUnitService">
+    <property name="sourceStore" ref="org.hisp.dhis.source.SourceStore" />
+    <property name="organisationUnitStore" ref="org.hisp.dhis.organisationunit.OrganisationUnitStore" />
+    <property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.organisationunit.OrganisationUnitGroupService" class="org.hisp.dhis.organisationunit.DefaultOrganisationUnitGroupService">
+    <property name="organisationUnitGroupStore" ref="org.hisp.dhis.organisationunit.OrganisationUnitGroupStore" />
+    <property name="organisationUnitGroupSetStore" ref="org.hisp.dhis.organisationunit.OrganisationUnitGroupSetStore" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataanalysis.StdDevOutlierAnalysisService" class="org.hisp.dhis.dataanalysis.StdDevOutlierAnalysisService">
+    <property name="organisationUnitService" ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
+    <property name="dataAnalysisStore" ref="org.hisp.dhis.dataanalysis.jdbc.DataAnalysisStore" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataanalysis.MinMaxOutlierAnalysisService" class="org.hisp.dhis.dataanalysis.MinMaxOutlierAnalysisService">
+    <property name="organisationUnitService" ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
+    <property name="minMaxDataElementService" ref="org.hisp.dhis.minmax.MinMaxDataElementService" />
+    <property name="dataAnalysisStore" ref="org.hisp.dhis.dataanalysis.jdbc.DataAnalysisStore" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataanalysis.GapAnalysisService" class="org.hisp.dhis.dataanalysis.GapAnalysisService">
+    <property name="organisationUnitService" ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
+    <property name="dataAnalysisStore" ref="org.hisp.dhis.dataanalysis.jdbc.DataAnalysisStore" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataanalysis.FollowupAnalysisService" class="org.hisp.dhis.dataanalysis.FollowupAnalysisService">
+    <property name="dataAnalysisStore" ref="org.hisp.dhis.dataanalysis.jdbc.DataAnalysisStore" />
+  </bean>
+
+  <bean id="dataAnalysisServiceProvider" class="org.hisp.dhis.common.ServiceProvider">
+    <property name="services">
+      <map>
+        <entry>
+          <key>
+            <value>stddevoutlier</value>
+          </key>
+          <ref bean="org.hisp.dhis.dataanalysis.StdDevOutlierAnalysisService" />
+        </entry>
+        <entry>
+          <key>
+            <value>minmaxoutlier</value>
+          </key>
+          <ref bean="org.hisp.dhis.dataanalysis.MinMaxOutlierAnalysisService" />
+        </entry>
+        <entry>
+          <key>
+            <value>gap</value>
+          </key>
+          <ref bean="org.hisp.dhis.dataanalysis.GapAnalysisService" />
+        </entry>
+        <entry>
+          <key>
+            <value>followup</value>
+          </key>
+          <ref bean="org.hisp.dhis.dataanalysis.FollowupAnalysisService" />
+        </entry>
+      </map>
+    </property>
+  </bean>
+
+  <bean id="org.hisp.dhis.user.CurrentUserService" class="org.hisp.dhis.user.DefaultCurrentUserService">
+    <property name="userStore" ref="org.hisp.dhis.user.UserStore" />
+  </bean>
+
+  <bean id="org.hisp.dhis.user.UserSettingService" class="org.hisp.dhis.user.DefaultUserSettingService">
+    <property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
+    <property name="userStore" ref="org.hisp.dhis.user.UserStore" />
+  </bean>
+
+  <bean id="org.hisp.dhis.user.UserService" class="org.hisp.dhis.user.DefaultUserService">
+    <property name="userStore" ref="org.hisp.dhis.user.UserStore" />
+  </bean>
+
+  <bean id="org.hisp.dhis.user.UserGroupService" class="org.hisp.dhis.user.DefaultUserGroupService">
+    <property name="userGroupStore" ref="org.hisp.dhis.user.UserGroupStore" />
+  </bean>
+
+
+
+  <bean id="org.hisp.dhis.validation.ValidationCriteriaService" class="org.hisp.dhis.validation.DefaultValidationCriteriaService">
+    <property name="validationCriteriaStore" ref="org.hisp.dhis.validation.ValidationCriteriaStore" />
+  </bean>
+
+  <bean id="org.hisp.dhis.translation.TranslationService" class="org.hisp.dhis.translation.DefaultTranslationService">
+    <property name="translationStore" ref="org.hisp.dhis.translation.TranslationStore" />
+  </bean>
+
+  <bean id="org.hisp.dhis.i18n.locale.LocaleManagerDb" class="org.hisp.dhis.i18n.locale.DatabaseLocaleManager">
+    <property name="userSettingService" ref="org.hisp.dhis.user.UserSettingService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataset.PivotDataSetAssociationTableService" class="org.hisp.dhis.dataset.DefaultPivotDataSetAssociationTableService">
+    <property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
+    <property name="organisationUnitService" ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
+    <property name="periodService" ref="org.hisp.dhis.period.PeriodService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.aggregation.AggregatedDataValueService" class="org.hisp.dhis.aggregation.DefaultAggregatedDataValueService">
+    <property name="aggregatedDataValueStore" ref="org.hisp.dhis.aggregation.AggregatedDataValueStore" />
+  </bean>
+
+  <!-- Concept Name -->
+
+  <bean id="org.hisp.dhis.concept.ConceptStore" class="org.hisp.dhis.hibernate.HibernateGenericStore">
+    <property name="clazz" value="org.hisp.dhis.concept.Concept" />
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="org.hisp.dhis.concept.ConceptService" class="org.hisp.dhis.concept.DefaultConceptService">
+    <property name="conceptStore" ref="org.hisp.dhis.concept.ConceptStore" />
+  </bean>
+
+  <!-- I18nService -->
+
+  <bean id="org.hisp.dhis.i18n.I18nService" class="org.hisp.dhis.i18n.DefaultI18nService">
+    <property name="localeManager">
+      <ref bean="org.hisp.dhis.i18n.locale.LocaleManagerDb" />
+    </property>
+    <property name="translationService">
+      <ref bean="org.hisp.dhis.translation.TranslationService" />
+    </property>
+    <property name="objects">
+      <list>
+        <ref bean="I18nDataElement" />
+        <ref bean="I18nDataElementGroup" />
+        <ref bean="I18nDataElementGroupSet" />
+        <ref bean="I18nDataDictionary" />
+        <ref bean="I18nIndicator" />
+        <ref bean="I18nIndicatorType" />
+        <ref bean="I18nIndicatorGroup" />
+        <ref bean="I18nIndicatorGroupSet" />
+        <ref bean="I18nDataSet" />
+        <ref bean="I18nOrganisationUnit" />
+        <ref bean="I18nReportExcelNormal" />
+        <ref bean="I18nReportExcelCategory" />
+        <ref bean="I18nReportExcelOganiztionGroupListing" />
+        <ref bean="I18nReportExcelPeriodColumnListing" />
+        <ref bean="I18nReportExcelItem" />
+        <ref bean="I18nExcelItemGroup" />
+        <ref bean="I18nExcelItem" />
+        <ref bean="I18nSection" />
+      </list>
+    </property>
+  </bean>
+
+  <!-- I18n object definitions -->
+
+  <bean id="I18nDataElement" class="org.hisp.dhis.i18n.I18nObject">
+    <property name="className" value="DataElement" />
+    <property name="propertyNames">
+      <list>
+        <value>name</value>
+        <value>shortName</value>
+        <value>description</value>
+      </list>
+    </property>
+
+    <property name="rulePropertyNames">
+      <map>
+        <entry key="name">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="true" />
+            <entry key="minlength" value="2" />
+            <entry key="maxlength" value="160" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+        <entry key="shortName">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="false" />
+            <entry key="minlength" value="0" />
+            <entry key="maxlength" value="25" />
+            <entry key="regex" value="/^[\w]?[\w\d]*$/" />
+            <entry key="message" value="translation_shortname_wellformed" />
+          </map>
+        </entry>
+        <entry key="description">
+          <map>
+            <entry key="unique" value="false" />
+            <entry key="required" value="false" />
+            <entry key="minlength" value="0" />
+            <entry key="maxlength" value="200" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+      </map>
+    </property>
+  </bean>
+
+  <bean id="I18nDataElementGroup" class="org.hisp.dhis.i18n.I18nObject">
+    <property name="className" value="DataElementGroup" />
+    <property name="propertyNames">
+      <list>
+        <value>name</value>
+      </list>
+    </property>
+
+    <property name="rulePropertyNames">
+      <map>
+        <entry key="name">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="true" />
+            <entry key="minlength" value="2" />
+            <entry key="maxlength" value="160" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+      </map>
+    </property>
+
+  </bean>
+
+  <bean id="I18nDataElementGroupSet" class="org.hisp.dhis.i18n.I18nObject">
+    <property name="className" value="DataElementGroupSet" />
+    <property name="propertyNames">
+      <list>
+        <value>name</value>
+      </list>
+    </property>
+
+    <property name="rulePropertyNames">
+      <map>
+        <entry key="name">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="true" />
+            <entry key="minlength" value="2" />
+            <entry key="maxlength" value="160" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+      </map>
+    </property>
+  </bean>
+
+  <bean id="I18nIndicator" class="org.hisp.dhis.i18n.I18nObject">
+    <property name="className" value="Indicator" />
+    <property name="propertyNames">
+      <list>
+        <value>name</value>
+        <value>shortName</value>
+        <value>description</value>
+        <value>numeratorDescription</value>
+        <value>denominatorDescription</value>
+      </list>
+    </property>
+
+    <property name="rulePropertyNames">
+      <map>
+        <entry key="name">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="true" />
+            <entry key="minlength" value="2" />
+            <entry key="maxlength" value="160" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+        <entry key="shortName">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="false" />
+            <entry key="minlength" value="0" />
+            <entry key="maxlength" value="25" />
+            <entry key="regex" value="/^[\w]?[\w\d]*$/" />
+            <entry key="message" value="translation_shortname_wellformed" />
+          </map>
+        </entry>
+        <entry key="description">
+          <map>
+            <entry key="unique" value="false" />
+            <entry key="required" value="false" />
+            <entry key="minlength" value="0" />
+            <entry key="maxlength" value="200" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+        <entry key="numeratorDescription">
+          <map>
+            <entry key="unique" value="false" />
+            <entry key="required" value="false" />
+            <entry key="minlength" value="0" />
+            <entry key="maxlength" value="100" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+        <entry key="denominatorDescription">
+          <map>
+            <entry key="unique" value="false" />
+            <entry key="required" value="false" />
+            <entry key="minlength" value="0" />
+            <entry key="maxlength" value="100" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+      </map>
+    </property>
+  </bean>
+
+  <bean id="I18nIndicatorType" class="org.hisp.dhis.i18n.I18nObject">
+    <property name="className" value="IndicatorType" />
+    <property name="propertyNames">
+      <list>
+        <value>name</value>
+      </list>
+    </property>
+
+    <property name="rulePropertyNames">
+      <map>
+        <entry key="name">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="true" />
+            <entry key="minlength" value="2" />
+            <entry key="maxlength" value="160" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+      </map>
+    </property>
+  </bean>
+
+  <bean id="I18nIndicatorGroup" class="org.hisp.dhis.i18n.I18nObject">
+    <property name="className" value="IndicatorGroup" />
+    <property name="propertyNames">
+      <list>
+        <value>name</value>
+      </list>
+    </property>
+
+    <property name="rulePropertyNames">
+      <map>
+        <entry key="name">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="true" />
+            <entry key="minlength" value="2" />
+            <entry key="maxlength" value="160" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+      </map>
+    </property>
+  </bean>
+
+  <bean id="I18nIndicatorGroupSet" class="org.hisp.dhis.i18n.I18nObject">
+    <property name="className" value="IndicatorGroupSet" />
+    <property name="propertyNames">
+      <list>
+        <value>name</value>
+      </list>
+    </property>
+
+    <property name="rulePropertyNames">
+      <map>
+        <entry key="name">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="true" />
+            <entry key="minlength" value="2" />
+            <entry key="maxlength" value="160" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+      </map>
+    </property>
+  </bean>
+
+  <bean id="I18nDataDictionary" class="org.hisp.dhis.i18n.I18nObject">
+    <property name="className" value="DataDictionary" />
+    <property name="propertyNames">
+      <list>
+        <value>name</value>
+        <value>description</value>
+        <value>region</value>
+      </list>
+    </property>
+
+    <property name="rulePropertyNames">
+      <map>
+        <entry key="name">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="true" />
+            <entry key="minlength" value="2" />
+            <entry key="maxlength" value="160" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+        <entry key="description">
+          <map>
+            <entry key="unique" value="false" />
+            <entry key="required" value="false" />
+            <entry key="minlength" value="0" />
+            <entry key="maxlength" value="200" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+        <entry key="region">
+          <map>
+            <entry key="unique" value="false" />
+            <entry key="required" value="false" />
+            <entry key="minlength" value="0" />
+            <entry key="maxlength" value="255" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+      </map>
+    </property>
+  </bean>
+
+  <bean id="I18nOrganisationUnit" class="org.hisp.dhis.i18n.I18nObject">
+    <property name="className" value="OrganisationUnit" />
+    <property name="propertyNames">
+      <list>
+        <value>name</value>
+        <value>shortName</value>
+        <value>comment</value>
+      </list>
+    </property>
+
+    <property name="rulePropertyNames">
+      <map>
+        <entry key="name">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="true" />
+            <entry key="minlength" value="2" />
+            <entry key="maxlength" value="160" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+        <entry key="shortName">
+          <map>
+            <entry key="unique" value="false" />
+            <entry key="required" value="false" />
+            <entry key="minlength" value="0" />
+            <entry key="maxlength" value="25" />
+            <entry key="regex" value="/^[\w]?[\w\d]*$/" />
+            <entry key="message" value="translation_shortname_wellformed" />
+          </map>
+        </entry>
+        <entry key="comment">
+          <map>
+            <entry key="unique" value="false" />
+            <entry key="required" value="false" />
+            <entry key="minlength" value="0" />
+            <entry key="maxlength" value="360" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+      </map>
+    </property>
+  </bean>
+
+  <bean id="I18nOrganisationUnitGroup" class="org.hisp.dhis.i18n.I18nObject">
+    <property name="className" value="OrganisationUnitGroup" />
+    <property name="propertyNames">
+      <list>
+        <value>name</value>
+      </list>
+    </property>
+
+    <property name="rulePropertyNames">
+      <map>
+        <entry key="name">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="true" />
+            <entry key="minlength" value="2" />
+            <entry key="maxlength" value="160" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+      </map>
+    </property>
+  </bean>
+
+  <bean id="I18nOrganisationUnitGroupSet" class="org.hisp.dhis.i18n.I18nObject">
+    <property name="className" value="OrganisationUnitGroupSet" />
+    <property name="propertyNames">
+      <list>
+        <value>name</value>
+        <value>description</value>
+      </list>
+    </property>
+
+    <property name="rulePropertyNames">
+      <map>
+        <entry key="name">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="true" />
+            <entry key="minlength" value="2" />
+            <entry key="maxlength" value="160" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+        <entry key="description">
+          <map>
+            <entry key="unique" value="false" />
+            <entry key="required" value="false" />
+            <entry key="minlength" value="0" />
+            <entry key="maxlength" value="200" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+      </map>
+    </property>
+  </bean>
+
+  <bean id="I18nDataSet" class="org.hisp.dhis.i18n.I18nObject">
+    <property name="className" value="DataSet" />
+    <property name="propertyNames">
+      <list>
+        <value>name</value>
+        <value>shortName</value>
+      </list>
+    </property>
+
+    <property name="rulePropertyNames">
+      <map>
+        <entry key="name">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="true" />
+            <entry key="minlength" value="2" />
+            <entry key="maxlength" value="160" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+        <entry key="shortName">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="false" />
+            <entry key="minlength" value="0" />
+            <entry key="maxlength" value="25" />
+            <entry key="regex" value="/^[\w]?[\w\d]*$/" />
+            <entry key="message" value="translation_shortname_wellformed" />
+          </map>
+        </entry>
+      </map>
+    </property>
+  </bean>
+
+  <bean id="I18nDataElementCategory" class="org.hisp.dhis.i18n.I18nObject">
+    <property name="className" value="DataElementCategory" />
+    <property name="propertyNames">
+      <list>
+        <value>name</value>
+      </list>
+    </property>
+
+    <property name="rulePropertyNames">
+      <map>
+        <entry key="name">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="true" />
+            <entry key="minlength" value="2" />
+            <entry key="maxlength" value="160" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+      </map>
+    </property>
+  </bean>
+
+  <bean id="I18nReportExcelNormal" class="org.hisp.dhis.i18n.I18nObject">
+    <property name="className" value="ReportExcelNormal" />
+    <property name="propertyNames">
+      <list>
+        <value>name</value>
+      </list>
+    </property>
+
+    <property name="rulePropertyNames">
+      <map>
+        <entry key="name">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="true" />
+            <entry key="minlength" value="2" />
+            <entry key="maxlength" value="160" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+      </map>
+    </property>
+  </bean>
+
+  <bean id="I18nReportExcelCategory" class="org.hisp.dhis.i18n.I18nObject">
+    <property name="className" value="ReportExcelCategory" />
+    <property name="propertyNames">
+      <list>
+        <value>name</value>
+      </list>
+    </property>
+
+    <property name="rulePropertyNames">
+      <map>
+        <entry key="name">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="true" />
+            <entry key="minlength" value="2" />
+            <entry key="maxlength" value="160" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+      </map>
+    </property>
+  </bean>
+
+  <bean id="I18nReportExcelOganiztionGroupListing" class="org.hisp.dhis.i18n.I18nObject">
+    <property name="className" value="ReportExcelOganiztionGroupListing" />
+    <property name="propertyNames">
+      <list>
+        <value>name</value>
+      </list>
+    </property>
+
+    <property name="rulePropertyNames">
+      <map>
+        <entry key="name">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="true" />
+            <entry key="minlength" value="2" />
+            <entry key="maxlength" value="160" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+      </map>
+    </property>
+  </bean>
+
+  <bean id="I18nReportExcelPeriodColumnListing" class="org.hisp.dhis.i18n.I18nObject">
+    <property name="className" value="ReportExcelPeriodColumnListing" />
+    <property name="propertyNames">
+      <list>
+        <value>name</value>
+      </list>
+    </property>
+
+    <property name="rulePropertyNames">
+      <map>
+        <entry key="name">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="true" />
+            <entry key="minlength" value="2" />
+            <entry key="maxlength" value="160" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+      </map>
+    </property>
+  </bean>
+
+  <bean id="I18nReportExcelItem" class="org.hisp.dhis.i18n.I18nObject">
+    <property name="className" value="ReportExcelItem" />
+    <property name="propertyNames">
+      <list>
+        <value>name</value>
+      </list>
+    </property>
+
+    <property name="rulePropertyNames">
+      <map>
+        <entry key="name">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="true" />
+            <entry key="minlength" value="2" />
+            <entry key="maxlength" value="160" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+      </map>
+    </property>
+  </bean>
+
+  <bean id="I18nExcelItemGroup" class="org.hisp.dhis.i18n.I18nObject">
+    <property name="className" value="ExcelItemGroup" />
+    <property name="propertyNames">
+      <list>
+        <value>name</value>
+      </list>
+    </property>
+
+    <property name="rulePropertyNames">
+      <map>
+        <entry key="name">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="true" />
+            <entry key="minlength" value="2" />
+            <entry key="maxlength" value="160" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+      </map>
+    </property>
+  </bean>
+
+  <bean id="I18nExcelItem" class="org.hisp.dhis.i18n.I18nObject">
+    <property name="className" value="ExcelItem" />
+    <property name="propertyNames">
+      <list>
+        <value>name</value>
+      </list>
+    </property>
+
+    <property name="rulePropertyNames">
+      <map>
+        <entry key="name">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="true" />
+            <entry key="minlength" value="2" />
+            <entry key="maxlength" value="160" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+      </map>
+    </property>
+  </bean>
+
+  <bean id="I18nSection" class="org.hisp.dhis.i18n.I18nObject">
+    <property name="className" value="Section" />
+    <property name="propertyNames">
+      <list>
+        <value>name</value>
+      </list>
+    </property>
+
+    <property name="rulePropertyNames">
+      <map>
+        <entry key="name">
+          <map>
+            <entry key="unique" value="true" />
+            <entry key="required" value="true" />
+            <entry key="minlength" value="2" />
+            <entry key="maxlength" value="160" />
+            <entry key="regex" value="''" />
+            <entry key="message" value="" />
+          </map>
+        </entry>
+      </map>
+    </property>
+  </bean>
+
+  <!-- Startup routine definitions -->
+
+  <bean id="org.hisp.dhis.startup.TableAlteror" class="org.hisp.dhis.startup.TableAlteror">
+    <property name="statementManager" ref="statementManager" />
+    <property name="name" value="TableAlteror" />
+    <property name="runlevel" value="1" />
+    <property name="skipInTests" value="true" />
+  </bean>
+
+  <bean id="org.hisp.dhis.period.PeriodTypePopulator" class="org.hisp.dhis.period.PeriodTypePopulator">
+    <property name="periodStore" ref="org.hisp.dhis.period.PeriodStore" />
+    <property name="name" value="PeriodTypePopulator" />
+    <property name="runlevel" value="2" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataelement.DataElementDefaultDimensionPopulator" class="org.hisp.dhis.dataelement.DataElementDefaultDimensionPopulator">
+    <property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
+    <property name="conceptService" ref="org.hisp.dhis.concept.ConceptService" />
+    <property name="categoryService" ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
+    <property name="name" value="DataElementDefaultDimensionPopulator" />
+    <property name="runlevel" value="3" />
+  </bean>
+
+  <bean id="org.hisp.dhis.expression.MultiDimensionExpressionUpgrader" class="org.hisp.dhis.expression.MultiDimensionExpressionUpgrader">
+    <property name="expressionService" ref="org.hisp.dhis.expression.ExpressionService" />
+    <property name="indicatorService" ref="org.hisp.dhis.indicator.IndicatorService" />
+    <property name="categoryService" ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
+    <property name="name" value="MultiDimensionExpressionUpgrader" />
+    <property name="runlevel" value="3" />
+    <property name="skipInTests" value="true" />
+  </bean>
+
+  <bean id="org.hisp.dhis.startup.TableCreator" class="org.hisp.dhis.startup.TableCreator">
+    <property name="jdbcTemplate" ref="jdbcTemplate" />
+    <property name="statementBuilder" ref="statementBuilder" />
+    <property name="name" value="TableCreator" />
+    <property name="runlevel" value="3" />
+  </bean>
+
+  <bean id="org.hisp.dhis.organisationunit.OrganisationUnitGroupSetPopulator" class="org.hisp.dhis.organisationunit.OrganisationUnitGroupSetPopulator">
+    <property name="organisationUnitGroupService" ref="org.hisp.dhis.organisationunit.OrganisationUnitGroupService" />
+    <property name="runlevel" value="5" />
+    <property name="name" value="OrganisationUnitGroupSetPopulator" />
+    <property name="skipInTests" value="true" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataelement.UuidPopulator" class="org.hisp.dhis.dataelement.UuidPopulator">
+    <property name="categoryService" ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
+    <property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
+    <property name="name" value="UuidPopulator" />
+    <property name="runlevel" value="5" />
+    <property name="skipInTests" value="true" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataset.DataSetShortNamePopulator" class="org.hisp.dhis.dataset.DataSetShortNamePopulator">
+    <property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
+    <property name="name" value="DataSetShortNamePopulator" />
+    <property name="runlevel" value="5" />
+    <property name="skipInTests" value="true" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataentryform.DataEntryFormPopulator" class="org.hisp.dhis.dataentryform.DataEntryFormPopulator">
+    <property name="jdbcTemplate" ref="jdbcTemplate" />
+    <property name="statementBuilder" ref="statementBuilder" />
+    <property name="name" value="DataEntryFormPopulator" />
+    <property name="runlevel" value="5" />
+    <property name="skipInTests" value="true" />
+  </bean>
+
+  <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
+    <property name="targetObject" ref="org.hisp.dhis.system.startup.StartupRoutineExecutor" />
+    <property name="targetMethod" value="addStartupRoutines" />
+    <property name="arguments">
+      <list>
+        <list>
+          <ref local="org.hisp.dhis.startup.TableAlteror" />
+          <ref local="org.hisp.dhis.period.PeriodTypePopulator" />
+          <ref local="org.hisp.dhis.startup.TableCreator" />
+          <ref local="org.hisp.dhis.dataelement.DataElementDefaultDimensionPopulator" />
+          <ref local="org.hisp.dhis.expression.MultiDimensionExpressionUpgrader" />
+          <ref local="org.hisp.dhis.dataset.DataSetShortNamePopulator" />
+          <ref local="org.hisp.dhis.dataelement.UuidPopulator" />
+          <ref local="org.hisp.dhis.organisationunit.OrganisationUnitGroupSetPopulator" />
+          <ref local="org.hisp.dhis.dataentryform.DataEntryFormPopulator" />
+        </list>
+      </list>
+    </property>
+  </bean>
+
+  <!-- DeletionHandlers -->
+
+  <bean id="org.hisp.dhis.dataentryform.DataEntryFormDeletionHandler" class="org.hisp.dhis.dataentryform.DataEntryFormDeletionHandler">
+    <property name="dataEntryFormService" ref="org.hisp.dhis.dataentryform.DataEntryFormService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.datadictionary.DataDictionaryDeletionHandler" class="org.hisp.dhis.datadictionary.DataDictionaryDeletionHandler">
+    <property name="dataDictionaryService" ref="org.hisp.dhis.datadictionary.DataDictionaryService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataelement.DataElementDeletionHandler" class="org.hisp.dhis.dataelement.DataElementDeletionHandler">
+    <property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
+    <property name="categoryService" ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataelement.DataElementGroupDeletionHandler" class="org.hisp.dhis.dataelement.DataElementGroupDeletionHandler">
+    <property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataelement.DataElementCategoryOptionDeletionHandler" class="org.hisp.dhis.dataelement.DataElementCategoryOptionDeletionHandler">
+    <property name="categoryService" ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataelement.DataElementCategoryOptionComboDeletionHandler" class="org.hisp.dhis.dataelement.DataElementCategoryOptionComboDeletionHandler">
+    <property name="jdbcTemplate" ref="jdbcTemplate" />
+    <property name="categoryService" ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataelement.DataElementCategoryComboDeletionHandler" class="org.hisp.dhis.dataelement.DataElementCategoryComboDeletionHandler">
+    <property name="categoryService" ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataset.DataSetDeletionHandler" class="org.hisp.dhis.dataset.DataSetDeletionHandler">
+    <property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataset.CompleteDataSetRegistrationDeletionHandler" class="org.hisp.dhis.dataset.CompleteDataSetRegistrationDeletionHandler">
+    <property name="completeDataSetRegistrationService" ref="org.hisp.dhis.dataset.CompleteDataSetRegistrationService" />
+    <property name="jdbcTemplate" ref="jdbcTemplate" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataset.SectionDeletionHandler" class="org.hisp.dhis.dataset.SectionDeletionHandler">
+    <property name="sectionService" ref="org.hisp.dhis.dataset.SectionService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataset.FrequencyOverrideAssociationDeletionHandler" class="org.hisp.dhis.dataset.FrequencyOverrideAssociationDeletionHandler">
+    <property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.expression.ExpressionDeletionHandler" class="org.hisp.dhis.expression.ExpressionDeletionHandler">
+    <property name="expressionService" ref="org.hisp.dhis.expression.ExpressionService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.indicator.IndicatorDeletionHandler" class="org.hisp.dhis.indicator.IndicatorDeletionHandler">
+    <property name="indicatorService" ref="org.hisp.dhis.indicator.IndicatorService" />
+    <property name="expressionService" ref="org.hisp.dhis.expression.ExpressionService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.indicator.IndicatorGroupDeletionHandler" class="org.hisp.dhis.indicator.IndicatorGroupDeletionHandler">
+    <property name="indicatorService" ref="org.hisp.dhis.indicator.IndicatorService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.minmax.MinMaxDataElementDeletionHandler" class="org.hisp.dhis.minmax.MinMaxDataElementDeletionHandler">
+    <property name="minMaxDataElementService" ref="org.hisp.dhis.minmax.MinMaxDataElementService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.validation.ValidationRuleDeletionHandler" class="org.hisp.dhis.validation.ValidationRuleDeletionHandler">
+    <property name="validationRuleService" ref="org.hisp.dhis.validation.ValidationRuleService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.validation.ValidationRuleGroupDeletionHandler" class="org.hisp.dhis.validation.ValidationRuleGroupDeletionHandler">
+    <property name="validationRuleService" ref="org.hisp.dhis.validation.ValidationRuleService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.datavalue.DataValueDeletionHandler" class="org.hisp.dhis.datavalue.DataValueDeletionHandler">
+    <property name="jdbcTemplate" ref="jdbcTemplate" />
+  </bean>
+
+  <bean id="org.hisp.dhis.organisationunit.OrganisationUnitGroupDeletionHandler" class="org.hisp.dhis.organisationunit.OrganisationUnitGroupDeletionHandler">
+    <property name="organisationUnitGroupService" ref="org.hisp.dhis.organisationunit.OrganisationUnitGroupService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.organisationunit.OrganisationUnitGroupSetDeletionHandler" class="org.hisp.dhis.organisationunit.OrganisationUnitGroupSetDeletionHandler">
+    <property name="organisationUnitGroupService" ref="org.hisp.dhis.organisationunit.OrganisationUnitGroupService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.datavalue.DataValueAuditDeletionHandler" class="org.hisp.dhis.datavalue.DataValueAuditDeletionHandler">
+    <property name="dataValueAuditService" ref="org.hisp.dhis.datavalue.DataValueAuditService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.user.UserDeletionHandler" class="org.hisp.dhis.user.UserDeletionHandler">
+    <property name="userStore" ref="org.hisp.dhis.user.UserStore" />
+  </bean>
+
+  <bean id="org.hisp.dhis.user.UserAuthorityGroupDeletionHandler" class="org.hisp.dhis.user.UserAuthorityGroupDeletionHandler">
+    <property name="userStore" ref="org.hisp.dhis.user.UserStore" />
+  </bean>
+
+  <bean id="org.hisp.dhis.user.UserCredentialsDeletionHandler" class="org.hisp.dhis.user.UserCredentialsDeletionHandler">
+    <property name="userStore" ref="org.hisp.dhis.user.UserStore" />
+  </bean>
+
+  <bean id="org.hisp.dhis.user.UserSettingDeletionHandler" class="org.hisp.dhis.user.UserSettingDeletionHandler">
+    <property name="userSettingService" ref="org.hisp.dhis.user.UserSettingService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataelement.DataElementCategoryDeletionHandler" class="org.hisp.dhis.dataelement.DataElementCategoryDeletionHandler">
+    <property name="categoryService" ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.dataelement.DataElementGroupSetDeletionHandler" class="org.hisp.dhis.dataelement.DataElementGroupSetDeletionHandler">
+    <property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
+  </bean>
+
+  <!-- Security -->
+
+  <bean id="org.hisp.dhis.security.PasswordManager" class="org.hisp.dhis.security.spring.SpringSecurityPasswordManager">
+    <property name="passwordEncoder" ref="passwordEncoder" />
+    <property name="usernameSaltSource" ref="usernameSaltSource" />
+  </bean>
+
+  <bean id="authenticationManager" class="org.springframework.security.authentication.ProviderManager">
+    <property name="providers" ref="daoAuthenticationProvider" />
+    <property name="authenticationEventPublisher" ref="defaultAuthenticationEventPublisher" />
+  </bean>
+
+  <bean id="defaultAuthenticationEventPublisher" class="org.springframework.security.authentication.DefaultAuthenticationEventPublisher" />
+
+  <bean id="daoAuthenticationProvider" class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
+    <property name="userDetailsService" ref="userDetailsService" />
+    <property name="passwordEncoder" ref="passwordEncoder" />
+    <property name="saltSource" ref="usernameSaltSource" />
+  </bean>
+
+  <bean id="userDetailsService" class="org.hisp.dhis.security.hibernate.HibernateUserDetailsService">
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+
+  <bean id="passwordEncoder" class="org.springframework.security.authentication.encoding.Md5PasswordEncoder" />
+
+  <bean id="usernameSaltSource" class="org.hisp.dhis.security.DefaultUsernameSaltSource" />
+
+  <!-- DeletionManager -->
+
+  <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
+    <property name="targetObject" ref="deletionManager" />
+    <property name="targetMethod" value="addDeletionHandlers" />
+    <property name="arguments">
+      <list>
+        <list>
+          <ref local="org.hisp.dhis.datadictionary.DataDictionaryDeletionHandler" />
+          <ref local="org.hisp.dhis.dataelement.DataElementDeletionHandler" />
+          <ref local="org.hisp.dhis.dataelement.DataElementGroupDeletionHandler" />
+          <ref local="org.hisp.dhis.dataelement.DataElementCategoryOptionDeletionHandler" />
+          <ref local="org.hisp.dhis.dataelement.DataElementCategoryOptionComboDeletionHandler" />
+          <ref local="org.hisp.dhis.dataelement.DataElementCategoryComboDeletionHandler" />
+          <ref local="org.hisp.dhis.dataset.DataSetDeletionHandler" />
+          <ref local="org.hisp.dhis.dataset.CompleteDataSetRegistrationDeletionHandler" />
+          <ref local="org.hisp.dhis.dataset.SectionDeletionHandler" />
+          <ref local="org.hisp.dhis.dataentryform.DataEntryFormDeletionHandler" />
+          <ref local="org.hisp.dhis.dataset.FrequencyOverrideAssociationDeletionHandler" />
+          <ref local="org.hisp.dhis.expression.ExpressionDeletionHandler" />
+          <ref local="org.hisp.dhis.indicator.IndicatorDeletionHandler" />
+          <ref local="org.hisp.dhis.indicator.IndicatorGroupDeletionHandler" />
+          <ref local="org.hisp.dhis.minmax.MinMaxDataElementDeletionHandler" />
+          <ref local="org.hisp.dhis.validation.ValidationRuleDeletionHandler" />
+          <ref local="org.hisp.dhis.validation.ValidationRuleGroupDeletionHandler" />
+          <ref local="org.hisp.dhis.datavalue.DataValueDeletionHandler" />
+          <ref local="org.hisp.dhis.datavalue.DataValueAuditDeletionHandler" />
+          <ref local="org.hisp.dhis.organisationunit.OrganisationUnitGroupDeletionHandler" />
+          <ref local="org.hisp.dhis.organisationunit.OrganisationUnitGroupSetDeletionHandler" />
+          <ref local="org.hisp.dhis.user.UserDeletionHandler" />
+          <ref local="org.hisp.dhis.user.UserAuthorityGroupDeletionHandler" />
+          <ref local="org.hisp.dhis.user.UserCredentialsDeletionHandler" />
+          <ref local="org.hisp.dhis.user.UserSettingDeletionHandler" />
+          <ref local="org.hisp.dhis.dataelement.DataElementCategoryDeletionHandler" />
+          <ref local="org.hisp.dhis.dataelement.DataElementGroupSetDeletionHandler" />
+        </list>
+      </list>
+    </property>
+  </bean>
+
+  <!-- Min/Max validation -->
+
+  <bean id="org.hisp.dhis.minmax.validation.MinMaxValuesGenerationService" class="org.hisp.dhis.minmax.validation.DefaultMinMaxValuesGenerationService">
+    <property name="dataAnalysisStore" ref="org.hisp.dhis.dataanalysis.jdbc.DataAnalysisStore" />
+  </bean>
+
+  <!-- AOP definitions -->
+
+  <aop:config>
+
+    <aop:aspect ref="deletionInterceptor">
+      <aop:before pointcut="execution( * org.hisp.dhis.datadictionary.DataDictionaryService.delete*(..) )"
+        method="intercept" />
+      <aop:before pointcut="execution( * org.hisp.dhis.dataelement.DataElementService.delete*(..) )"
+        method="intercept" />
+      <aop:before pointcut="execution( * org.hisp.dhis.dataelement.DataElementCategoryService.delete*(..) )"
+        method="intercept" />
+      <aop:before pointcut="execution( * org.hisp.dhis.dataset.DataSetService.delete*(..) )"
+        method="intercept" />
+      <aop:before pointcut="execution( * org.hisp.dhis.indicator.IndicatorService.delete*(..) )"
+        method="intercept" />
+      <aop:before pointcut="execution( * org.hisp.dhis.expression.ExpressionService.delete*(..) )"
+        method="intercept" />
+      <aop:before pointcut="execution( * org.hisp.dhis.minmax.MinMaxDataElementService.delete*(..) )"
+        method="intercept" />
+      <aop:before pointcut="execution( * org.hisp.dhis.validation.ValidationRuleService.delete*(..) )"
+        method="intercept" />
+      <aop:before pointcut="execution( * org.hisp.dhis.period.PeriodService.delete*(..) )"
+        method="intercept" />
+      <aop:before
+        pointcut="execution( * org.hisp.dhis.organisationunit.OrganisationUnitService.delete*(..) )"
+        method="intercept" />
+      <aop:before
+        pointcut="execution( * org.hisp.dhis.organisationunit.OrganisationUnitGroupService.delete*(..) )"
+        method="intercept" />
+      <aop:before pointcut="execution( * org.hisp.dhis.user.UserStore.delete*(..) )"
+        method="intercept" />
+      <aop:before pointcut="execution( * org.hisp.dhis.concept.ConceptService.delete*(..) )"
+        method="intercept" />
+    </aop:aspect>
+
+    <aop:aspect ref="statementInterceptor">
+      <aop:around pointcut="execution( * org.hisp.dhis.validation.ValidationRuleService.validate*(..) )"
+        method="intercept" />
+      <aop:around pointcut="execution( * org.hisp.dhis.dataanalysis.DataAnalysisService.analyse(..) )"
+        method="intercept" />
+    </aop:aspect>
+
+    <!-- <aop:aspect ref="i18nTranslationInterceptor"> <aop:after-returning pointcut="execution( * org.hisp.dhis.dataelement.DataElementService.get*(..) 
+      )" method="intercept" returning="object"/> <aop:after-returning pointcut="execution( * org.hisp.dhis.dataelement.DataElementCategoryService.get*(..) 
+      )" method="intercept" returning="object"/> <aop:after-returning pointcut="execution( * org.hisp.dhis.indicator.IndicatorService.get*(..) 
+      )" method="intercept" returning="object"/> <aop:after-returning pointcut="execution( * org.hisp.dhis.datadictionary.DataDictionaryService.get*(..) 
+      )" method="intercept" returning="object"/> <aop:after-returning pointcut="execution( * org.hisp.dhis.dataset.DataSetService.get*(..) 
+      )" method="intercept" returning="object"/> <aop:after-returning pointcut="execution( * org.hisp.dhis.organisationunit.OrganisationUnitService.get*(..) 
+      )" method="intercept" returning="object"/> <aop:after-returning pointcut="execution( * org.hisp.dhis.organisationunit.OrganisationUnitGroupService.get*(..) 
+      )" method="intercept" returning="object"/> </aop:aspect> -->
+
+  </aop:config>
 
 </beans>

=== removed directory 'dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user'
=== removed file 'dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user/UserGroup.java'
--- dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user/UserGroup.java	2010-10-14 10:44:34 +0000
+++ dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user/UserGroup.java	1970-01-01 00:00:00 +0000
@@ -1,109 +0,0 @@
-package org.hisp.dhis.user;
-
-import java.io.Serializable;
-import java.util.HashSet;
-import java.util.Set;
-
-public class UserGroup implements Serializable
-{
-
-    /**
-     * id is the primary key which is auto generated
-     */
-    private int id;
-
-    /**
-     * The name of this Object. Required and unique.
-     */
-    private String name;
-    
-    /**
-     * Set of related users
-     */
-    private Set<User> members = new HashSet<User>();
-    
-    // -------------------------------------------------------------------------
-    // Constructors
-    // -------------------------------------------------------------------------     
-
-    public UserGroup()
-    {
-        
-    }
-    
-    public UserGroup( String name )
-    {
-        this.name = name;
-    }
-
-    public UserGroup( String name, Set<User> members )
-    {
-        this.name = name;
-        this.members = members;
-    }
-
-    
-    // -------------------------------------------------------------------------
-    // hashCode, equals and toString
-    // -------------------------------------------------------------------------     
-
-    public boolean equals( Object object )
-    {
-        if ( this == object )
-        {
-            return true;
-        }
-        else if ( object == null )
-        {
-            return false;
-        }
-        else if ( !( object instanceof UserGroup ) )
-        {
-            return false;
-        }
-
-        final UserGroup userGroup = (UserGroup) object;
-
-        return name.equals( userGroup.getName() );
-    }
-
-    public int hashCode()
-    {
-        return name.hashCode();
-    }
-
-    // -------------------------------------------------------------------------
-    // Getters and setters
-    // -------------------------------------------------------------------------
-
-    public int getId()
-    {
-        return id;
-    }
-
-    public void setId( int id )
-    {
-        this.id = id;
-    }
-
-    public String getName()
-    {
-        return name;
-    }
-
-    public void setName( String name )
-    {
-        this.name = name;
-    }
-
-    public Set<User> getMembers()
-    {
-        return members;
-    }
-
-    public void setMembers( Set<User> members )
-    {
-        this.members = members;
-    }
-    
-}

=== removed file 'dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user/UserGroupService.java'
--- dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user/UserGroupService.java	2010-10-14 10:44:34 +0000
+++ dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user/UserGroupService.java	1970-01-01 00:00:00 +0000
@@ -1,21 +0,0 @@
-package org.hisp.dhis.user;
-
-import java.util.Collection;
-
-
-public interface UserGroupService
-{
-    String ID = UserGroupService.class.getName();
-
-    int addUserGroup( UserGroup userGroup );
-    
-    void updateUserGroup( UserGroup userGroup );
-    
-    void deleteUserGroup( UserGroup userGroup );
-    
-    UserGroup getUserGroup( int userGroupId );
-    
-    Collection<UserGroup> getAllUserGroups();
-    
-    UserGroup getUserGroupByName( String name );
-}

=== removed file 'dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user/UserGroupStore.java'
--- dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user/UserGroupStore.java	2010-10-14 10:44:34 +0000
+++ dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user/UserGroupStore.java	1970-01-01 00:00:00 +0000
@@ -1,21 +0,0 @@
-package org.hisp.dhis.user;
-
-import java.util.Collection;
-
-
-public interface UserGroupStore
-{
-    String ID = UserGroupStore.class.getName();
-    
-    int addUserGroup( UserGroup userGroup );
-    
-    void updateUserGroup( UserGroup userGroup );
-    
-    void deleteUserGroup( UserGroup userGroup );
-    
-    UserGroup getUserGroup( int userGroupId );
-    
-    Collection<UserGroup> getAllUserGroups();
-    
-    UserGroup getUserGroupByName( String name );
-}

=== removed directory 'dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user/impl'
=== removed file 'dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user/impl/DefaultUserGroupService.java'
--- dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user/impl/DefaultUserGroupService.java	2010-10-14 10:44:34 +0000
+++ dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user/impl/DefaultUserGroupService.java	1970-01-01 00:00:00 +0000
@@ -1,66 +0,0 @@
-package org.hisp.dhis.user.impl;
-
-import java.util.Collection;
-
-import org.hisp.dhis.user.UserGroup;
-import org.hisp.dhis.user.UserGroupService;
-import org.hisp.dhis.user.UserGroupStore;
-import org.springframework.transaction.annotation.Transactional;
-
-@Transactional
-public class DefaultUserGroupService implements UserGroupService
-{
-
-    // -------------------------------------------------------------------------
-    // Dependencies
-    // -------------------------------------------------------------------------
-
-    private UserGroupStore userGroupStore;
-
-    public void setUserGroupStore( UserGroupStore userGroupStore )
-    {
-        this.userGroupStore = userGroupStore;
-    }
-    
-    // -------------------------------------------------------------------------
-    // UserGroup
-    // -------------------------------------------------------------------------
-
-    @Override
-    public int addUserGroup( UserGroup userGroup )
-    {
-        return userGroupStore.addUserGroup( userGroup );
-    }
-
-    @Override
-    public void deleteUserGroup( UserGroup userGroup )
-    {
-        userGroupStore.deleteUserGroup( userGroup );
-    }
-
-    @Override
-    public void updateUserGroup( UserGroup userGroup )
-    {
-        userGroupStore.updateUserGroup( userGroup );
-    }
-
-    
-    @Override
-    public Collection<UserGroup> getAllUserGroups()
-    {
-        return userGroupStore.getAllUserGroups();
-    }
-
-    @Override
-    public UserGroup getUserGroup( int userGroupId )
-    {
-        return userGroupStore.getUserGroup( userGroupId );
-    }
-
-    @Override
-    public UserGroup getUserGroupByName( String name )
-    {
-        return userGroupStore.getUserGroupByName( name );
-    }
-
-}

=== removed file 'dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user/impl/HiberntateUserGroupStore.java'
--- dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user/impl/HiberntateUserGroupStore.java	2010-10-21 06:32:42 +0000
+++ dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/user/impl/HiberntateUserGroupStore.java	1970-01-01 00:00:00 +0000
@@ -1,86 +0,0 @@
-package org.hisp.dhis.user.impl;
-
-import java.util.Collection;
-
-import org.hibernate.Criteria;
-import org.hibernate.Session;
-import org.hibernate.SessionFactory;
-import org.hibernate.criterion.Restrictions;
-import org.hisp.dhis.dataelement.DataElement;
-import org.hisp.dhis.user.UserGroup;
-import org.hisp.dhis.user.UserGroupStore;
-
-public class HiberntateUserGroupStore implements UserGroupStore
-{
-    // -------------------------------------------------------------------------
-    // Dependencies
-    // -------------------------------------------------------------------------
-
-    private SessionFactory sessionFactory;
-    
-    public void setSessionFactory( SessionFactory sessionFactory )
-    {
-        this.sessionFactory = sessionFactory;
-    }
-
-    // -------------------------------------------------------------------------
-    // UserGroup
-    // -------------------------------------------------------------------------
-    
-    @Override
-    public int addUserGroup( UserGroup userGroup )
-    {
-        Session session = sessionFactory.getCurrentSession();
-
-        return (Integer) session.save( userGroup );
-    }
-
-    @Override
-    public void deleteUserGroup( UserGroup userGroup )
-    {
-        Session session = sessionFactory.getCurrentSession();
-
-        session.delete( userGroup );        
-    }
-
-    @Override
-    public void updateUserGroup( UserGroup userGroup )
-    {
-        Session session = sessionFactory.getCurrentSession();
-
-        session.update( userGroup );
-    }
-
-    
-    @Override
-    public Collection<UserGroup> getAllUserGroups()
-    {
-        Session session = sessionFactory.getCurrentSession();
-
-        Criteria criteria = session.createCriteria( UserGroup.class );
-        
-        return criteria.list();
-
-    }
-
-    @Override
-    public UserGroup getUserGroup( int userGroupId )
-    {
-        Session session = sessionFactory.getCurrentSession();
-
-        return (UserGroup) session.get( UserGroup.class, userGroupId );
-    }
-
-    @Override
-    public UserGroup getUserGroupByName( String name )
-    {
-        Session session = sessionFactory.getCurrentSession();
-
-        Criteria criteria = session.createCriteria( DataElement.class );
-        criteria.add( Restrictions.eq( "name", name ) );
-
-        return (UserGroup) criteria.uniqueResult();
-    }
-
-
-}

=== modified file 'dhis-mobile/dhis-service-mobile/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-mobile/dhis-service-mobile/src/main/resources/META-INF/dhis/beans.xml	2010-12-03 13:29:28 +0000
+++ dhis-mobile/dhis-service-mobile/src/main/resources/META-INF/dhis/beans.xml	2010-12-16 17:38:32 +0000
@@ -45,18 +45,6 @@
         <property name="sendSMSStore" ref="org.hisp.dhis.mobile.api.SendSMSStore"/>
     </bean>
 
-    <!-- UserGroup Store and Service -->
-    <bean id="org.hisp.dhis.user.UserGroupStore"
-        class="org.hisp.dhis.user.impl.HiberntateUserGroupStore">
-        <property name="sessionFactory" ref="sessionFactory"/>
-    </bean>
-
-    <bean id="org.hisp.dhis.user.UserGroupService"
-        class="org.hisp.dhis.user.impl.DefaultUserGroupService">
-        <property name="userGroupStore" ref="org.hisp.dhis.user.UserGroupStore"/>
-    </bean>
-
-
 	<!-- Send ACK Job -->
 	
 	<bean id="org.hisp.dhis.mobile.SendSMSJob"