dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #35957
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 18414: Event analytics, added support for legend set in aggregate queries. This will group the counts in...
------------------------------------------------------------
revno: 18414
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Wed 2015-02-25 16:59:31 +0100
message:
Event analytics, added support for legend set in aggregate queries. This will group the counts into ranges in the output.
modified:
dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/QueryItem.java
dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/DataQueryParams.java
dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/EventQueryParams.java
dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventAnalyticsService.java
dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/JdbcEventAnalyticsManager.java
dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/service/ActivityReportingServiceImpl.java
dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityInstanceService.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/QueryItem.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/QueryItem.java 2015-02-25 09:51:40 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/QueryItem.java 2015-02-25 15:59:31 +0000
@@ -32,6 +32,7 @@
import java.util.Collection;
import java.util.List;
+import org.hisp.dhis.legend.LegendSet;
import org.hisp.dhis.trackedentity.TrackedEntityAttribute;
import org.hisp.dhis.util.ObjectUtils;
@@ -44,6 +45,8 @@
public class QueryItem
{
private NameableObject item;
+
+ private LegendSet legendSet;
private List<QueryFilter> filters = new ArrayList<>();
@@ -60,9 +63,10 @@
this.item = item;
}
- public QueryItem( NameableObject item, String valueType, String optionSet )
+ public QueryItem( NameableObject item, LegendSet legendSet, String valueType, String optionSet )
{
this.item = item;
+ this.legendSet = legendSet;
this.valueType = valueType;
this.optionSet = optionSet;
}
@@ -88,6 +92,18 @@
return item.getUid();
}
+ public String getItemName()
+ {
+ String itemName = item.getUid();
+
+ if ( legendSet != null )
+ {
+ itemName += "_" + legendSet.getUid();
+ }
+
+ return itemName;
+ }
+
public String getTypeAsString()
{
return ObjectUtils.VALUE_TYPE_JAVA_CLASS_MAP.get( valueType ).getName();
@@ -109,7 +125,7 @@
for ( TrackedEntityAttribute attribute : attributes )
{
- queryItems.add( new QueryItem( attribute, attribute.getValueType(), attribute.hasOptionSet() ? attribute.getOptionSet().getUid() : null ) );
+ queryItems.add( new QueryItem( attribute, attribute.getLegendSet(), attribute.getValueType(), attribute.hasOptionSet() ? attribute.getOptionSet().getUid() : null ) );
}
return queryItems;
@@ -168,6 +184,16 @@
this.item = item;
}
+ public LegendSet getLegendSet()
+ {
+ return legendSet;
+ }
+
+ public void setLegendSet( LegendSet legendSet )
+ {
+ this.legendSet = legendSet;
+ }
+
public List<QueryFilter> getFilters()
{
return filters;
=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/DataQueryParams.java'
--- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/DataQueryParams.java 2015-02-19 09:18:17 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/DataQueryParams.java 2015-02-25 15:59:31 +0000
@@ -574,7 +574,8 @@
}
/**
- * Returns a list of dimensions which occur more than once.
+ * Returns a list of dimensions which occur more than once, not including
+ * the first duplicate.
*/
public List<DimensionalObject> getDuplicateDimensions()
{
=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/EventQueryParams.java'
--- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/EventQueryParams.java 2015-02-17 21:46:41 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/EventQueryParams.java 2015-02-25 15:59:31 +0000
@@ -173,7 +173,8 @@
}
/**
- * Returns a list of query items which occur more than once.
+ * Returns a list of query items which occur more than once, not including
+ * the first duplicate.
*/
public List<QueryItem> getDuplicateQueryItems()
{
=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventAnalyticsService.java'
--- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventAnalyticsService.java 2015-02-18 17:33:23 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventAnalyticsService.java 2015-02-25 15:59:31 +0000
@@ -33,6 +33,7 @@
import static org.hisp.dhis.common.DimensionalObject.ORGUNIT_DIM_ID;
import static org.hisp.dhis.common.DimensionalObject.PERIOD_DIM_ID;
import static org.hisp.dhis.common.DimensionalObjectUtils.DIMENSION_NAME_SEP;
+import static org.hisp.dhis.common.DimensionalObjectUtils.ITEM_SEP;
import static org.hisp.dhis.common.DimensionalObjectUtils.getDimensionFromParam;
import static org.hisp.dhis.common.DimensionalObjectUtils.getDimensionItemsFromParam;
import static org.hisp.dhis.common.DimensionalObjectUtils.toDimension;
@@ -76,6 +77,8 @@
import org.hisp.dhis.dataelement.DataElement;
import org.hisp.dhis.dataelement.DataElementService;
import org.hisp.dhis.i18n.I18nFormat;
+import org.hisp.dhis.legend.LegendService;
+import org.hisp.dhis.legend.LegendSet;
import org.hisp.dhis.organisationunit.OrganisationUnit;
import org.hisp.dhis.organisationunit.OrganisationUnitService;
import org.hisp.dhis.program.Program;
@@ -124,11 +127,14 @@
@Autowired
private TrackedEntityAttributeService attributeService;
-
+
@Autowired
private OrganisationUnitService organisationUnitService;
@Autowired
+ private LegendService legendService;
+
+ @Autowired
private EventAnalyticsManager analyticsManager;
@Autowired
@@ -543,7 +549,7 @@
throw new IllegalQueryException( "Query item or filter is invalid: " + dimensionString );
}
- QueryItem queryItem = getQueryItemFromUid( split[0] );
+ QueryItem queryItem = getQueryItemFromDimension( split[0] );
if ( split.length > 1 ) // Filters specified
{
@@ -651,20 +657,26 @@
return item;
}
- private QueryItem getQueryItemFromUid( String item )
+ private QueryItem getQueryItemFromDimension( String dimension )
{
+ String[] split = dimension.split( ITEM_SEP );
+
+ String item = split[0];
+
+ LegendSet legendSet = split.length > 1 && split[1] != null ? legendService.getLegendSet( split[1] ) : null;
+
DataElement de = dataElementService.getDataElement( item );
if ( de != null ) //TODO check if part of program
{
- return new QueryItem( de, de.getType(), de.hasOptionSet() ? de.getOptionSet().getUid() : null );
+ return new QueryItem( de, legendSet, de.getType(), de.hasOptionSet() ? de.getOptionSet().getUid() : null );
}
TrackedEntityAttribute at = attributeService.getTrackedEntityAttribute( item );
if ( at != null )
{
- return new QueryItem( at, at.getValueType(), at.hasOptionSet() ? at.getOptionSet().getUid() : null );
+ return new QueryItem( at, legendSet, at.getValueType(), at.hasOptionSet() ? at.getOptionSet().getUid() : null );
}
throw new IllegalQueryException( "Item identifier does not reference any data element or attribute part of the program: " + item );
=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/JdbcEventAnalyticsManager.java'
--- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/JdbcEventAnalyticsManager.java 2015-02-19 09:18:17 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/JdbcEventAnalyticsManager.java 2015-02-25 15:59:31 +0000
@@ -55,7 +55,6 @@
import org.hisp.dhis.common.DimensionType;
import org.hisp.dhis.common.DimensionalObject;
import org.hisp.dhis.common.Grid;
-import org.hisp.dhis.common.IdentifiableObject;
import org.hisp.dhis.common.NameableObject;
import org.hisp.dhis.common.QueryFilter;
import org.hisp.dhis.common.QueryItem;
@@ -171,7 +170,7 @@
for ( QueryItem queryItem : params.getItems() )
{
- String itemValue = rowSet.getString( queryItem.getItem().getUid() );
+ String itemValue = rowSet.getString( queryItem.getItemName() );
grid.addValue( itemValue );
}
@@ -389,12 +388,10 @@
{
sql += statementBuilder.columnQuote( dimension.getDimensionName() ) + ",";
}
-
+
for ( QueryItem queryItem : params.getItems() )
- {
- IdentifiableObject item = queryItem.getItem();
-
- sql += statementBuilder.columnQuote( item.getUid() ) + ",";
+ {
+ sql += statementBuilder.columnQuote( queryItem.getItemName() ) + ",";
}
return removeLastComma( sql );
@@ -523,7 +520,7 @@
*/
private String getColumn( QueryItem item )
{
- String col = statementBuilder.columnQuote( item.getItem().getUid() );
+ String col = statementBuilder.columnQuote( item.getItemName() );
return item.isNumeric() ? col : "lower(" + col + ")";
}
@@ -548,7 +545,7 @@
{
if ( columns == null || columns.isEmpty() )
{
- return "";
+ return StringUtils.EMPTY;
}
String fixedCols = StringUtils.join( columns, ", " );
=== modified file 'dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/service/ActivityReportingServiceImpl.java'
--- dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/service/ActivityReportingServiceImpl.java 2015-02-10 18:40:27 +0000
+++ dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/service/ActivityReportingServiceImpl.java 2015-02-25 15:59:31 +0000
@@ -1738,7 +1738,7 @@
else
{
TrackedEntityAttribute at = attributeService.getTrackedEntityAttributeByName( split[0] );
- QueryItem queryItem = new QueryItem( at, at.getValueType(), null );
+ QueryItem queryItem = new QueryItem( at, null, at.getValueType(), null );
QueryOperator operator = QueryOperator.fromString( split[1] );
queryItem.getFilters().add( new QueryFilter( operator, split[2] ) );
param.getFilters().add( queryItem );
=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityInstanceService.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityInstanceService.java 2015-02-22 20:02:00 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityInstanceService.java 2015-02-25 15:59:31 +0000
@@ -490,7 +490,7 @@
throw new IllegalQueryException( "Attribute does not exist: " + item );
}
- return new QueryItem( at, at.getValueType(), at.hasOptionSet() ? at.getOptionSet().getUid() : null );
+ return new QueryItem( at, null, at.getValueType(), at.hasOptionSet() ? at.getOptionSet().getUid() : null );
}
/**