=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/period/PeriodType.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/period/PeriodType.java 2013-08-23 15:56:19 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/period/PeriodType.java 2013-09-24 07:05:03 +0000 @@ -54,6 +54,9 @@ // Available PeriodTypes // ------------------------------------------------------------------------- + /** + * All period types in descending order according to frequency. + */ public static final List PERIOD_TYPES = new ArrayList() { { === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/resourcetable/ResourceTableService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/resourcetable/ResourceTableService.java 2013-08-23 15:56:19 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/resourcetable/ResourceTableService.java 2013-09-24 07:05:03 +0000 @@ -76,6 +76,11 @@ * Generates a resource table for all data elements. */ void generateDataElementTable(); + + /** + * Generates a resource table for dates and associated periods. + */ + void generateDatePeriodTable(); /** * Generates a resource table for all periods. === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/resourcetable/ResourceTableStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/resourcetable/ResourceTableStore.java 2013-08-23 15:56:19 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/resourcetable/ResourceTableStore.java 2013-09-24 07:05:03 +0000 @@ -46,6 +46,7 @@ final String TABLE_NAME_ORGANISATION_UNIT_STRUCTURE = "_orgunitstructure"; final String TABLE_NAME_DATA_ELEMENT_STRUCTURE = "_dataelementstructure"; final String TABLE_NAME_PERIOD_STRUCTURE = "_periodstructure"; + final String TABLE_NAME_DATE_PERIOD_STRUCTURE = "_dateperiodstructure"; final String TABLE_NAME_DATA_ELEMENT_CATEGORY_OPTION_COMBO = "_dataelementcategoryoptioncombo"; /** @@ -99,6 +100,11 @@ * Creates table. */ void createDataElementStructure(); + + /** + * Creates table. + */ + void createDatePeriodStructure(); /** * Creates table. === modified file 'dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/DefaultResourceTableService.java' --- dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/DefaultResourceTableService.java 2013-09-03 19:11:14 +0000 +++ dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/DefaultResourceTableService.java 2013-09-24 07:05:03 +0000 @@ -30,6 +30,7 @@ import static org.hisp.dhis.resourcetable.ResourceTableStore.TABLE_NAME_CATEGORY_OPTION_COMBO_NAME; import static org.hisp.dhis.resourcetable.ResourceTableStore.TABLE_NAME_DATA_ELEMENT_STRUCTURE; +import static org.hisp.dhis.resourcetable.ResourceTableStore.TABLE_NAME_DATE_PERIOD_STRUCTURE; import static org.hisp.dhis.resourcetable.ResourceTableStore.TABLE_NAME_ORGANISATION_UNIT_STRUCTURE; import static org.hisp.dhis.resourcetable.ResourceTableStore.TABLE_NAME_PERIOD_STRUCTURE; @@ -62,6 +63,8 @@ import org.hisp.dhis.organisationunit.OrganisationUnitGroupService; import org.hisp.dhis.organisationunit.OrganisationUnitGroupSet; import org.hisp.dhis.organisationunit.OrganisationUnitService; +import org.hisp.dhis.period.Cal; +import org.hisp.dhis.period.DailyPeriodType; import org.hisp.dhis.period.Period; import org.hisp.dhis.period.PeriodService; import org.hisp.dhis.period.PeriodType; @@ -71,6 +74,7 @@ import org.hisp.dhis.resourcetable.statement.CreateOrganisationUnitGroupSetTableStatement; import org.hisp.dhis.sqlview.SqlViewService; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.Assert; /** * @author Lars Helge Overland @@ -173,6 +177,9 @@ generatePeriodTable(); log.info( "Period table generated" ); + generateDatePeriodTable(); + log.info( "Date period table generated" ); + generateDataElementCategoryOptionComboTable(); log.info( "Data element category option combo table generated" ); @@ -487,6 +494,48 @@ // PeriodTable // ------------------------------------------------------------------------- + public void generateDatePeriodTable() + { + // --------------------------------------------------------------------- + // Create table + // --------------------------------------------------------------------- + + resourceTableStore.createDatePeriodStructure(); + + // --------------------------------------------------------------------- + // Populate table + // --------------------------------------------------------------------- + + List periodTypes = PeriodType.getAvailablePeriodTypes(); + + List batchArgs = new ArrayList(); + + Date startDate = new Cal( 1970, 1, 1 ).time(); //TODO + Date endDate = new Cal( 2030, 1 , 1 ).time(); + + List days = new DailyPeriodType().generatePeriods( startDate, endDate ); + + for ( Period day : days ) + { + List values = new ArrayList(); + + values.add( day.getStartDate() ); + + for ( PeriodType periodType : periodTypes ) + { + Period period = periodType.createPeriod( day.getStartDate() ); + + Assert.notNull( period ); + + values.add( period.getIsoDate() ); + } + + batchArgs.add( values.toArray() ); + } + + resourceTableStore.batchUpdate( PeriodType.PERIOD_TYPES.size() + 1, TABLE_NAME_DATE_PERIOD_STRUCTURE, batchArgs ); + } + public void generatePeriodTable() { // --------------------------------------------------------------------- === modified file 'dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/jdbc/JdbcResourceTableStore.java' --- dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/jdbc/JdbcResourceTableStore.java 2013-09-01 18:30:05 +0000 +++ dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/jdbc/JdbcResourceTableStore.java 2013-09-24 07:05:03 +0000 @@ -259,6 +259,31 @@ // PeriodTable // ------------------------------------------------------------------------- + public void createDatePeriodStructure() + { + try + { + jdbcTemplate.execute( "DROP TABLE IF EXISTS " + TABLE_NAME_DATE_PERIOD_STRUCTURE ); + } + catch ( BadSqlGrammarException ex ) + { + // Do nothing, table does not exist + } + + String sql = "CREATE TABLE " + TABLE_NAME_DATE_PERIOD_STRUCTURE + " (dateperiod DATE NOT NULL PRIMARY KEY"; + + for ( PeriodType periodType : PeriodType.PERIOD_TYPES ) + { + sql += ", " + periodType.getName().toLowerCase() + " VARCHAR(10)"; + } + + sql += ")"; + + log.info( "Create date period structure SQL: " + sql ); + + jdbcTemplate.execute( sql ); + } + public void createPeriodStructure() { try === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/org/hisp/dhis/dataadmin/i18n_module.properties' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/org/hisp/dhis/dataadmin/i18n_module.properties 2013-07-22 11:47:18 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/org/hisp/dhis/dataadmin/i18n_module.properties 2013-09-24 07:05:03 +0000 @@ -321,4 +321,5 @@ done=Done period_structure=Period structure data_element_category_option_combo=Data element category option combinations -update_category_option_combos=Update category option combinations \ No newline at end of file +update_category_option_combos=Update category option combinations +date_period_structure=Date period structure \ No newline at end of file === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm 2013-09-03 19:11:14 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm 2013-09-24 07:05:03 +0000 @@ -29,6 +29,7 @@
  • $i18n.getString( "data_element_category_option_combo_name" ) (_categoryoptioncomboname)
  • $i18n.getString( "data_element_structure" ) (_dataelementstructure)
  • $i18n.getString( "period_structure" ) (_periodstructure)
  • +
  • $i18n.getString( "date_period_structure" ) (_dateperiodstructure)
  • $i18n.getString( "data_element_category_option_combo" ) (_dataelementcategoryoptioncombo)