[Branch ~dhis2-devs-core/dhis2/trunk] Rev 14092: Support for category option group sets in analytics service

revision-diff.txt (4.71 KB)

Lars, I think this categoryoptiongroupset thing (https://blueprints.launchpad.net/dhis2/+spec/category-option-groups-and-group-sets) is looking like a slightly bizarre twist which will come to no good.

Importantly I think it now makes communication with dhis2 closer to impossible from a third party system unless that system also implements the same categoryoptioncombo madness/peculiarity/genius (take your pick!).

The categoryoptiongroup/categoryoptiongroupset seem to equate almost directly to the category/categorycombo construct as collections of collections of categoryoptions. The difference being the constraint on groups and groupsets effectively creates the situation we had for a while with categories (where categoryoptions in one category couldn’t be in another). So instead of resolving the situation we have now implemented both variants - the one which is too loose and the other which is too strict for general use. And, somewhat arbitrarily, the one type of dimension is applicable to datasets as a whole and the other to datavalues.

In my previous mail regarding dxf datavalues I pointed out that, as we stand, the categoryOptionCombo is a just a bunch of categoryOptions where identifying the categories themselves is not even required. So for example

would store the value with a categoryoptioncombo corresponding to (‘M’,‘under1’). This makes a parser of expanded options possible by simply gathering up all the extra attribute values and looking up which catoptcombo matches. The attribute names are not important. Not ideal but we figured it would be better than nothing. I was starting to look at implementing this today when the implications of this other business started dawning.

I am worried that by now adding yet another categoryoptioncombo to the datavalue you are making this very difficult to externalize ie. there is not an easy way to describe an interoperable dxf2 datavalue format without also describing (now two variants of!) categoryoptioncombos.

Enough ranting. So what do I think should be different? :

  1. instead of creating two types of category dimension we should rather really implement the ‘concept’ properly. So categoryoptions are more than just a uniform collection of labels, but each one is linked to a concept. Like ‘under1’ is an AGE_GROUP concept. Another way of looking at this is that the collection of categoryoptions now becomes identifiable as distinct separate vocabularies - logically equivalent to having separate tables for age, sex, disease, partner etc. This is a requirement for being able to import and export codelists or controlled vocabs. It would facilitate what you have done with categoryoptiongroupsets without creating a bundle of new classes.

  2. if we want to attach attributes or dimensions (they are different) to the datavalueset we should create a datavalueset class to do this. I think this would be a much more logical addition to our datavalue object than this other catoptcombo. A datavalueset could be used for registering completeness, data locking as well as assigning broad attributes like ‘implementing partner’ to a complete range of datavalues.

Sorry for the long mail. But I am really concerned about this proliferation of categoryoptioncombos into new places. And somewhat at a loss as to how to describe this in terms of dxf2 interoperability. Maybe the weekend will shed a better light on it.

Bob

···

On 21 February 2014 13:44, noreply@launchpad.net wrote:


revno: 14092

committer: Lars Helge Øverland larshelge@gmail.com

branch nick: dhis2

timestamp: Fri 2014-02-21 14:44:04 +0100

message:

Support for category option group sets in analytics service

modified:

dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryService.java

dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java

dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataelement/DefaultDataElementCategoryService.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/dataelement/DataElementCategoryService.java’

— dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryService.java 2014-02-13 14:24:59 +0000

+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryService.java 2014-02-21 13:44:04 +0000

@@ -32,6 +32,7 @@

import org.hisp.dhis.hierarchy.HierarchyViolationException;

import java.util.Collection;

+import java.util.List;

import java.util.Map;

import java.util.Set;

@@ -396,7 +397,6 @@

  * DataElementCategoryOptions.

  *

  * @param categoryOptions
  • * @return
    
    */
    

    DataElementCategoryOptionCombo getDataElementCategoryOptionCombo(

       Collection<DataElementCategoryOption> categoryOptions );
    

@@ -410,6 +410,12 @@

  */

 DataElementCategoryOptionCombo getDataElementCategoryOptionCombo( DataElementCategoryOptionCombo categoryOptionCombo );
  • /**

  • * Retrieves a DataElementCategoryOptionCombo.
    
  • *
    
  • * @param categoryCombo the DataElementCategoryOptionCombo.
    
  • * @param categoryOptions the set of DataElementCategoryOptions.
    
  • */
    

    DataElementCategoryOptionCombo getDataElementCategoryOptionCombo( DataElementCategoryCombo categoryCombo,

       Set<DataElementCategoryOption> categoryOptions );
    

@@ -563,6 +569,8 @@

 CategoryOptionGroup getCategoryOptionGroup( int id );



 CategoryOptionGroup getCategoryOptionGroup( String uid );
  • List getCategoryOptionGroupsByUid( Collection uids );

    void deleteCategoryOptionGroup( CategoryOptionGroup group );

@@ -593,6 +601,8 @@

 CategoryOptionGroupSet getCategoryOptionGroupSet( int id );



 CategoryOptionGroupSet getCategoryOptionGroupSet( String uid );
  • List getCategoryOptionGroupSetsByUid( Collection uids );

    void deleteCategoryOptionGroupSet( CategoryOptionGroupSet group );

=== modified file ‘dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java’

— dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java 2014-02-04 21:38:37 +0000

+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java 2014-02-21 13:44:04 +0000

@@ -99,6 +99,7 @@

import org.hisp.dhis.common.NameableObject;

import org.hisp.dhis.common.NameableObjectUtils;

import org.hisp.dhis.constant.ConstantService;

+import org.hisp.dhis.dataelement.CategoryOptionGroupSet;

import org.hisp.dhis.dataelement.DataElement;

import org.hisp.dhis.dataelement.DataElementCategory;

import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo;

@@ -964,6 +965,17 @@

         return Arrays.asList( object );

     }
  •    CategoryOptionGroupSet cogs = categoryService.getCategoryOptionGroupSet( dimension );
    
  •    if ( cogs != null )
    
  •    {
    
  •        List<NameableObject> cogz = asList( categoryService.getCategoryOptionGroupsByUid( items ) );
    
  •        DimensionalObject object = new BaseDimensionalObject( dimension, DimensionType.CATEGORYOPTION_GROUPSET, null, cogs.getDisplayName(), cogz );
    
  •        return Arrays.asList( object );
    
  •    }
    
     DataElementCategory dec = categoryService.getDataElementCategory( dimension );



     if ( dec != null && dec.isDataDimension() )

=== modified file ‘dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataelement/DefaultDataElementCategoryService.java’

— dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataelement/DefaultDataElementCategoryService.java 2014-02-13 14:24:59 +0000

+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataelement/DefaultDataElementCategoryService.java 2014-02-21 13:44:04 +0000

@@ -793,6 +793,11 @@

     return categoryOptionGroupStore.getByUid( uid );

 }
  • public List getCategoryOptionGroupsByUid( Collection uids )

  • {

  •    return categoryOptionGroupStore.getByUid( uids );
    
  • }

 public void deleteCategoryOptionGroup( CategoryOptionGroup group )

 {

     categoryOptionGroupStore.delete( group );

@@ -874,6 +879,11 @@

 {

     return categoryOptionGroupSetStore.getByUid( uid );

 }
  • public List getCategoryOptionGroupSetsByUid( Collection uids )

  • {

  •    return categoryOptionGroupSetStore.getByUid( uids );
    
  • }

    public void deleteCategoryOptionGroupSet( CategoryOptionGroupSet group )

    {


Mailing list: https://launchpad.net/~dhis2-devs

Post to : dhis2-devs@lists.launchpad.net

Unsubscribe : https://launchpad.net/~dhis2-devs

More help : https://help.launchpad.net/ListHelp

Bob,

sorry I don’t have time to give a full reply now, will do later. For your work on the parser you can just ignore this for now.

There is a good reason for the new option combination, bizarre or not, and it has nothing to do with concepts nor data value sets.

Lars

···

On Fri, Feb 21, 2014 at 4:43 PM, Bob Jolliffe bobjolliffe@gmail.com wrote:

Lars, I think this categoryoptiongroupset thing (https://blueprints.launchpad.net/dhis2/+spec/category-option-groups-and-group-sets) is looking like a slightly bizarre twist which will come to no good.

Importantly I think it now makes communication with dhis2 closer to impossible from a third party system unless that system also implements the same categoryoptioncombo madness/peculiarity/genius (take your pick!).

The categoryoptiongroup/categoryoptiongroupset seem to equate almost directly to the category/categorycombo construct as collections of collections of categoryoptions. The difference being the constraint on groups and groupsets effectively creates the situation we had for a while with categories (where categoryoptions in one category couldn’t be in another). So instead of resolving the situation we have now implemented both variants - the one which is too loose and the other which is too strict for general use. And, somewhat arbitrarily, the one type of dimension is applicable to datasets as a whole and the other to datavalues.

In my previous mail regarding dxf datavalues I pointed out that, as we stand, the categoryOptionCombo is a just a bunch of categoryOptions where identifying the categories themselves is not even required. So for example

would store the value with a categoryoptioncombo corresponding to (‘M’,‘under1’). This makes a parser of expanded options possible by simply gathering up all the extra attribute values and looking up which catoptcombo matches. The attribute names are not important. Not ideal but we figured it would be better than nothing. I was starting to look at implementing this today when the implications of this other business started dawning.

I am worried that by now adding yet another categoryoptioncombo to the datavalue you are making this very difficult to externalize ie. there is not an easy way to describe an interoperable dxf2 datavalue format without also describing (now two variants of!) categoryoptioncombos.

Enough ranting. So what do I think should be different? :

  1. instead of creating two types of category dimension we should rather really implement the ‘concept’ properly. So categoryoptions are more than just a uniform collection of labels, but each one is linked to a concept. Like ‘under1’ is an AGE_GROUP concept. Another way of looking at this is that the collection of categoryoptions now becomes identifiable as distinct separate vocabularies - logically equivalent to having separate tables for age, sex, disease, partner etc. This is a requirement for being able to import and export codelists or controlled vocabs. It would facilitate what you have done with categoryoptiongroupsets without creating a bundle of new classes.
  1. if we want to attach attributes or dimensions (they are different) to the datavalueset we should create a datavalueset class to do this. I think this would be a much more logical addition to our datavalue object than this other catoptcombo. A datavalueset could be used for registering completeness, data locking as well as assigning broad attributes like ‘implementing partner’ to a complete range of datavalues.

Sorry for the long mail. But I am really concerned about this proliferation of categoryoptioncombos into new places. And somewhat at a loss as to how to describe this in terms of dxf2 interoperability. Maybe the weekend will shed a better light on it.

Bob


Mailing list: https://launchpad.net/~dhis2-devs

Post to : dhis2-devs@lists.launchpad.net

Unsubscribe : https://launchpad.net/~dhis2-devs

More help : https://help.launchpad.net/ListHelp

On 21 February 2014 13:44, noreply@launchpad.net wrote:


revno: 14092

committer: Lars Helge Øverland larshelge@gmail.com

branch nick: dhis2

timestamp: Fri 2014-02-21 14:44:04 +0100

message:

Support for category option group sets in analytics service

modified:

dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryService.java

dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java

dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataelement/DefaultDataElementCategoryService.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/dataelement/DataElementCategoryService.java’

— dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryService.java 2014-02-13 14:24:59 +0000

+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryService.java 2014-02-21 13:44:04 +0000

@@ -32,6 +32,7 @@

import org.hisp.dhis.hierarchy.HierarchyViolationException;

import java.util.Collection;

+import java.util.List;

import java.util.Map;

import java.util.Set;

@@ -396,7 +397,6 @@

  * DataElementCategoryOptions.

  *

  * @param categoryOptions
  • * @return
    
    */
    

    DataElementCategoryOptionCombo getDataElementCategoryOptionCombo(

       Collection<DataElementCategoryOption> categoryOptions );
    

@@ -410,6 +410,12 @@

  */

 DataElementCategoryOptionCombo getDataElementCategoryOptionCombo( DataElementCategoryOptionCombo categoryOptionCombo );
  • /**

  • * Retrieves a DataElementCategoryOptionCombo.
    
  • *
    
  • * @param categoryCombo the DataElementCategoryOptionCombo.
    
  • * @param categoryOptions the set of DataElementCategoryOptions.
    
  • */
    

    DataElementCategoryOptionCombo getDataElementCategoryOptionCombo( DataElementCategoryCombo categoryCombo,

       Set<DataElementCategoryOption> categoryOptions );
    

@@ -563,6 +569,8 @@

 CategoryOptionGroup getCategoryOptionGroup( int id );



 CategoryOptionGroup getCategoryOptionGroup( String uid );
  • List getCategoryOptionGroupsByUid( Collection uids );

    void deleteCategoryOptionGroup( CategoryOptionGroup group );

@@ -593,6 +601,8 @@

 CategoryOptionGroupSet getCategoryOptionGroupSet( int id );



 CategoryOptionGroupSet getCategoryOptionGroupSet( String uid );
  • List getCategoryOptionGroupSetsByUid( Collection uids );

    void deleteCategoryOptionGroupSet( CategoryOptionGroupSet group );

=== modified file ‘dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java’

— dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java 2014-02-04 21:38:37 +0000

+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java 2014-02-21 13:44:04 +0000

@@ -99,6 +99,7 @@

import org.hisp.dhis.common.NameableObject;

import org.hisp.dhis.common.NameableObjectUtils;

import org.hisp.dhis.constant.ConstantService;

+import org.hisp.dhis.dataelement.CategoryOptionGroupSet;

import org.hisp.dhis.dataelement.DataElement;

import org.hisp.dhis.dataelement.DataElementCategory;

import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo;

@@ -964,6 +965,17 @@

         return Arrays.asList( object );

     }
  •    CategoryOptionGroupSet cogs = categoryService.getCategoryOptionGroupSet( dimension );
    
  •    if ( cogs != null )
    
  •    {
    
  •        List<NameableObject> cogz = asList( categoryService.getCategoryOptionGroupsByUid( items ) );
    
  •        DimensionalObject object = new BaseDimensionalObject( dimension, DimensionType.CATEGORYOPTION_GROUPSET, null, cogs.getDisplayName(), cogz );
    
  •        return Arrays.asList( object );
    
  •    }
    
     DataElementCategory dec = categoryService.getDataElementCategory( dimension );



     if ( dec != null && dec.isDataDimension() )

=== modified file ‘dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataelement/DefaultDataElementCategoryService.java’

— dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataelement/DefaultDataElementCategoryService.java 2014-02-13 14:24:59 +0000

+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataelement/DefaultDataElementCategoryService.java 2014-02-21 13:44:04 +0000

@@ -793,6 +793,11 @@

     return categoryOptionGroupStore.getByUid( uid );

 }
  • public List getCategoryOptionGroupsByUid( Collection uids )

  • {

  •    return categoryOptionGroupStore.getByUid( uids );
    
  • }

 public void deleteCategoryOptionGroup( CategoryOptionGroup group )

 {

     categoryOptionGroupStore.delete( group );

@@ -874,6 +879,11 @@

 {

     return categoryOptionGroupSetStore.getByUid( uid );

 }
  • public List getCategoryOptionGroupSetsByUid( Collection uids )

  • {

  •    return categoryOptionGroupSetStore.getByUid( uids );
    
  • }

    public void deleteCategoryOptionGroupSet( CategoryOptionGroupSet group )

    {


Mailing list: https://launchpad.net/~dhis2-devs

Post to : dhis2-devs@lists.launchpad.net

Unsubscribe : https://launchpad.net/~dhis2-devs

More help : https://help.launchpad.net/ListHelp

Bob,

sorry I don't have time to give a full reply now, will do later. For your
work on the parser you can just ignore this for now.

OK. will try.

There is a good reason for the new option combination, bizarre or not, and
it has nothing to do with concepts nor data value sets.

Alright. I am sceptical. I can see that it probably solves an immediate
problem with partner reporting but am not convinced its the best approach.
Will wait to hear the good reason when you have more time.

···

On 21 February 2014 16:56, Lars Helge Øverland <larshelge@gmail.com> wrote:

Lars

On Fri, Feb 21, 2014 at 4:43 PM, Bob Jolliffe <bobjolliffe@gmail.com>wrote:

Lars, I think this categoryoptiongroupset thing (
https://blueprints.launchpad.net/dhis2/+spec/category-option-groups-and-group-sets)
is looking like a slightly bizarre twist which will come to no good.

Importantly I think it now makes communication with dhis2 closer to
impossible from a third party system unless that system also implements the
same categoryoptioncombo madness/peculiarity/genius (take your pick!).

The categoryoptiongroup/categoryoptiongroupset seem to equate almost
directly to the category/categorycombo construct as collections of
collections of categoryoptions. The difference being the constraint on
groups and groupsets effectively creates the situation we had for a while
with categories (where categoryoptions in one category couldn't be in
another). So instead of resolving the situation we have now implemented
both variants - the one which is too loose and the other which is too
strict for general use. And, somewhat arbitrarily, the one type of
dimension is applicable to datasets as a whole and the other to datavalues.

In my previous mail regarding dxf datavalues I pointed out that, as we
stand, the categoryOptionCombo is a just a bunch of categoryOptions where
identifying the categories themselves is not even required. So for example

<dv value='3' sex='M' age='under1' />

would store the value with a categoryoptioncombo corresponding to
('M','under1'). This makes a parser of expanded options possible by simply
gathering up *all* the extra attribute values and looking up which
catoptcombo matches. The attribute names are not important. Not ideal but
we figured it would be better than nothing. I was starting to look at
implementing this today when the implications of this other business
started dawning.

I am worried that by now adding yet another categoryoptioncombo to the
datavalue you are making this very difficult to externalize ie. there is
not an easy way to describe an interoperable dxf2 datavalue format without
also describing (now two variants of!) categoryoptioncombos.

Enough ranting. So what do I think should be different? :
1. instead of creating two types of category dimension we should rather
really implement the 'concept' properly. So categoryoptions are more than
just a uniform collection of labels, but each one is linked to a concept.
Like 'under1' is an AGE_GROUP concept. Another way of looking at this is
that the collection of categoryoptions now becomes identifiable as distinct
separate vocabularies - logically equivalent to having separate tables for
age, sex, disease, partner etc. This is a requirement for being able to
import and export codelists or controlled vocabs. It would facilitate what
you have done with categoryoptiongroupsets without creating a bundle of new
classes.
2. if we want to attach attributes or dimensions (they are different) to
the datavalueset we should create a datavalueset class to do this. I think
this would be a much more logical addition to our datavalue object than
this other catoptcombo. A datavalueset could be used for registering
completeness, data locking as well as assigning broad attributes like
'implementing partner' to a complete range of datavalues.

Sorry for the long mail. But I am really concerned about this
proliferation of categoryoptioncombos into new places. And somewhat at a
loss as to how to describe this in terms of dxf2 interoperability. Maybe
the weekend will shed a better light on it.

Bob

On 21 February 2014 13:44, <noreply@launchpad.net> wrote:

------------------------------------------------------------
revno: 14092
committer: Lars Helge Øverland <larshelge@gmail.com>
branch nick: dhis2
timestamp: Fri 2014-02-21 14:44:04 +0100
message:
  Support for category option group sets in analytics service
modified:

dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryService.java

dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java

dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataelement/DefaultDataElementCategoryService.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/dataelement/DataElementCategoryService.java'
---
dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryService.java
    2014-02-13 14:24:59 +0000
+++
dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryService.java
    2014-02-21 13:44:04 +0000
@@ -32,6 +32,7 @@
import org.hisp.dhis.hierarchy.HierarchyViolationException;

import java.util.Collection;
+import java.util.List;
import java.util.Map;
import java.util.Set;

@@ -396,7 +397,6 @@
      * DataElementCategoryOptions.
      *
      * @param categoryOptions
- * @return
      */
     DataElementCategoryOptionCombo getDataElementCategoryOptionCombo(
         Collection<DataElementCategoryOption> categoryOptions );
@@ -410,6 +410,12 @@
      */
     DataElementCategoryOptionCombo getDataElementCategoryOptionCombo(
DataElementCategoryOptionCombo categoryOptionCombo );

+ /**
+ * Retrieves a DataElementCategoryOptionCombo.
+ *
+ * @param categoryCombo the DataElementCategoryOptionCombo.
+ * @param categoryOptions the set of DataElementCategoryOptions.
+ */
     DataElementCategoryOptionCombo getDataElementCategoryOptionCombo(
DataElementCategoryCombo categoryCombo,
         Set<DataElementCategoryOption> categoryOptions );

@@ -563,6 +569,8 @@
     CategoryOptionGroup getCategoryOptionGroup( int id );

     CategoryOptionGroup getCategoryOptionGroup( String uid );
+
+ List<CategoryOptionGroup> getCategoryOptionGroupsByUid(
Collection<String> uids );

     void deleteCategoryOptionGroup( CategoryOptionGroup group );

@@ -593,6 +601,8 @@
     CategoryOptionGroupSet getCategoryOptionGroupSet( int id );

     CategoryOptionGroupSet getCategoryOptionGroupSet( String uid );
+
+ List<CategoryOptionGroupSet> getCategoryOptionGroupSetsByUid(
Collection<String> uids );

     void deleteCategoryOptionGroupSet( CategoryOptionGroupSet group );

=== modified file
'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java'
---
dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java
2014-02-04 21:38:37 +0000
+++
dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java
2014-02-21 13:44:04 +0000
@@ -99,6 +99,7 @@
import org.hisp.dhis.common.NameableObject;
import org.hisp.dhis.common.NameableObjectUtils;
import org.hisp.dhis.constant.ConstantService;
+import org.hisp.dhis.dataelement.CategoryOptionGroupSet;
import org.hisp.dhis.dataelement.DataElement;
import org.hisp.dhis.dataelement.DataElementCategory;
import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo;
@@ -964,6 +965,17 @@
             return Arrays.asList( object );
         }

+ CategoryOptionGroupSet cogs =
categoryService.getCategoryOptionGroupSet( dimension );
+
+ if ( cogs != null )
+ {
+ List<NameableObject> cogz = asList(
categoryService.getCategoryOptionGroupsByUid( items ) );
+
+ DimensionalObject object = new BaseDimensionalObject(
dimension, DimensionType.CATEGORYOPTION_GROUPSET, null,
cogs.getDisplayName(), cogz );
+
+ return Arrays.asList( object );
+ }
+
         DataElementCategory dec =
categoryService.getDataElementCategory( dimension );

         if ( dec != null && dec.isDataDimension() )

=== modified file
'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataelement/DefaultDataElementCategoryService.java'
---
dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataelement/DefaultDataElementCategoryService.java
      2014-02-13 14:24:59 +0000
+++
dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataelement/DefaultDataElementCategoryService.java
      2014-02-21 13:44:04 +0000
@@ -793,6 +793,11 @@
         return categoryOptionGroupStore.getByUid( uid );
     }

+ public List<CategoryOptionGroup> getCategoryOptionGroupsByUid(
Collection<String> uids )
+ {
+ return categoryOptionGroupStore.getByUid( uids );
+ }
+
     public void deleteCategoryOptionGroup( CategoryOptionGroup group )
     {
         categoryOptionGroupStore.delete( group );
@@ -874,6 +879,11 @@
     {
         return categoryOptionGroupSetStore.getByUid( uid );
     }
+
+ public List<CategoryOptionGroupSet>
getCategoryOptionGroupSetsByUid( Collection<String> uids )
+ {
+ return categoryOptionGroupSetStore.getByUid( uids );
+ }

     public void deleteCategoryOptionGroupSet( CategoryOptionGroupSet
group )
     {

_______________________________________________
Mailing list: https://launchpad.net/~dhis2-devs
Post to : dhis2-devs@lists.launchpad.net
Unsubscribe : https://launchpad.net/~dhis2-devs
More help : https://help.launchpad.net/ListHelp

_______________________________________________
Mailing list: https://launchpad.net/~dhis2-devs
Post to : dhis2-devs@lists.launchpad.net
Unsubscribe : https://launchpad.net/~dhis2-devs
More help : https://help.launchpad.net/ListHelp