dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #42291
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 21619: AnalyticalObjectStore, impl methods for getting objects by dimensional item objects
------------------------------------------------------------
revno: 21619
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Wed 2016-01-06 14:45:38 +0100
message:
AnalyticalObjectStore, impl methods for getting objects by dimensional item objects
added:
dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/common/AnalyticalObjectStoreTest.java
modified:
dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/AnalyticalObjectStore.java
dhis-2/dhis-api/src/main/java/org/hisp/dhis/mapping/MapView.java
dhis-2/dhis-api/src/main/java/org/hisp/dhis/reporttable/ReportTable.java
dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/common/hibernate/HibernateAnalyticalObjectStore.java
dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/mapping/DefaultMappingService.java
dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/chart/impl/DefaultChartService.java
dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/reporttable/impl/DefaultReportTableService.java
--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/AnalyticalObjectStore.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/AnalyticalObjectStore.java 2016-01-04 02:27:49 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/AnalyticalObjectStore.java 2016-01-06 13:45:38 +0000
@@ -1,5 +1,7 @@
package org.hisp.dhis.common;
+import java.util.List;
+
/*
* Copyright (c) 2004-2016, University of Oslo
* All rights reserved.
@@ -42,17 +44,31 @@
public interface AnalyticalObjectStore<T extends BaseAnalyticalObject>
extends GenericIdentifiableObjectStore<T>
{
- int countDataSetAnalyticalObject( DataSet dataSet );
-
- int countIndicatorAnalyticalObject( Indicator indicator );
-
- int countDataElementAnalyticalObject( DataElement dataElement );
-
- int countProgramIndicatorAnalyticalObject( ProgramIndicator programIndicator );
-
- int countPeriodAnalyticalObject( Period period );
-
- int countOrganisationUnitAnalyticalObject( OrganisationUnit organisationUnit );
-
- int countCategoryOptionGroupAnalyticalObject( CategoryOptionGroup categoryOptionGroup );
+ List<T> getAnalyticalObjects( Indicator indicator );
+
+ List<T> getAnalyticalObjects( DataElement dataElement );
+
+ List<T> getAnalyticalObjects( DataSet dataSet );
+
+ List<T> getAnalyticalObjects( ProgramIndicator programIndicator );
+
+ List<T> getAnalyticalObjects( Period period );
+
+ List<T> getAnalyticalObjects( OrganisationUnit organisationUnit );
+
+ List<T> getAnalyticalObjects( CategoryOptionGroup categoryOptionGroup );
+
+ int countAnalyticalObject( Indicator indicator );
+
+ int countAnalyticalObject( DataElement dataElement );
+
+ int countAnalyticalObject( DataSet dataSet );
+
+ int countAnalyticalObject( ProgramIndicator programIndicator );
+
+ int countAnalyticalObject( Period period );
+
+ int countAnalyticalObject( OrganisationUnit organisationUnit );
+
+ int countAnalyticalObject( CategoryOptionGroup categoryOptionGroup );
}
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/mapping/MapView.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/mapping/MapView.java 2016-01-04 02:27:49 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/mapping/MapView.java 2016-01-06 13:45:38 +0000
@@ -135,6 +135,11 @@
{
}
+ public MapView( String layer )
+ {
+ this.layer = layer;
+ }
+
// -------------------------------------------------------------------------
// Analytical
// -------------------------------------------------------------------------
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/reporttable/ReportTable.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/reporttable/ReportTable.java 2016-01-04 02:27:49 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/reporttable/ReportTable.java 2016-01-06 13:45:38 +0000
@@ -231,7 +231,7 @@
public ReportTable()
{
}
-
+
/**
* Default constructor.
*
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/common/hibernate/HibernateAnalyticalObjectStore.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/common/hibernate/HibernateAnalyticalObjectStore.java 2016-01-04 02:27:49 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/common/hibernate/HibernateAnalyticalObjectStore.java 2016-01-06 13:45:38 +0000
@@ -39,6 +39,8 @@
import org.hisp.dhis.period.Period;
import org.hisp.dhis.program.ProgramIndicator;
+import java.util.List;
+
/**
* @author Morten Olav Hansen <mortenoh@xxxxxxxxx>
*/
@@ -46,9 +48,65 @@
extends HibernateIdentifiableObjectStore<T> implements AnalyticalObjectStore<T>
{
//TODO program indicator, tracked entity attribute
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public List<T> getAnalyticalObjects( Indicator indicator )
+ {
+ String hql = "select distinct c from " + clazz.getSimpleName() + " c join c.dataDimensionItems d where d.indicator = :indicator";
+ return getQuery( hql ).setEntity( "indicator", indicator ).list();
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public List<T> getAnalyticalObjects( DataElement dataElement )
+ {
+ String hql = "select distinct c from " + clazz.getName() + " c join c.dataDimensionItems d where d.dataElement = :dataElement";
+ return getQuery( hql ).setEntity( "dataElement", dataElement ).list();
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public List<T> getAnalyticalObjects( DataSet dataSet )
+ {
+ String hql = "select distinct c from " + clazz.getName() + " c join c.dataDimensionItems d where d.dataElement = :dataElement";
+ return getQuery( hql ).setEntity( "dataSet", dataSet ).list();
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public List<T> getAnalyticalObjects( ProgramIndicator programIndicator )
+ {
+ String hql = "select distinct c from " + clazz.getName() + " c join c.dataDimensionItems d where d.dataElement = :dataElement";
+ return getQuery( hql ).setEntity( "programIndicator", programIndicator ).list();
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public List<T> getAnalyticalObjects( Period period )
+ {
+ String hql = "from " + clazz.getName() + " c where :period in elements(c.periods)";
+ return getQuery( hql ).setEntity( "period", period ).list();
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public List<T> getAnalyticalObjects( OrganisationUnit organisationUnit )
+ {
+ String hql = "from " + clazz.getName() + " c where :organisationUnit in elements(c.organisationUnits)";
+ return getQuery( hql ).setEntity( "organisationUnit", organisationUnit ).list();
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public List<T> getAnalyticalObjects( CategoryOptionGroup categoryOptionGroup )
+ {
+ String hql = "from " + clazz.getName() + " c where :categoryOptionGroup in elements(c.categoryOptionGroups)";
+ return getQuery( hql ).setEntity( "categoryOptionGroup", categoryOptionGroup ).list();
+ }
@Override
- public int countIndicatorAnalyticalObject( Indicator indicator )
+ public int countAnalyticalObject( Indicator indicator )
{
Query query = getQuery( "select count(distinct c) from " + clazz.getName() + " c join c.dataDimensionItems d where d.indicator = :indicator" );
query.setEntity( "indicator", indicator );
@@ -57,7 +115,7 @@
}
@Override
- public int countDataElementAnalyticalObject( DataElement dataElement )
+ public int countAnalyticalObject( DataElement dataElement )
{
Query query = getQuery( "select count(distinct c) from " + clazz.getName() + " c join c.dataDimensionItems d where d.dataElement = :dataElement" );
query.setEntity( "dataElement", dataElement );
@@ -66,7 +124,7 @@
}
@Override
- public int countDataSetAnalyticalObject( DataSet dataSet )
+ public int countAnalyticalObject( DataSet dataSet )
{
Query query = getQuery( "select count(distinct c) from " + clazz.getName() + " c join c.dataDimensionItems d where d.dataSet = :dataSet" );
query.setEntity( "dataSet", dataSet );
@@ -75,7 +133,7 @@
}
@Override
- public int countProgramIndicatorAnalyticalObject( ProgramIndicator programIndicator )
+ public int countAnalyticalObject( ProgramIndicator programIndicator )
{
Query query = getQuery( "select count(distinct c) from " + clazz.getName() + " c join c.dataDimensionItems d where d.programIndicator = :programIndicator" );
query.setEntity( "dataSet", programIndicator );
@@ -84,7 +142,7 @@
}
@Override
- public int countPeriodAnalyticalObject( Period period )
+ public int countAnalyticalObject( Period period )
{
Query query = getQuery( "select count(distinct c) from " + clazz.getName() + " c where :period in elements(c.periods)" );
query.setEntity( "period", period );
@@ -93,7 +151,7 @@
}
@Override
- public int countOrganisationUnitAnalyticalObject( OrganisationUnit organisationUnit )
+ public int countAnalyticalObject( OrganisationUnit organisationUnit )
{
Query query = getQuery( "select count(distinct c) from " + clazz.getName() + " c where :organisationUnit in elements(c.organisationUnits)" );
query.setEntity( "organisationUnit", organisationUnit );
@@ -102,7 +160,7 @@
}
@Override
- public int countCategoryOptionGroupAnalyticalObject( CategoryOptionGroup categoryOptionGroup )
+ public int countAnalyticalObject( CategoryOptionGroup categoryOptionGroup )
{
Query query = getQuery( "select count(distinct c) from " + clazz.getName() + " c where :categoryOptionGroup in elements(c.categoryOptionGroups)" );
query.setEntity( "categoryOptionGroup", categoryOptionGroup );
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/mapping/DefaultMappingService.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/mapping/DefaultMappingService.java 2016-01-04 02:27:49 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/mapping/DefaultMappingService.java 2016-01-06 13:45:38 +0000
@@ -317,30 +317,30 @@
@Override
public int countDataSetMapViews( DataSet dataSet )
{
- return mapViewStore.countDataSetAnalyticalObject( dataSet );
+ return mapViewStore.countAnalyticalObject( dataSet );
}
@Override
public int countIndicatorMapViews( Indicator indicator )
{
- return mapViewStore.countIndicatorAnalyticalObject( indicator );
+ return mapViewStore.countAnalyticalObject( indicator );
}
@Override
public int countDataElementMapViews( DataElement dataElement )
{
- return mapViewStore.countDataElementAnalyticalObject( dataElement );
+ return mapViewStore.countAnalyticalObject( dataElement );
}
@Override
public int countPeriodMapViews( Period period )
{
- return mapViewStore.countPeriodAnalyticalObject( period );
+ return mapViewStore.countAnalyticalObject( period );
}
@Override
public int countOrganisationUnitMapViews( OrganisationUnit organisationUnit )
{
- return mapViewStore.countOrganisationUnitAnalyticalObject( organisationUnit );
+ return mapViewStore.countAnalyticalObject( organisationUnit );
}
}
=== added file 'dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/common/AnalyticalObjectStoreTest.java'
--- dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/common/AnalyticalObjectStoreTest.java 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/common/AnalyticalObjectStoreTest.java 2016-01-06 13:45:38 +0000
@@ -0,0 +1,126 @@
+package org.hisp.dhis.common;
+
+/*
+ * Copyright (c) 2004-2016, 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 java.util.List;
+
+import javax.annotation.Resource;
+
+import org.hisp.dhis.DhisSpringTest;
+import org.hisp.dhis.indicator.Indicator;
+import org.hisp.dhis.indicator.IndicatorType;
+import org.hisp.dhis.mapping.MapView;
+import org.hisp.dhis.mapping.MapViewStore;
+import org.hisp.dhis.organisationunit.OrganisationUnit;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import static org.junit.Assert.*;
+
+/**
+ * @author Lars Helge Overland
+ */
+public class AnalyticalObjectStoreTest
+ extends DhisSpringTest
+{
+ private IndicatorType itA;
+
+ private Indicator inA;
+ private Indicator inB;
+
+ private OrganisationUnit ouA;
+ private OrganisationUnit ouB;
+
+ private MapView mvA;
+ private MapView mvB;
+ private MapView mvC;
+
+ @Autowired
+ private IdentifiableObjectManager idObjectManager;
+
+ @Resource( name = "org.hisp.dhis.mapping.MapViewStore" )
+ private MapViewStore mapViewStore;
+
+ @Override
+ public void setUpTest()
+ {
+ itA = createIndicatorType( 'A' );
+
+ idObjectManager.save( itA );
+
+ inA = createIndicator( 'A', itA );
+ inB = createIndicator( 'B', itA );
+
+ idObjectManager.save( inA );
+ idObjectManager.save( inB );
+
+ ouA = createOrganisationUnit( 'A' );
+ ouB = createOrganisationUnit( 'B' );
+
+ idObjectManager.save( ouA );
+ idObjectManager.save( ouB );
+
+ mvA = new MapView( MapView.LAYER_THEMATIC1 );
+ mvB = new MapView( MapView.LAYER_THEMATIC1 );
+ mvC = new MapView( MapView.LAYER_THEMATIC1 );
+
+ mvA.addDataDimensionItem( inA );
+ mvA.getOrganisationUnits().add( ouA );
+ mvB.addDataDimensionItem( inB );
+ mvB.getOrganisationUnits().add( ouA );
+ mvC.addDataDimensionItem( inA );
+ mvC.getOrganisationUnits().add( ouB );
+
+ mapViewStore.save( mvA );
+ mapViewStore.save( mvB );
+ mapViewStore.save( mvC );
+ }
+
+ @Test
+ public void testGetByIndicator()
+ {
+ List<MapView> actual = mapViewStore.getAnalyticalObjects( inA );
+
+ assertEquals( 2, actual.size() );
+
+ assertTrue( actual.contains( mvA ) );
+ assertTrue( actual.contains( mvC ) );
+ }
+
+ @Test
+ public void testGetByOrgansiationUnit()
+ {
+ List<MapView> actual = mapViewStore.getAnalyticalObjects( ouA );
+
+ assertEquals( 2, actual.size() );
+
+ assertTrue( actual.contains( mvA ) );
+ assertTrue( actual.contains( mvB ) );
+ }
+}
=== modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/chart/impl/DefaultChartService.java'
--- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/chart/impl/DefaultChartService.java 2016-01-04 02:27:49 +0000
+++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/chart/impl/DefaultChartService.java 2016-01-06 13:45:38 +0000
@@ -984,36 +984,36 @@
@Override
public int countDataSetCharts( DataSet dataSet )
{
- return chartStore.countDataSetAnalyticalObject( dataSet );
+ return chartStore.countAnalyticalObject( dataSet );
}
@Override
public int countIndicatorCharts( Indicator indicator )
{
- return chartStore.countIndicatorAnalyticalObject( indicator );
+ return chartStore.countAnalyticalObject( indicator );
}
@Override
public int countDataElementCharts( DataElement dataElement )
{
- return chartStore.countDataElementAnalyticalObject( dataElement );
+ return chartStore.countAnalyticalObject( dataElement );
}
@Override
public int countPeriodCharts( Period period )
{
- return chartStore.countPeriodAnalyticalObject( period );
+ return chartStore.countAnalyticalObject( period );
}
@Override
public int countOrganisationUnitCharts( OrganisationUnit organisationUnit )
{
- return chartStore.countOrganisationUnitAnalyticalObject( organisationUnit );
+ return chartStore.countAnalyticalObject( organisationUnit );
}
@Override
public int countCategoryOptionGroups( CategoryOptionGroup categoryOptionGroup )
{
- return chartStore.countCategoryOptionGroupAnalyticalObject( categoryOptionGroup );
+ return chartStore.countAnalyticalObject( categoryOptionGroup );
}
}
=== modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/reporttable/impl/DefaultReportTableService.java'
--- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/reporttable/impl/DefaultReportTableService.java 2016-01-04 02:27:49 +0000
+++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/reporttable/impl/DefaultReportTableService.java 2016-01-06 13:45:38 +0000
@@ -228,36 +228,36 @@
@Override
public int countDataSetReportTables( DataSet dataSet )
{
- return reportTableStore.countDataSetAnalyticalObject( dataSet );
+ return reportTableStore.countAnalyticalObject( dataSet );
}
@Override
public int countIndicatorReportTables( Indicator indicator )
{
- return reportTableStore.countIndicatorAnalyticalObject( indicator );
+ return reportTableStore.countAnalyticalObject( indicator );
}
@Override
public int countDataElementReportTables( DataElement dataElement )
{
- return reportTableStore.countDataElementAnalyticalObject( dataElement );
+ return reportTableStore.countAnalyticalObject( dataElement );
}
@Override
public int countPeriodReportTables( Period period )
{
- return reportTableStore.countPeriodAnalyticalObject( period );
+ return reportTableStore.countAnalyticalObject( period );
}
@Override
public int countOrganisationUnitReportTables( OrganisationUnit organisationUnit )
{
- return reportTableStore.countOrganisationUnitAnalyticalObject( organisationUnit );
+ return reportTableStore.countAnalyticalObject( organisationUnit );
}
@Override
public int countCategoryOptionGroups( CategoryOptionGroup categoryOptionGroup )
{
- return reportTableStore.countCategoryOptionGroupAnalyticalObject( categoryOptionGroup );
+ return reportTableStore.countAnalyticalObject( categoryOptionGroup );
}
}