dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #02598
Re: [Branch ~dhis2-devs-core/dhis2/trunk] Rev 873: Changed the category - categoryoption assocication from unidirectional n-m to bidirectional 1-n. ...
cool. the process is started! I have started writing up in docbook but am
having trouble committing. Must check permissions. Meanwhile i enclose
below the "11 commandments" which reflect the content of our discussion (not
yet completely resolving the problem I raised this morning). Still need to
flesh out with examples and diagrams but please scan through and see that
they are on the right track. Then I will share with dhis2-devs.
Guiding Principles
-
*DataElements* can be assigned to zero or more *Groups*
-
*Indicators* can be assigned to zero or more *Groups*
-
*Groups* can be assigned to *Groupset*
-
*Dimensions* are attributes of a measure (*datavalue* or *indicator value
*) rather than of a *dataelement* or *indicator*
-
All *Datavalues* have at least three compulsory *Dimensions* - orgunit,
period and dataelement. They may have additional *dimensions*.
-
*DataValues* should have a method getDimensions() which returns a a map
of its *dimensions* and *dimension values*, including source, period and
datelement.
-
A set of *Groupsets* may be assigned to a new *Indicator* or *Dataelement
*. Values with this *dataelement* or *indicator dimension* will have
additional *dimensions*; one *dimension* for each *groupset* with a *
dimension* value equal to the corresponding group name.
-
A *DataValue* may have additional dimensions by virtue of its *
CategoryComboOption*. In this case a call to getDimensions() will return
these additional dimensions, one *dimension* for each *category* with
dimension value equal to the corresponding *categoryOption*.
-
The available GroupSet names shall be coincident with the available
Category names and codes. There will be one table in the database for
these..
-
The available Group names shall be coincident with the available
CategoryOptions. There will be one table in the database for these..
-
CategoryOptions shall be grouped by Category. It is however possible that
a CategoryOption may appear in more than one Category
2009/10/16 <noreply@xxxxxxxxxxxxx>
> ------------------------------------------------------------
> revno: 873
> committer: Lars Helge Oeverland larshelge@xxxxxxxxx
> branch nick: trunk
> timestamp: Fri 2009-10-16 14:26:29 +0200
> message:
> Changed the category - categoryoption assocication from unidirectional n-m
> to bidirectional 1-n. Fixed test errors in importexport module related to
> the new sorting of categories. Fixed compilation errors in the ReportExcel
> api.
> modified:
>
> dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryOption.java
>
> dhis-2/dhis-api/src/main/java/org/hisp/dhis/reportexcel/ReportExcelCategory.java
>
> dhis-2/dhis-api/src/main/java/org/hisp/dhis/reportexcel/ReportExcelNormal.java
>
> dhis-2/dhis-api/src/main/java/org/hisp/dhis/reportexcel/ReportExcelOganiztionGroupListing.java
>
> dhis-2/dhis-api/src/main/java/org/hisp/dhis/reportexcel/ReportExcelPeriodColumnListing.java
>
> dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/dataelement/hibernate/DataElementCategory.hbm.xml
>
> dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/dataelement/hibernate/DataElementCategoryCombo.hbm.xml
>
> dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/dataelement/hibernate/DataElementCategoryOption.hbm.xml
>
> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/CategoryCategoryOptionAssociationConverter.java
>
> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/CategoryComboCategoryAssociationConverter.java
>
> dhis-2/dhis-services/dhis-service-jdbc/src/main/java/org/hisp/dhis/jdbc/batchhandler/CategoryCategoryOptionAssociationBatchHandler.java
>
> dhis-2/dhis-services/dhis-service-jdbc/src/main/java/org/hisp/dhis/jdbc/batchhandler/CategoryComboCategoryAssociationBatchHandler.java
>
>
> --
> lp:dhis2
> https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk<https://code.launchpad.net/%7Edhis2-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<https://code.launchpad.net/%7Edhis2-devs-core/dhis2/trunk/+edit-subscription>
> .
>
> === modified file
> 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryOption.java'
> ---
> dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryOption.java
> 2009-10-05 16:07:55 +0000
> +++
> dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryOption.java
> 2009-10-16 12:26:29 +0000
> @@ -27,8 +27,6 @@
> * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> */
>
> -import java.io.Serializable;
> -
> import org.hisp.dhis.common.IdentifiableObject;
>
> /**
> @@ -37,10 +35,10 @@
> */
> public class DataElementCategoryOption
> extends IdentifiableObject
> - implements Serializable
> {
> public static final String DEFAULT_NAME = "default";
>
> + private DataElementCategory category;
>
> //
> -------------------------------------------------------------------------
> // Constructors
> @@ -106,4 +104,18 @@
> {
> return "[" + name + "]";
> }
> +
> + //
> -------------------------------------------------------------------------
> + // Getters and setters
> + //
> -------------------------------------------------------------------------
> +
> + public DataElementCategory getCategory()
> + {
> + return category;
> + }
> +
> + public void setCategory( DataElementCategory category )
> + {
> + this.category = category;
> + }
> }
>
> === modified file
> 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/reportexcel/ReportExcelCategory.java'
> ---
> dhis-2/dhis-api/src/main/java/org/hisp/dhis/reportexcel/ReportExcelCategory.java
> 2009-09-18 04:47:37 +0000
> +++
> dhis-2/dhis-api/src/main/java/org/hisp/dhis/reportexcel/ReportExcelCategory.java
> 2009-10-16 12:26:29 +0000
> @@ -27,10 +27,6 @@
> package org.hisp.dhis.reportexcel;
>
> import java.util.List;
> -import java.util.Set;
> -
> -import org.hisp.dhis.organisationunit.OrganisationUnit;
> -import org.hisp.dhis.user.UserAuthorityGroup;
>
> /**
> * @author Tran Thanh Tri
> @@ -50,14 +46,6 @@
> super();
> }
>
> - public ReportExcelCategory( String name, String excelTemplateFile, int
> periodRow, int periodColumn, int organisationRow,
> - int organisationColumn, Set<ReportExcelItem> reportItems,
> Set<OrganisationUnit> organisationAssocitions,
> - Set<UserAuthorityGroup> userRoles, String group )
> - {
> - super( name, excelTemplateFile, periodRow, periodColumn,
> organisationRow, organisationColumn, reportItems,
> - organisationAssocitions, userRoles, group );
> - }
> -
> //
> -------------------------------------------------------------------------
> // Getters and setters
> //
> -------------------------------------------------------------------------
>
> === modified file
> 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/reportexcel/ReportExcelNormal.java'
> ---
> dhis-2/dhis-api/src/main/java/org/hisp/dhis/reportexcel/ReportExcelNormal.java
> 2009-09-15 13:18:11 +0000
> +++
> dhis-2/dhis-api/src/main/java/org/hisp/dhis/reportexcel/ReportExcelNormal.java
> 2009-10-16 12:26:29 +0000
> @@ -1,9 +1,5 @@
> package org.hisp.dhis.reportexcel;
>
> -import java.util.Set;
> -
> -import org.hisp.dhis.organisationunit.OrganisationUnit;
> -import org.hisp.dhis.user.UserAuthorityGroup;
>
> public class ReportExcelNormal
> extends ReportExcel
> @@ -16,15 +12,7 @@
> {
> super();
> }
> -
> - public ReportExcelNormal( String name, String excelTemplateFile, int
> periodRow, int periodColumn, int organisationRow,
> - int organisationColumn, Set<ReportExcelItem> reportItems,
> Set<OrganisationUnit> organisationAssocitions,
> - Set<UserAuthorityGroup> userRoles, String group )
> - {
> - super( name, excelTemplateFile, periodRow, periodColumn,
> organisationRow, organisationColumn, reportItems,
> - organisationAssocitions, userRoles, group );
> - }
> -
> +
> @Override
> public String getReportType()
> {
>
> === modified file
> 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/reportexcel/ReportExcelOganiztionGroupListing.java'
> ---
> dhis-2/dhis-api/src/main/java/org/hisp/dhis/reportexcel/ReportExcelOganiztionGroupListing.java
> 2009-09-15 13:18:11 +0000
> +++
> dhis-2/dhis-api/src/main/java/org/hisp/dhis/reportexcel/ReportExcelOganiztionGroupListing.java
> 2009-10-16 12:26:29 +0000
> @@ -52,14 +52,6 @@
> super();
> }
>
> - public ReportExcelOganiztionGroupListing( String name, String
> excelTemplateFile, int periodRow, int periodColumn,
> - int organisationRow, int organisationColumn, Set<ReportExcelItem>
> reportItems,
> - Set<OrganisationUnit> organisationAssocitions,
> Set<UserAuthorityGroup> userRoles, String group )
> - {
> - super( name, excelTemplateFile, periodRow, periodColumn,
> organisationRow, organisationColumn, reportItems,
> - organisationAssocitions, userRoles, group );
> - }
> -
> //
> -------------------------------------------------------------------------
> // Getters and setters
> //
> -------------------------------------------------------------------------
>
> === modified file
> 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/reportexcel/ReportExcelPeriodColumnListing.java'
> ---
> dhis-2/dhis-api/src/main/java/org/hisp/dhis/reportexcel/ReportExcelPeriodColumnListing.java
> 2009-09-15 13:18:11 +0000
> +++
> dhis-2/dhis-api/src/main/java/org/hisp/dhis/reportexcel/ReportExcelPeriodColumnListing.java
> 2009-10-16 12:26:29 +0000
> @@ -26,10 +26,6 @@
> */
> package org.hisp.dhis.reportexcel;
>
> -import java.util.Set;
> -
> -import org.hisp.dhis.organisationunit.OrganisationUnit;
> -import org.hisp.dhis.user.UserAuthorityGroup;
>
> /**
> * @author Tran Thanh Tri
> @@ -47,14 +43,6 @@
> super();
> }
>
> - public ReportExcelPeriodColumnListing( String name, String
> excelTemplateFile, int periodRow, int periodColumn,
> - int organisationRow, int organisationColumn, Set<ReportExcelItem>
> reportItems,
> - Set<OrganisationUnit> organisationAssocitions,
> Set<UserAuthorityGroup> userRoles, String group )
> - {
> - super( name, excelTemplateFile, periodRow, periodColumn,
> organisationRow, organisationColumn, reportItems,
> - organisationAssocitions, userRoles, group );
> - }
> -
> @Override
> public String getReportType()
> {
>
> === modified file
> 'dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/dataelement/hibernate/DataElementCategory.hbm.xml'
> ---
> dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/dataelement/hibernate/DataElementCategory.hbm.xml
> 2009-10-13 20:08:57 +0000
> +++
> dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/dataelement/hibernate/DataElementCategory.hbm.xml
> 2009-10-16 12:26:29 +0000
> @@ -22,7 +22,7 @@
> <key column="categoryid"/>
> <list-index column="sort_order"/>
> <many-to-many
> class="org.hisp.dhis.dataelement.DataElementCategoryOption"
> - column="categoryoptionid"
> foreign-key="fk_category_categoryoptionid"/>
> + column="categoryoptionid"
> foreign-key="fk_category_categoryoptionid" unique="true"/>
> </list>
>
> </class>
>
> === modified file
> 'dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/dataelement/hibernate/DataElementCategoryCombo.hbm.xml'
> ---
> dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/dataelement/hibernate/DataElementCategoryCombo.hbm.xml
> 2009-10-15 18:07:59 +0000
> +++
> dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/dataelement/hibernate/DataElementCategoryCombo.hbm.xml
> 2009-10-16 12:26:29 +0000
> @@ -24,7 +24,7 @@
> <set name="optionCombos" table="categorycombos_optioncombos"
> inverse="true" cascade="all">
> <key column="categorycomboid"/>
> <many-to-many
> class="org.hisp.dhis.dataelement.DataElementCategoryOptionCombo"
> - column="categoryoptioncomboid" unique="true"/>
> + column="categoryoptioncomboid"
> foreign-key="fk_categorycombo_categoryoptioncomboid" unique="true"/>
> </set>
>
> </class>
>
> === modified file
> 'dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/dataelement/hibernate/DataElementCategoryOption.hbm.xml'
> ---
> dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/dataelement/hibernate/DataElementCategoryOption.hbm.xml
> 2009-03-03 16:46:36 +0000
> +++
> dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/dataelement/hibernate/DataElementCategoryOption.hbm.xml
> 2009-10-16 12:26:29 +0000
> @@ -11,12 +11,17 @@
> </id>
>
> <property name="name">
> - <column name="name" not-null="true" unique="true" length="160"/>
> + <column name="name" not-null="true" length="160"/>
> </property>
>
> - <property name="shortName" unique="true" length="40"/>
> + <property name="shortName" length="40"/>
>
> <property name="uuid" length="40"/>
> +
> + <join table="categories_categoryoptions" inverse="true">
> + <key column="categoryoptionid"/>
> + <many-to-one column="categoryid" name="category"/>
> + </join>
>
> </class>
> </hibernate-mapping>
>
> === modified file
> 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/CategoryCategoryOptionAssociationConverter.java'
> ---
> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/CategoryCategoryOptionAssociationConverter.java
> 2009-08-12 21:06:37 +0000
> +++
> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/CategoryCategoryOptionAssociationConverter.java
> 2009-10-16 12:26:29 +0000
> @@ -58,6 +58,7 @@
>
> private static final String FIELD_CATEGORY = "category";
> private static final String FIELD_CATEGORY_OPTION = "categoryOption";
> + private static final String FIELD_SORT_ORDER = "sortOrder";
>
> //
> -------------------------------------------------------------------------
> // Properties
> @@ -120,7 +121,9 @@
> for ( DataElementCategory category : categories )
> {
> if ( category.getCategoryOptions() != null )
> - {
> + {
> + int sortOrder = 0;
> +
> for ( DataElementCategoryOption categoryOption :
> category.getCategoryOptions() )
> {
> if ( categoryOptions.contains( categoryOption ) )
> @@ -129,6 +132,7 @@
>
> writer.writeElement( FIELD_CATEGORY,
> String.valueOf( category.getId() ) );
> writer.writeElement( FIELD_CATEGORY_OPTION,
> String.valueOf( categoryOption.getId() ) );
> + writer.writeElement( FIELD_SORT_ORDER,
> String.valueOf( sortOrder++ ) );
>
> writer.closeElement();
> }
> @@ -142,14 +146,18 @@
>
> public void read( XMLReader reader, ImportParams params )
> {
> + int sortOrder = 1;
> +
> while ( reader.moveToStartElement( ELEMENT_NAME, COLLECTION_NAME )
> )
> {
> final Map<String, String> values = reader.readElements(
> ELEMENT_NAME );
>
> - final GroupMemberAssociation association = new
> GroupMemberAssociation( AssociationType.SET );
> + final GroupMemberAssociation association = new
> GroupMemberAssociation( AssociationType.LIST );
>
> association.setGroupId( categoryMapping.get( Integer.parseInt(
> values.get( FIELD_CATEGORY ) ) ) );
> association.setMemberId( categoryOptionMapping.get(
> Integer.parseInt( values.get( FIELD_CATEGORY_OPTION ) ) ) );
> + association.setSortOrder( sortOrder++ ); //TODO Fix
> + //association.setSortOrder( values.containsKey(
> FIELD_SORT_ORDER ) ? categoryMapping.get( Integer.parseInt( values.get(
> FIELD_SORT_ORDER ) ) ) : 0 );
>
> read( association, GroupMemberType.CATEGORY_CATEGORYOPTION,
> params );
> }
>
> === modified file
> 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/CategoryComboCategoryAssociationConverter.java'
> ---
> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/CategoryComboCategoryAssociationConverter.java
> 2009-08-12 21:06:37 +0000
> +++
> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/CategoryComboCategoryAssociationConverter.java
> 2009-10-16 12:26:29 +0000
> @@ -58,6 +58,7 @@
>
> private static final String FIELD_CATEGORY_COMBO = "categoryCombo";
> private static final String FIELD_CATEGORY = "category";
> + private static final String FIELD_SORT_ORDER = "sortOrder";
>
> //
> -------------------------------------------------------------------------
> // Properties
> @@ -122,6 +123,8 @@
> {
> if ( categoryCombo.getCategories() != null )
> {
> + int sortOrder = 0;
> +
> for ( DataElementCategory category :
> categoryCombo.getCategories() )
> {
> if ( categories.contains( category ) )
> @@ -130,6 +133,7 @@
>
> writer.writeElement( FIELD_CATEGORY_COMBO,
> String.valueOf( categoryCombo.getId() ) );
> writer.writeElement( FIELD_CATEGORY,
> String.valueOf( category.getId() ) );
> + writer.writeElement( FIELD_SORT_ORDER,
> String.valueOf( sortOrder++ ) );
>
> writer.closeElement();
> }
> @@ -143,6 +147,8 @@
>
> public void read( XMLReader reader, ImportParams params )
> {
> + int sortOrder = 1;
> +
> while ( reader.moveToStartElement( ELEMENT_NAME, COLLECTION_NAME )
> )
> {
> final Map<String, String> values = reader.readElements(
> ELEMENT_NAME );
> @@ -151,6 +157,8 @@
>
> association.setGroupId( categoryComboMapping.get(
> Integer.parseInt( values.get( FIELD_CATEGORY_COMBO ) ) ) );
> association.setMemberId( categoryMapping.get( Integer.parseInt(
> values.get( FIELD_CATEGORY ) ) ) );
> + association.setSortOrder( sortOrder++ ); //TODO Fix
> + //association.setSortOrder( values.containsKey(
> FIELD_SORT_ORDER ) ? categoryMapping.get( Integer.parseInt( values.get(
> FIELD_SORT_ORDER ) ) ) : 0 );
>
> read( association, GroupMemberType.CATEGORYCOMBO_CATEGORY,
> params );
> }
>
> === modified file
> 'dhis-2/dhis-services/dhis-service-jdbc/src/main/java/org/hisp/dhis/jdbc/batchhandler/CategoryCategoryOptionAssociationBatchHandler.java'
> ---
> dhis-2/dhis-services/dhis-service-jdbc/src/main/java/org/hisp/dhis/jdbc/batchhandler/CategoryCategoryOptionAssociationBatchHandler.java
> 2009-08-12 21:06:37 +0000
> +++
> dhis-2/dhis-services/dhis-service-jdbc/src/main/java/org/hisp/dhis/jdbc/batchhandler/CategoryCategoryOptionAssociationBatchHandler.java
> 2009-10-16 12:26:29 +0000
> @@ -72,11 +72,13 @@
> {
> statementBuilder.setColumn( "categoryid" );
> statementBuilder.setColumn( "categoryoptionid" );
> + statementBuilder.setColumn( "sort_order" );
> }
>
> protected void setValues( GroupMemberAssociation association )
> {
> statementBuilder.setValue( association.getGroupId() );
> statementBuilder.setValue( association.getMemberId() );
> + statementBuilder.setValue( association.getSortOrder() );
> }
> }
>
> === modified file
> 'dhis-2/dhis-services/dhis-service-jdbc/src/main/java/org/hisp/dhis/jdbc/batchhandler/CategoryComboCategoryAssociationBatchHandler.java'
> ---
> dhis-2/dhis-services/dhis-service-jdbc/src/main/java/org/hisp/dhis/jdbc/batchhandler/CategoryComboCategoryAssociationBatchHandler.java
> 2009-08-12 21:06:37 +0000
> +++
> dhis-2/dhis-services/dhis-service-jdbc/src/main/java/org/hisp/dhis/jdbc/batchhandler/CategoryComboCategoryAssociationBatchHandler.java
> 2009-10-16 12:26:29 +0000
> @@ -72,11 +72,13 @@
> {
> statementBuilder.setColumn( "categorycomboid" );
> statementBuilder.setColumn( "categoryid" );
> + statementBuilder.setColumn( "sort_order" );
> }
>
> protected void setValues( GroupMemberAssociation association )
> {
> statementBuilder.setValue( association.getGroupId() );
> statementBuilder.setValue( association.getMemberId() );
> + statementBuilder.setValue( association.getSortOrder() );
> }
> }
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~dhis2-devs<https://launchpad.net/%7Edhis2-devs>
> Post to : dhis2-devs@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~dhis2-devs<https://launchpad.net/%7Edhis2-devs>
> More help : https://help.launchpad.net/ListHelp
>
>
Follow ups
References