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 <[email protected]> > ------------------------------------------------------------ > revno: 873 > committer: Lars Helge Oeverland [email protected] > 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 : [email protected] > Unsubscribe : > https://launchpad.net/~dhis2-devs<https://launchpad.net/%7Edhis2-devs> > More help : https://help.launchpad.net/ListHelp > >
_______________________________________________ Mailing list: https://launchpad.net/~dhis2-devs Post to : [email protected] Unsubscribe : https://launchpad.net/~dhis2-devs More help : https://help.launchpad.net/ListHelp

