dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #02599
Re: [Branch ~dhis2-devs-core/dhis2/trunk] Rev 873: Changed the category - categoryoption assocication from unidirectional n-m to bidirectional 1-n. ...
OK. already shared ...
2009/10/16 Bob Jolliffe <bobjolliffe@xxxxxxxxx>
> 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
>>
>>
>
References