← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 11747: Moved dhis-dxf2 project to dhis-services/dhis-service-dxf2 and renamed to dhis-service-dxf2. Reas...

 

------------------------------------------------------------
revno: 11747
committer: Lars Helge Øverland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Thu 2013-08-22 15:19:57 +0200
message:
  Moved dhis-dxf2 project to dhis-services/dhis-service-dxf2 and renamed to dhis-service-dxf2. Reason for this is that dxf2 depends on some service modules and also has other service modules depending on it, so had to be part of a specific build order. Placed the service modules into a virtual level hierarchy which defines the build order, to avoid dependency issues.
removed:
  dhis-2/dhis-services/dhis-service-importexport/src/test/java/org/hisp/dhis/importexport/importobject/ImportDataValueServiceTest.java
  dhis-2/dhis-services/dhis-service-importexport/src/test/java/org/hisp/dhis/importexport/importobject/ImportObjectStoreTest.java
renamed:
  dhis-2/dhis-dxf2/ => dhis-2/dhis-services/dhis-service-dxf2/
modified:
  dhis-2/dhis-services/dhis-service-dxf2/pom.xml
  dhis-2/dhis-services/dhis-service-eventreporting/pom.xml
  dhis-2/dhis-services/dhis-service-importexport/pom.xml
  dhis-2/dhis-services/dhis-service-integration/pom.xml
  dhis-2/dhis-services/pom.xml
  dhis-2/dhis-web/dhis-web-api-fred/pom.xml
  dhis-2/dhis-web/dhis-web-api/pom.xml
  dhis-2/dhis-web/dhis-web-commons/pom.xml
  dhis-2/dhis-web/dhis-web-importexport/pom.xml
  dhis-2/dhis-web/dhis-web-mobile/pom.xml
  dhis-2/pom.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
=== renamed directory 'dhis-2/dhis-dxf2' => 'dhis-2/dhis-services/dhis-service-dxf2'
=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/pom.xml'
--- dhis-2/dhis-dxf2/pom.xml	2013-07-16 14:06:13 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/pom.xml	2013-08-22 13:19:57 +0000
@@ -1,17 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd";>
-
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
     <groupId>org.hisp.dhis</groupId>
-    <artifactId>dhis</artifactId>
+    <artifactId>dhis-services</artifactId>
     <version>2.13-SNAPSHOT</version>
   </parent>
 
-  <artifactId>dhis-dxf2</artifactId>
+  <artifactId>dhis-service-dxf2</artifactId>
   <packaging>jar</packaging>
   <name>DHIS Data Exchange</name>
 
@@ -32,18 +30,7 @@
       <groupId>org.hisp.dhis</groupId>
       <artifactId>dhis-service-i18n</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.hisp.dhis</groupId>
-      <artifactId>dhis-support-system</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.hisp.dhis</groupId>
-      <artifactId>dhis-support-test</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.hisp.dhis</groupId>
-      <artifactId>dhis-support-xml</artifactId>
-    </dependency>
+    
     <dependency>
       <groupId>net.sourceforge.javacsv</groupId>
       <artifactId>javacsv</artifactId>
@@ -68,6 +55,6 @@
   </dependencies>
 
   <properties>
-    <rootDir>../</rootDir>
+    <rootDir>../../</rootDir>
   </properties>
 </project>

=== modified file 'dhis-2/dhis-services/dhis-service-eventreporting/pom.xml'
--- dhis-2/dhis-services/dhis-service-eventreporting/pom.xml	2013-08-21 12:29:12 +0000
+++ dhis-2/dhis-services/dhis-service-eventreporting/pom.xml	2013-08-22 13:19:57 +0000
@@ -29,6 +29,10 @@
       <groupId>org.hisp.dhis</groupId>
       <artifactId>dhis-service-patient</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.hisp.dhis</groupId>
+      <artifactId>dhis-service-analytics</artifactId>
+    </dependency>
     
   </dependencies>
   <properties>

=== modified file 'dhis-2/dhis-services/dhis-service-importexport/pom.xml'
--- dhis-2/dhis-services/dhis-service-importexport/pom.xml	2013-05-31 08:27:38 +0000
+++ dhis-2/dhis-services/dhis-service-importexport/pom.xml	2013-08-22 13:19:57 +0000
@@ -23,7 +23,7 @@
     </dependency>
     <dependency>
       <groupId>org.hisp.dhis</groupId>
-      <artifactId>dhis-dxf2</artifactId>
+      <artifactId>dhis-service-dxf2</artifactId>
     </dependency>
     <dependency>
       <groupId>org.hisp.dhis</groupId>

=== removed file 'dhis-2/dhis-services/dhis-service-importexport/src/test/java/org/hisp/dhis/importexport/importobject/ImportDataValueServiceTest.java'
--- dhis-2/dhis-services/dhis-service-importexport/src/test/java/org/hisp/dhis/importexport/importobject/ImportDataValueServiceTest.java	2012-11-20 17:04:08 +0000
+++ dhis-2/dhis-services/dhis-service-importexport/src/test/java/org/hisp/dhis/importexport/importobject/ImportDataValueServiceTest.java	1970-01-01 00:00:00 +0000
@@ -1,166 +0,0 @@
-package org.hisp.dhis.importexport.importobject;
-
-/*
- * Copyright (c) 2004-2012, University of Oslo
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright notice, this
- *   list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- *   this list of conditions and the following disclaimer in the documentation
- *   and/or other materials provided with the distribution.
- * * Neither the name of the HISP project nor the names of its contributors may
- *   be used to endorse or promote products derived from this software without
- *   specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.util.Collection;
-
-import org.hisp.dhis.DhisSpringTest;
-import org.hisp.dhis.importexport.ImportDataValue;
-import org.hisp.dhis.importexport.ImportDataValueService;
-import org.hisp.dhis.importexport.ImportObjectStatus;
-import org.junit.Test;
-
-/**
- * @author Lars Helge Overland
- * @version $Id$
- */
-public class ImportDataValueServiceTest
-    extends DhisSpringTest
-{
-    private ImportDataValueService importDataValueService;
-    
-    // -------------------------------------------------------------------------
-    // Fixture
-    // -------------------------------------------------------------------------
-
-    @Override
-    public void setUpTest()
-    {
-        importDataValueService = (ImportDataValueService) getBean( ImportDataValueService.ID );
-    }
-    
-    // -------------------------------------------------------------------------
-    // ImportDataValue
-    // -------------------------------------------------------------------------
-
-    @Test
-    public void testAddGetImportDataValues()
-    {
-        ImportDataValue valueA = createImportDataValue( 1, 1, 1, 1, ImportObjectStatus.NEW );
-        ImportDataValue valueB = createImportDataValue( 1, 1, 2, 2, ImportObjectStatus.NEW );
-        ImportDataValue valueC = createImportDataValue( 2, 1, 2, 1, ImportObjectStatus.UPDATE );
-        
-        importDataValueService.addImportDataValue( valueA );
-        importDataValueService.addImportDataValue( valueB );
-        importDataValueService.addImportDataValue( valueC );
-        
-        Collection<ImportDataValue> values = importDataValueService.getImportDataValues( ImportObjectStatus.NEW );
-        
-        assertEquals( values.size(), 2 );
-
-        assertTrue( values.contains( valueA ) );
-        assertTrue( values.contains( valueB ) );        
-        
-        values = importDataValueService.getImportDataValues( ImportObjectStatus.UPDATE );
-        
-        assertEquals( values.size(), 1 );
-        
-        assertTrue( values.contains( valueC ) );
-    }
-
-    @Test
-    public void testDeleteImportDataValues()
-    {
-        ImportDataValue valueA = createImportDataValue( 1, 1, 1, 1, ImportObjectStatus.NEW );
-        ImportDataValue valueB = createImportDataValue( 1, 1, 2, 2, ImportObjectStatus.NEW );
-        ImportDataValue valueC = createImportDataValue( 2, 1, 2, 1, ImportObjectStatus.UPDATE );
-        
-        importDataValueService.addImportDataValue( valueA );
-        importDataValueService.addImportDataValue( valueB );
-        importDataValueService.addImportDataValue( valueC );
-
-        Collection<ImportDataValue> values = importDataValueService.getImportDataValues( ImportObjectStatus.NEW );
-        
-        assertEquals( values.size(), 2 );
-
-        values = importDataValueService.getImportDataValues( ImportObjectStatus.UPDATE );
-        
-        assertEquals( values.size(), 1 );
-        
-        importDataValueService.deleteImportDataValues();
-        
-        values = importDataValueService.getImportDataValues( ImportObjectStatus.NEW );
-        
-        assertEquals( values.size(), 0 );
-        
-        values = importDataValueService.getImportDataValues( ImportObjectStatus.UPDATE );
-        
-        assertEquals( values.size(), 0 );
-    }
-
-    @Test
-    public void testDeleteImportDataValuesByDataElement()
-    {
-        ImportDataValue valueA = createImportDataValue( 1, 1, 1, 1, ImportObjectStatus.NEW );
-        ImportDataValue valueB = createImportDataValue( 1, 1, 2, 2, ImportObjectStatus.NEW );
-        ImportDataValue valueC = createImportDataValue( 2, 1, 2, 1, ImportObjectStatus.NEW );
-        
-        importDataValueService.addImportDataValue( valueA );
-        importDataValueService.addImportDataValue( valueB );
-        importDataValueService.addImportDataValue( valueC );
-        
-        Collection<ImportDataValue> values = importDataValueService.getImportDataValues( ImportObjectStatus.NEW );
-        
-        assertEquals( values.size(), 3 );
-        
-        importDataValueService.deleteImportDataValuesByDataElement( 1 );
-        
-        values = importDataValueService.getImportDataValues( ImportObjectStatus.NEW );
-        
-        assertEquals( values.size(), 1 );
-        
-        assertTrue( values.contains( valueC ) );
-    }
-
-    @Test
-    public void testDeleteImportDataValuesBySource()
-    {
-        ImportDataValue valueA = createImportDataValue( 1, 1, 1, 1, ImportObjectStatus.NEW );
-        ImportDataValue valueB = createImportDataValue( 1, 1, 2, 2, ImportObjectStatus.NEW );
-        ImportDataValue valueC = createImportDataValue( 2, 1, 2, 1, ImportObjectStatus.NEW );
-        
-        importDataValueService.addImportDataValue( valueA );
-        importDataValueService.addImportDataValue( valueB );
-        importDataValueService.addImportDataValue( valueC );
-        
-        Collection<ImportDataValue> values = importDataValueService.getImportDataValues( ImportObjectStatus.NEW );
-        
-        assertEquals( values.size(), 3 );
-        
-        importDataValueService.deleteImportDataValuesBySource( 1 );
-        
-        values = importDataValueService.getImportDataValues( ImportObjectStatus.NEW );
-        
-        assertEquals( values.size(), 1 );
-        
-        assertTrue( values.contains( valueB ) );
-    }
-}

=== removed file 'dhis-2/dhis-services/dhis-service-importexport/src/test/java/org/hisp/dhis/importexport/importobject/ImportObjectStoreTest.java'
--- dhis-2/dhis-services/dhis-service-importexport/src/test/java/org/hisp/dhis/importexport/importobject/ImportObjectStoreTest.java	2012-11-20 17:04:08 +0000
+++ dhis-2/dhis-services/dhis-service-importexport/src/test/java/org/hisp/dhis/importexport/importobject/ImportObjectStoreTest.java	1970-01-01 00:00:00 +0000
@@ -1,355 +0,0 @@
-package org.hisp.dhis.importexport.importobject;
-
-/*
- * Copyright (c) 2004-2012, University of Oslo
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright notice, this
- *   list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- *   this list of conditions and the following disclaimer in the documentation
- *   and/or other materials provided with the distribution.
- * * Neither the name of the HISP project nor the names of its contributors may
- *   be used to endorse or promote products derived from this software without
- *   specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.Collection;
-
-import org.hisp.dhis.DhisSpringTest;
-import org.hisp.dhis.dataelement.DataElement;
-import org.hisp.dhis.dataelement.DataElementGroup;
-import org.hisp.dhis.importexport.GroupMemberAssociation;
-import org.hisp.dhis.importexport.GroupMemberType;
-import org.hisp.dhis.importexport.ImportObject;
-import org.hisp.dhis.importexport.ImportObjectStatus;
-import org.hisp.dhis.importexport.ImportObjectStore;
-import org.junit.Ignore;
-import org.junit.Test;
-
-/**
- * @author Lars Helge Overland
- * @version $Id$
- */
-public class ImportObjectStoreTest
-    extends DhisSpringTest
-{
-    private ImportObjectStore importObjectStore;
-    
-    private DataElement dataElementA;
-    private DataElement dataElementB;
-    private DataElement dataElementC;
-    
-    private DataElementGroup dataElementGroupA;
-    private DataElementGroup dataElementGroupB;
-    private DataElementGroup dataElementGroupC;
-    
-    private GroupMemberAssociation associationA; 
-    private GroupMemberAssociation associationB; 
-    private GroupMemberAssociation associationC; 
-    
-    private ImportObject importObjectA;
-    private ImportObject importObjectB;
-    private ImportObject importObjectC;
-    private ImportObject importObjectD;
-    private ImportObject importObjectE;
-    private ImportObject importObjectF;
-    private ImportObject importObjectG;
-    private ImportObject importObjectH;
-    private ImportObject importObjectI;
-    
-    private int idA;
-    private int idB;
-    private int idC;
-    private int idD;
-    private int idE;
-    private int idF;
-    private int idG;
-    private int idH;
-    private int idI;
-    
-    // -------------------------------------------------------------------------
-    // Fixture
-    // -------------------------------------------------------------------------
-
-    @Override
-    public void setUpTest()
-    {
-        importObjectStore = (ImportObjectStore) getBean( ImportObjectStore.ID );
-
-        dataElementA = createDataElement( 'A' );
-        dataElementB = createDataElement( 'B' );
-        dataElementC = createDataElement( 'C' );
-        
-        dataElementGroupA = createDataElementGroup( 'A' );
-        dataElementGroupB = createDataElementGroup( 'B' );
-        dataElementGroupC = createDataElementGroup( 'C' );
-        
-        associationA = new GroupMemberAssociation( 'A', 'A' );        
-        associationB = new GroupMemberAssociation( 'B', 'B' );        
-        associationC = new GroupMemberAssociation( 'C', 'C' );        
-        
-        importObjectA = new ImportObject( ImportObjectStatus.NEW, DataElement.class.getName(), GroupMemberType.NONE, dataElementA );
-        importObjectB = new ImportObject( ImportObjectStatus.NEW, DataElement.class.getName(), GroupMemberType.NONE, dataElementB );
-        importObjectC = new ImportObject( ImportObjectStatus.UPDATE, DataElement.class.getName(), GroupMemberType.NONE, dataElementC );
-        importObjectD = new ImportObject( ImportObjectStatus.NEW, DataElementGroup.class.getName(), GroupMemberType.NONE, dataElementGroupA );
-        importObjectE = new ImportObject( ImportObjectStatus.UPDATE, DataElementGroup.class.getName(), GroupMemberType.NONE, dataElementGroupB );
-        importObjectF = new ImportObject( ImportObjectStatus.UPDATE, DataElementGroup.class.getName(), GroupMemberType.NONE, dataElementGroupC );
-        importObjectG = new ImportObject( ImportObjectStatus.NEW, GroupMemberAssociation.class.getName(), GroupMemberType.DATAELEMENTGROUP, associationA );
-        importObjectH = new ImportObject( ImportObjectStatus.MATCH, GroupMemberAssociation.class.getName(), GroupMemberType.DATAELEMENTGROUP, associationB );
-        importObjectI = new ImportObject( ImportObjectStatus.MATCH, GroupMemberAssociation.class.getName(), GroupMemberType.DATAELEMENTGROUP, associationC );
-        
-        idA = importObjectStore.addImportObject( importObjectA );
-        idB = importObjectStore.addImportObject( importObjectB );
-        idC = importObjectStore.addImportObject( importObjectC );
-        idD = importObjectStore.addImportObject( importObjectD );
-        idE = importObjectStore.addImportObject( importObjectE );
-        idF = importObjectStore.addImportObject( importObjectF );
-        idG = importObjectStore.addImportObject( importObjectG );
-        idH = importObjectStore.addImportObject( importObjectH );
-        idI = importObjectStore.addImportObject( importObjectI );
-    }
-
-    // -------------------------------------------------------------------------
-    // Supportive methods
-    // -------------------------------------------------------------------------
-
-    private void assertEq( ImportObject importObject, ImportObjectStatus status, Class<?> clazz, GroupMemberType type, Object object, Object compareObject )
-    {
-        assertEquals( importObject.getStatus(), status );
-        assertEquals( importObject.getClassName(), clazz.getName() );
-        assertEquals( importObject.getGroupMemberType(), type );
-        assertEquals( importObject.getObject(), object );
-        assertEquals( importObject.getCompareObject(), compareObject );
-    }
-    
-    private void assertNulls( Integer... identifiers )
-    {
-        for ( Integer id : identifiers )
-        {
-            assertNull( importObjectStore.getImportObject( id ) );
-        }
-    }
-    
-    private void assertNotNulls( Integer... identifiers )
-    {
-        for ( Integer id : identifiers )
-        {
-            assertNotNull( importObjectStore.getImportObject( id ) );
-        }
-    }
-    
-    // -------------------------------------------------------------------------
-    // ImportObject
-    // -------------------------------------------------------------------------
-
-    @Test
-    public void testAddGetImportObject()
-    {
-        assertEq( importObjectStore.getImportObject( idA ), ImportObjectStatus.NEW, DataElement.class, GroupMemberType.NONE, dataElementA, null );        
-        assertEq( importObjectStore.getImportObject( idC ), ImportObjectStatus.UPDATE, DataElement.class, GroupMemberType.NONE, dataElementC, null );
-        assertEq( importObjectStore.getImportObject( idH ), ImportObjectStatus.MATCH, GroupMemberAssociation.class, GroupMemberType.DATAELEMENTGROUP, associationB, null );
-    }
-
-    @Test
-    public void testUpdateImportObject()
-    {
-        assertEq( importObjectStore.getImportObject( idA ), ImportObjectStatus.NEW, DataElement.class, GroupMemberType.NONE, dataElementA, null );        
-        assertEq( importObjectStore.getImportObject( idC ), ImportObjectStatus.UPDATE, DataElement.class, GroupMemberType.NONE, dataElementC, null );
-        assertEq( importObjectStore.getImportObject( idH ), ImportObjectStatus.MATCH, GroupMemberAssociation.class, GroupMemberType.DATAELEMENTGROUP, associationB, null );
-        
-        importObjectA.setClassName( DataElementGroup.class.getName() );
-        importObjectC.setStatus( ImportObjectStatus.MATCH );
-        importObjectH.setObject( dataElementA );
-        
-        importObjectStore.updateImportObject( importObjectA );
-        importObjectStore.updateImportObject( importObjectC );
-        importObjectStore.updateImportObject( importObjectH );
-        
-        assertEq( importObjectStore.getImportObject( idA ), ImportObjectStatus.NEW, DataElementGroup.class, GroupMemberType.NONE, dataElementA, null );        
-        assertEq( importObjectStore.getImportObject( idC ), ImportObjectStatus.MATCH, DataElement.class, GroupMemberType.NONE, dataElementC, null );
-        assertEq( importObjectStore.getImportObject( idH ), ImportObjectStatus.MATCH, GroupMemberAssociation.class, GroupMemberType.DATAELEMENTGROUP, dataElementA, null );        
-    }
-
-    @Test
-    @Ignore //TODO
-    public void testGetImportObjectsByClass()
-    {
-        Collection<ImportObject> importObjects = importObjectStore.getImportObjects( DataElement.class );
-        
-        assertEquals( importObjects.size(), 3 );
-        
-        assertTrue( importObjects.contains( importObjectA ) );
-        assertTrue( importObjects.contains( importObjectB ) );
-        assertTrue( importObjects.contains( importObjectC ) );
-        
-        importObjects = importObjectStore.getImportObjects( GroupMemberAssociation.class );
-
-        assertEquals( importObjects.size(), 3 );
-        
-        assertTrue( importObjects.contains( importObjectG ) );
-        assertTrue( importObjects.contains( importObjectH ) );
-        assertTrue( importObjects.contains( importObjectI ) );        
-    }
-
-    @Test
-    @Ignore //TODO
-    public void testGetImportObjectsByStatusClass()
-    {
-        Collection<ImportObject> importObjects = importObjectStore.getImportObjects( ImportObjectStatus.NEW, DataElement.class );
-        
-        assertEquals( importObjects.size(), 2 );
-        
-        assertTrue( importObjects.contains( importObjectA ) );
-        assertTrue( importObjects.contains( importObjectB ) );
-        
-        importObjects = importObjectStore.getImportObjects( ImportObjectStatus.MATCH, GroupMemberAssociation.class );
-
-        assertEquals( importObjects.size(), 2 );
-        
-        assertTrue( importObjects.contains( importObjectH ) );
-        assertTrue( importObjects.contains( importObjectI ) );        
-    }
-
-    @Test
-    @Ignore //TODO
-    public void testGetImportObjectsByGroupMemberType()
-    {
-        Collection<ImportObject> importObjects = importObjectStore.getImportObjects( GroupMemberType.NONE );
-        
-        assertEquals( importObjects.size(), 6 );
-        
-        assertTrue( importObjects.contains( importObjectA ) );
-        assertTrue( importObjects.contains( importObjectB ) );
-        assertTrue( importObjects.contains( importObjectC ) );
-        assertTrue( importObjects.contains( importObjectD ) );
-        assertTrue( importObjects.contains( importObjectE ) );
-        assertTrue( importObjects.contains( importObjectF ) );
-        
-        importObjects = importObjectStore.getImportObjects( GroupMemberType.DATAELEMENTGROUP );
-
-        assertEquals( importObjects.size(), 3 );
-        
-        assertTrue( importObjects.contains( importObjectG ) );
-        assertTrue( importObjects.contains( importObjectH ) );
-        assertTrue( importObjects.contains( importObjectI ) );        
-    }
-
-    @Test
-    @Ignore //TODO
-    public void testDeleteImportObject()
-    {
-        assertNotNulls( idA, idB, idC );
-        
-        importObjectStore.deleteImportObject( importObjectA );
-        
-        assertNulls( idA );
-        assertNotNulls( idB, idC );
-
-        importObjectStore.deleteImportObject( importObjectB );
-        
-        assertNulls( idA, idB );
-        assertNotNulls( idC );
-
-        importObjectStore.deleteImportObject( importObjectC );
-        
-        assertNulls( idA, idB, idC );
-    }
-
-    @Test
-    @Ignore //TODO
-    public void testDeleteImportObjectsByClass()
-    {
-        assertNotNulls( idA, idB, idC, idD, idE, idF, idG, idH, idI );
-
-        assertEquals( importObjectStore.getImportObjects( DataElement.class ).size(), 3 );
-        assertEquals( importObjectStore.getImportObjects( DataElementGroup.class ).size(), 3 );
-        assertEquals( importObjectStore.getImportObjects( GroupMemberAssociation.class ).size(), 3 );
-
-        importObjectStore.deleteImportObjects( DataElement.class );
-        
-        assertNotNulls( idD, idE, idF, idG, idH, idI );
-        assertNulls( idA, idB, idC );
-
-        assertEquals( importObjectStore.getImportObjects( DataElement.class ).size(), 0 );
-        assertEquals( importObjectStore.getImportObjects( DataElementGroup.class ).size(), 3 );
-        assertEquals( importObjectStore.getImportObjects( GroupMemberAssociation.class ).size(), 3 );
-
-        importObjectStore.deleteImportObjects( DataElementGroup.class );
-        
-        assertNotNulls( idG, idH, idI );
-        assertNulls( idA, idB, idC, idD, idE, idF );
-
-        assertEquals( importObjectStore.getImportObjects( DataElement.class ).size(), 0 );
-        assertEquals( importObjectStore.getImportObjects( DataElementGroup.class ).size(), 0 );
-        assertEquals( importObjectStore.getImportObjects( GroupMemberAssociation.class ).size(), 3 );
-
-        importObjectStore.deleteImportObjects( GroupMemberAssociation.class );
-        
-        assertNulls( idA, idB, idC, idD, idE, idF, idG, idH, idI );
-
-        assertEquals( importObjectStore.getImportObjects( DataElement.class ).size(), 0 );
-        assertEquals( importObjectStore.getImportObjects( DataElementGroup.class ).size(), 0 );
-        assertEquals( importObjectStore.getImportObjects( GroupMemberAssociation.class ).size(), 0 );
-    }
-
-    @Test
-    @Ignore //TODO
-    public void testDeleteImportObjectsByGroupMemberType()
-    {
-        assertNotNulls( idA, idB, idC, idD, idE, idF, idG, idH, idI );
-
-        assertEquals( importObjectStore.getImportObjects( GroupMemberType.NONE ).size(), 6 );
-        assertEquals( importObjectStore.getImportObjects( GroupMemberType.DATAELEMENTGROUP ).size(), 3 );
-
-        importObjectStore.deleteImportObjects( GroupMemberType.NONE );
-        
-        assertNotNulls( idG, idH, idI );
-        assertNulls( idA, idB, idC, idD, idE, idF );
-        
-        assertEquals( importObjectStore.getImportObjects( GroupMemberType.NONE ).size(), 0 );
-        assertEquals( importObjectStore.getImportObjects( GroupMemberType.DATAELEMENTGROUP ).size(), 3 );
-
-        importObjectStore.deleteImportObjects( GroupMemberType.DATAELEMENTGROUP );
-        
-        assertNulls( idA, idB, idC, idD, idE, idF, idG, idH, idI );
-
-        assertEquals( importObjectStore.getImportObjects( GroupMemberType.NONE ).size(), 0 );
-        assertEquals( importObjectStore.getImportObjects( GroupMemberType.DATAELEMENTGROUP ).size(), 0 );
-    }
-
-    @Test
-    @Ignore // Objects not evicted from second-level cache
-    public void testDeleteAllImportObjects()
-    {
-        assertNotNulls( idA, idB, idC, idD, idE, idF, idG, idH, idI );
-
-        assertEquals( importObjectStore.getImportObjects( GroupMemberType.NONE ).size(), 6 );
-        assertEquals( importObjectStore.getImportObjects( GroupMemberType.DATAELEMENTGROUP ).size(), 3 );
-
-        importObjectStore.deleteImportObjects();
-
-        assertNulls( idA, idB, idC, idD, idE, idF, idG, idH, idI );
-
-        assertEquals( importObjectStore.getImportObjects( GroupMemberType.NONE ).size(), 0 );
-        assertEquals( importObjectStore.getImportObjects( GroupMemberType.DATAELEMENTGROUP ).size(), 0 );
-    }
-}

=== modified file 'dhis-2/dhis-services/dhis-service-integration/pom.xml'
--- dhis-2/dhis-services/dhis-service-integration/pom.xml	2013-05-31 08:27:38 +0000
+++ dhis-2/dhis-services/dhis-service-integration/pom.xml	2013-08-22 13:19:57 +0000
@@ -15,6 +15,21 @@
   
   <dependencies>
       
+    <!-- DHIS -->
+    <dependency>
+      <groupId>org.hisp.dhis</groupId>
+      <artifactId>dhis-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.hisp.dhis</groupId>
+      <artifactId>dhis-service-dxf2</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.hisp.dhis</groupId>
+      <artifactId>dhis-service-core</artifactId>
+    </dependency>
+    
+    <!-- Jaxb -->
     <dependency>
       <groupId>javax.xml.bind</groupId>
       <artifactId>jaxb-api</artifactId>
@@ -24,24 +39,6 @@
       <artifactId>jaxb-impl</artifactId>
     </dependency>
     
-    <!-- DHIS -->
-    <dependency>
-      <groupId>org.hisp.dhis</groupId>
-      <artifactId>dhis-api</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.hisp.dhis</groupId>
-      <artifactId>dhis-dxf2</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.hisp.dhis</groupId>
-      <artifactId>dhis-service-core</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.hisp.dhis</groupId>
-      <artifactId>dhis-support-external</artifactId>
-    </dependency>
-    
     <!-- Camel core -->
     <dependency>
       <groupId>org.apache.camel</groupId>

=== modified file 'dhis-2/dhis-services/pom.xml'
--- dhis-2/dhis-services/pom.xml	2013-08-21 12:29:12 +0000
+++ dhis-2/dhis-services/pom.xml	2013-08-22 13:19:57 +0000
@@ -13,20 +13,33 @@
   <packaging>pom</packaging>
   <name>DHIS Services Parent Project</name>
   
+  <!-- 
+    Service modules are grouped in levels, where a module in a level can only
+    depend on modules on a lower level. The modules are built in in ascending 
+    order according to their level.
+  -->
+  
   <modules>
+    <!-- Level 1 -->
     <module>dhis-service-core</module>
-    <module>dhis-service-integration</module>
-    <module>dhis-service-i18n</module>
+    <!-- Level 2 -->
     <module>dhis-service-administration</module>
+    <module>dhis-service-aggregationengine-default</module>
     <module>dhis-service-datamart-default</module>
-    <module>dhis-service-importexport</module>
+    <module>dhis-service-i18n</module>
+    <module>dhis-service-patient</module>
+    <!-- Level 3 -->
+    <module>dhis-service-dxf2</module>
+    <module>dhis-service-analytics</module>
+    <module>dhis-service-mobile</module>
+    <!-- Level 4 -->
+    <module>dhis-service-integration</module>
     <module>dhis-service-mapgeneration</module>
-    <module>dhis-service-aggregationengine-default</module>
-    <module>dhis-service-analytics</module>
-    <module>dhis-service-patient</module>
     <module>dhis-service-eventreporting</module>
-	<module>dhis-service-mobile</module>
+    <!-- Level 5 -->
     <module>dhis-service-reporting</module>
+    <!-- Level 6 -->
+    <module>dhis-service-importexport</module>
   </modules>
   
   <dependencies>

=== modified file 'dhis-2/dhis-web/dhis-web-api-fred/pom.xml'
--- dhis-2/dhis-web/dhis-web-api-fred/pom.xml	2013-08-12 03:29:54 +0000
+++ dhis-2/dhis-web/dhis-web-api-fred/pom.xml	2013-08-22 13:19:57 +0000
@@ -40,7 +40,7 @@
     </dependency>
     <dependency>
       <groupId>org.hisp.dhis</groupId>
-      <artifactId>dhis-dxf2</artifactId>
+      <artifactId>dhis-service-dxf2</artifactId>
     </dependency>
     <dependency>
       <groupId>org.hisp.dhis</groupId>

=== modified file 'dhis-2/dhis-web/dhis-web-api/pom.xml'
--- dhis-2/dhis-web/dhis-web-api/pom.xml	2013-08-12 03:29:54 +0000
+++ dhis-2/dhis-web/dhis-web-api/pom.xml	2013-08-22 13:19:57 +0000
@@ -23,7 +23,7 @@
     </dependency>
     <dependency>
       <groupId>org.hisp.dhis</groupId>
-      <artifactId>dhis-dxf2</artifactId>
+      <artifactId>dhis-service-dxf2</artifactId>
     </dependency>
         <dependency>
       <groupId>org.hisp.dhis</groupId>

=== modified file 'dhis-2/dhis-web/dhis-web-commons/pom.xml'
--- dhis-2/dhis-web/dhis-web-commons/pom.xml	2013-07-16 14:06:13 +0000
+++ dhis-2/dhis-web/dhis-web-commons/pom.xml	2013-08-22 13:19:57 +0000
@@ -21,7 +21,7 @@
     </dependency>
     <dependency>
       <groupId>org.hisp.dhis</groupId>
-      <artifactId>dhis-dxf2</artifactId>
+      <artifactId>dhis-service-dxf2</artifactId>
     </dependency>
     <dependency>
       <groupId>org.hisp.dhis</groupId>

=== modified file 'dhis-2/dhis-web/dhis-web-importexport/pom.xml'
--- dhis-2/dhis-web/dhis-web-importexport/pom.xml	2013-05-31 08:27:38 +0000
+++ dhis-2/dhis-web/dhis-web-importexport/pom.xml	2013-08-22 13:19:57 +0000
@@ -42,12 +42,8 @@
       <artifactId>dhis-service-administration</artifactId>
     </dependency>
     <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.hisp.dhis</groupId>
-      <artifactId>dhis-dxf2</artifactId>
+      <artifactId>dhis-service-dxf2</artifactId>
     </dependency>
     <dependency>
       <groupId>org.hisp.dhis</groupId>

=== modified file 'dhis-2/dhis-web/dhis-web-mobile/pom.xml'
--- dhis-2/dhis-web/dhis-web-mobile/pom.xml	2013-08-12 03:29:54 +0000
+++ dhis-2/dhis-web/dhis-web-mobile/pom.xml	2013-08-22 13:19:57 +0000
@@ -36,7 +36,7 @@
     </dependency>
     <dependency>
       <groupId>org.hisp.dhis</groupId>
-      <artifactId>dhis-dxf2</artifactId>
+      <artifactId>dhis-service-dxf2</artifactId>
     </dependency>
     <dependency>
       <groupId>org.hisp.dhis</groupId>

=== modified file 'dhis-2/pom.xml'
--- dhis-2/pom.xml	2013-08-21 12:29:12 +0000
+++ dhis-2/pom.xml	2013-08-22 13:19:57 +0000
@@ -25,7 +25,6 @@
   <modules>
     <module>dhis-api</module>
     <module>dhis-services</module>
-    <module>dhis-dxf2</module>
     <module>dhis-support</module>
   </modules>
 
@@ -247,7 +246,7 @@
       </dependency>
       <dependency>
         <groupId>org.hisp.dhis</groupId>
-        <artifactId>dhis-dxf2</artifactId>
+        <artifactId>dhis-service-dxf2</artifactId>
         <version>${project.version}</version>
       </dependency>
       <dependency>