OK. already shared ... 2009/10/16 Bob Jolliffe <[email protected]>
> 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

