← Back to team overview

dhis2-devs team mailing list archive

Re: [Branch ~dhis2-devs-core/dhis2/trunk] Rev 1739: Fixed bug <Data browser does not use period names>

 

Reverted reversion to Rev 1738

On Tue, Apr 6, 2010 at 5:09 PM, <noreply@xxxxxxxxxxxxx> wrote:

> ------------------------------------------------------------
> revno: 1739
> committer: hieu <hieu.hispvietnam@xxxxxxxxx>
> branch nick: trunk
> timestamp: Tue 2010-04-06 17:05:28 +0700
> message:
>  Fixed bug <Data browser does not use period names>
>  - Added new resource bundle key 'format.date.custome' which is used for
> defined the format date in data browser output.
>  Fixed bug <Data browser drilldown>
>  - Working on process and still have a long discussion with Jason about
> re-solving this one
> modified:
>  dhis-2/dhis-api/src/main/java/org/hisp/dhis/i18n/I18nFormat.java
>
>  dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/databrowser/jdbc/StatementManagerDataBrowserStore.java
>
>  dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/DateUtils.java
>  dhis-2/dhis-web/dhis-web-commons/src/main/resources/i18n_global.properties
>
>  dhis-2/dhis-web/dhis-web-commons/src/main/resources/i18n_global_vi_VN.properties
>
>  dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/org/hisp/dhis/reportexcel/i18n_module.properties
>
>  dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/org/hisp/dhis/reportexcel/i18n_module_vi_VN.properties
>
>  dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/excelTemplateList.vm
>
>  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/databrowser/SearchAction.java
>
>  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserResult.vm
>
>  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/resources/org/hisp/dhis/dd/i18n_module.properties
>
>
> --
> 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/i18n/I18nFormat.java'
> --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/i18n/I18nFormat.java
>  2009-03-03 16:46:36 +0000
> +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/i18n/I18nFormat.java
>  2010-04-06 10:05:28 +0000
> @@ -51,13 +51,13 @@
>     }
>
>     /**
> -     * Constructor should only be used for testing purposes. Use
> +     * Constructor should only be used for testing purposes. Use
>      * I18nManager.getI18nFormat for normal use.
>      */
>     public I18nFormat()
> -    {
> +    {
>     }
> -
> +
>     //
> -------------------------------------------------------------------------
>     // Init
>     //
> -------------------------------------------------------------------------
> @@ -141,6 +141,16 @@
>         return commonFormatting( date, resourceBundle.getString(
> "format.date" ) );
>     }
>
> +    public String formatDateByCustome( Date date )
> +    {
> +        if ( date == null )
> +        {
> +            return null;
> +        }
> +
> +        return commonFormatting( date, resourceBundle.getString(
> "format.date.custome" ) );
> +    }
> +
>     public String formatTime( Date date )
>     {
>         if ( date == null )
>
> === modified file
> 'dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/databrowser/jdbc/StatementManagerDataBrowserStore.java'
> ---
> dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/databrowser/jdbc/StatementManagerDataBrowserStore.java
> 2009-08-24 13:55:25 +0000
> +++
> dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/databrowser/jdbc/StatementManagerDataBrowserStore.java
> 2010-04-06 10:05:28 +0000
> @@ -15,6 +15,8 @@
>  /**
>  * @author joakibj, martinwa, briane, eivinhb
>  * @version $Id$
> + * @modifier Dang Duy Hieu
> + * @since 2010-04-06
>  */
>  public class StatementManagerDataBrowserStore
>     implements DataBrowserStore
> @@ -22,7 +24,7 @@
>     //
> -------------------------------------------------------------------------
>     // Dependencies
>     //
> -------------------------------------------------------------------------
> -
> +
>     private StatementManager statementManager;
>
>     public void setStatementManager( StatementManager statementManager )
> @@ -33,7 +35,7 @@
>     //
> -------------------------------------------------------------------------
>     // DataBrowserStore implementation
>     //
> -------------------------------------------------------------------------
> -
> +
>     public DataBrowserTable getDataSetsBetweenPeriods( List<Integer>
> betweenPeriodIds )
>     {
>         StatementHolder holder = statementManager.getHolder();
> @@ -46,13 +48,13 @@
>         try
>         {
>             StringBuffer sqlsb = new StringBuffer();
> -            sqlsb.append( "SELECT d.datasetid AS ID, d.name AS DataSet,
> count(*) AS Count " );
> +            sqlsb.append( "(SELECT d.datasetid AS ID, d.name AS DataSet,
> count(*) AS Counts_of_aggregated_values " );
>             sqlsb.append( "FROM datavalue dv " );
>             sqlsb.append( "JOIN datasetmembers dsm ON (dv.dataelementid =
> dsm.dataelementid) " );
>             sqlsb.append( "JOIN dataset d ON (d.datasetid = dsm.datasetid)
> " );
>             sqlsb.append( "WHERE dv.periodid IN " + splitListHelper(
> betweenPeriodIds ) + " " );
>             sqlsb.append( "GROUP BY d.datasetid, d.name " );
> -            sqlsb.append( "ORDER BY Count DESC" );
> +            sqlsb.append( "ORDER BY Counts_of_aggregated_values DESC)" );
>
>             String sql = sqlsb.toString();
>
> @@ -78,9 +80,9 @@
>         {
>             holder.close();
>         }
> -
> +
>         return table;
> -    }
> +    }
>
>     public DataBrowserTable getDataElementGroupsBetweenPeriods(
> List<Integer> betweenPeriodIds )
>     {
> @@ -91,13 +93,14 @@
>         try
>         {
>             StringBuffer sqlsb = new StringBuffer();
> -            sqlsb.append( "SELECT d.dataelementgroupid AS ID, d.name AS
> DataElementGroup, count(*) AS Count " );
> +            sqlsb
> +                .append( "(SELECT d.dataelementgroupid AS ID, d.name AS
> DataElementGroup, count(*) AS Counts_of_aggregated_values " );
>             sqlsb.append( "FROM datavalue dv " );
> -            sqlsb
> -                .append( "JOIN dataelementgroupmembers degm ON
> (dv.dataelementid = degm.dataelementid) JOIN dataelementgroup d ON
> (d.dataelementgroupid = degm.dataelementgroupid) " );
> +            sqlsb.append( "JOIN dataelementgroupmembers degm ON
> (dv.dataelementid = degm.dataelementid)" );
> +            sqlsb.append( "JOIN dataelementgroup d ON
> (d.dataelementgroupid = degm.dataelementgroupid) " );
>             sqlsb.append( "WHERE dv.periodid IN " + splitListHelper(
> betweenPeriodIds ) + " " );
>             sqlsb.append( "GROUP BY d.dataelementgroupid, d.name " );
> -            sqlsb.append( "ORDER BY Count DESC;" );
> +            sqlsb.append( "ORDER BY Count DESC)" );
>
>             String sql = sqlsb.toString();
>
> @@ -122,7 +125,7 @@
>         {
>             holder.close();
>         }
> -
> +
>         return table;
>     }
>
> @@ -132,18 +135,18 @@
>
>         DataBrowserTable table = null;
>         String sql = "";
> -
> +
>         try
>         {
>             StringBuffer sqlsb = new StringBuffer();
>
> -            sqlsb.append( "SELECT oug.orgunitgroupid, oug.name, Count(*)
> as ant " );
> -            sqlsb.append( "FROM orgunitgroup oug  " );
> -            sqlsb.append( "Join orgunitgroupmembers ougm ON
> oug.orgunitgroupid = ougm.orgunitgroupid " );
> -            sqlsb.append( "Join organisationunit ou ON
>  ougm.organisationunitid = ou.organisationunitid " );
> -            sqlsb.append( "Join datavalue dv ON ou.organisationunitid =
> dv.sourceid " );
> +            sqlsb.append( "(SELECT oug.orgunitgroupid, oug.name, Count(*)
> as Counts_of_aggregated_values " );
> +            sqlsb.append( "FROM orgunitgroup oug " );
> +            sqlsb.append( "JOIN orgunitgroupmembers ougm ON
> oug.orgunitgroupid = ougm.orgunitgroupid " );
> +            sqlsb.append( "JOIN organisationunit ou ON
>  ougm.organisationunitid = ou.organisationunitid " );
> +            sqlsb.append( "JOIN datavalue dv ON ou.organisationunitid =
> dv.sourceid " );
>             sqlsb.append( "WHERE dv.periodid IN " + splitListHelper(
> betweenPeriodIds ) + " " );
> -            sqlsb.append( "GROUP BY oug.orgunitgroupid, oug.name ORDER BY
> ant desc " );
> +            sqlsb.append( "GROUP BY oug.orgunitgroupid, oug.name ORDER BY
> Counts_of_aggregated_values DESC) " );
>
>             sql = sqlsb.toString();
>
> @@ -168,7 +171,7 @@
>         {
>             holder.close();
>         }
> -
> +
>         return table;
>     }
>
> @@ -180,13 +183,13 @@
>         try
>         {
>             StringBuffer sqlsb = new StringBuffer();
> -            sqlsb.append( "SELECT de.dataelementid, de.name AS Name " );
> +            sqlsb.append( "(SELECT de.dataelementid, de.name AS Name " );
>             sqlsb.append( "FROM dataelement de JOIN datavalue dv ON
> (de.dataelementid = dv.dataelementid) " );
>             sqlsb.append( "JOIN datasetmembers dsm ON (de.dataelementid =
> dsm.dataelementid) " );
> -            sqlsb.append( "WHERE dsm.datasetid = " + dataSetId + " AND
> dv.periodid IN "
> -                + splitListHelper( betweenPeriods ) + " " );
> +            sqlsb.append( "WHERE dsm.datasetid = '" + dataSetId + "' " );
> +            sqlsb.append( "AND dv.periodid IN " + splitListHelper(
> betweenPeriods ) + " " );
>             sqlsb.append( "GROUP BY de.dataelementid, de.name " );
> -            sqlsb.append( "ORDER BY de.name " );
> +            sqlsb.append( "ORDER BY de.name) " );
>
>             String sql = sqlsb.toString();
>
> @@ -215,20 +218,20 @@
>         StatementHolder holder = statementManager.getHolder();
>
>         StringBuffer sqlsb = new StringBuffer();
> -        String sql = "";
> -
> +        String sql = "";
> +
>         try
>         {
> -            sqlsb.append( "SELECT deg.dataelementgroupid, deg.name AS
> DataElementGroup " );
> +            sqlsb.append( "(SELECT deg.dataelementgroupid, deg.name AS
> DataElementGroup " );
>             sqlsb.append( "FROM dataelementgroup deg " );
> -            sqlsb.append( "Join dataelementgroupmembers degm ON
> deg.dataelementgroupid = degm.dataelementgroupid " );
> -            sqlsb.append( "Join datavalue dv ON degm.dataelementid =
> dv.dataelementid " );
> -            sqlsb.append( "Join organisationunit ou ON dv.sourceid =
> ou.organisationunitid " );
> -            sqlsb.append( "Join orgunitgroupmembers ougm ON
> ou.organisationunitid = ougm.organisationunitid " );
> -            sqlsb.append( "WHERE ougm.orgunitgroupid =  '" +
> orgUnitGroupId + "' AND dv.periodid IN "
> -                + splitListHelper( betweenPeriods ) + " " );
> +            sqlsb.append( "JOIN dataelementgroupmembers degm ON
> deg.dataelementgroupid = degm.dataelementgroupid " );
> +            sqlsb.append( "JOIN datavalue dv ON degm.dataelementid =
> dv.dataelementid " );
> +            sqlsb.append( "JOIN organisationunit ou ON dv.sourceid =
> ou.organisationunitid " );
> +            sqlsb.append( "JOIN orgunitgroupmembers ougm ON
> ou.organisationunitid = ougm.organisationunitid " );
> +            sqlsb.append( "WHERE ougm.orgunitgroupid = '" + orgUnitGroupId
> + "' " );
> +            sqlsb.append( "AND dv.periodid IN " + splitListHelper(
> betweenPeriods ) + " " );
>             sqlsb.append( "GROUP BY deg.dataelementgroupid, deg.name " );
> -            sqlsb.append( "ORDER BY deg.name ASC " );
> +            sqlsb.append( "ORDER BY deg.name ASC) " );
>
>             sql = sqlsb.toString();
>
> @@ -259,13 +262,13 @@
>         try
>         {
>             StringBuffer sqlsb = new StringBuffer();
> -            sqlsb.append( "SELECT de.dataelementid, de.name AS Name " );
> +            sqlsb.append( "(SELECT de.dataelementid, de.name AS Name " );
>             sqlsb.append( "FROM dataelement de JOIN datavalue dv ON
> (de.dataelementid = dv.dataelementid) " );
>             sqlsb.append( "JOIN dataelementgroupmembers degm ON
> (de.dataelementid = degm.dataelementid) " );
> -            sqlsb.append( "WHERE degm.dataelementgroupid = " +
> dataElementGroupId + " AND dv.periodid IN "
> -                + splitListHelper( betweenPeriods ) + " " );
> +            sqlsb.append( "WHERE degm.dataelementgroupid = '" +
> dataElementGroupId + "' " );
> +            sqlsb.append( "AND dv.periodid IN " + splitListHelper(
> betweenPeriods ) + " " );
>             sqlsb.append( "GROUP BY de.dataelementid, de.name " );
> -            sqlsb.append( "ORDER BY de.name " );
> +            sqlsb.append( "ORDER BY de.name) " );
>
>             String sql = sqlsb.toString();
>
> @@ -289,6 +292,7 @@
>         }
>     }
>
> +    // THE PROBLEM IS HERE >>> STILL WORKING
>     public void setStructureForOrgUnitBetweenPeriods( DataBrowserTable
> table, Integer orgUnitParent,
>         List<Integer> betweenPeriods )
>     {
> @@ -297,9 +301,13 @@
>         try
>         {
>             StringBuffer sqlsb = new StringBuffer();
> -            sqlsb.append( "SELECT o.organisationunitid, o.name AS
> OrganisationUnit " );
> +            sqlsb.append( "(SELECT o.organisationunitid, o.name AS
> OrganisationUnit " );
>             sqlsb.append( "FROM organisationunit o " );
> -            sqlsb.append( "WHERE o.parentid = " + orgUnitParent + "" );
> +            sqlsb.append( "JOIN datavalue as dv ON (o.organisationunitid =
> dv.sourceid) " );
> +            sqlsb.append( "WHERE o.parentid = '" + orgUnitParent + "' " );
> +            sqlsb.append( "AND dv.periodid IN " + splitListHelper(
> betweenPeriods ) + " " );
> +            sqlsb.append( "GROUP BY o.organisationunitid, o.name " );
> +            sqlsb.append( "ORDER BY o.name)" );
>
>             String sql = sqlsb.toString();
>
> @@ -324,21 +332,26 @@
>         }
>     }
>
> -    public void setDataElementStructureForOrgUnitBetweenPeriods(
> DataBrowserTable table, Integer orgUnitId, List<Integer> betweenPeriods)
> +    public void setDataElementStructureForOrgUnitBetweenPeriods(
> DataBrowserTable table, Integer orgUnitId,
> +        List<Integer> betweenPeriods )
>     {
> +        // Please do not delete this testing ...
> +        System.out.println( "\n\n\n TESTING IN
> [setDataElementStructureForOrgUnitBetweenPeriods] :: " );
> +
>         StatementHolder holder = statementManager.getHolder();
> -
> +
>         try
>         {
>             StringBuffer sqlsb = new StringBuffer();
> -            sqlsb.append( "SELECT de.dataelementid, de.name AS
> DataElementGroup " );
> +            sqlsb.append( "(SELECT de.dataelementid, de.name AS
> DataElement " );
>             sqlsb.append( "FROM dataelement AS de " );
> -            sqlsb.append( "Inner Join datavalue AS dv ON (de.dataelementid
> = dv.dataelementid) " );
> -            sqlsb.append( "Inner Join datasetmembers AS dsm ON
> (de.dataelementid = dsm.dataelementid) " );
> -            sqlsb.append( "Inner Join organisationunit ON dv.sourceid =
> organisationunit.organisationunitid " );
> -            sqlsb.append( "WHERE organisationunit.organisationunitid = " +
> orgUnitId + " " );
> +            sqlsb.append( "INNER JOIN datavalue AS dv ON (de.dataelementid
> = dv.dataelementid) " );
> +            sqlsb.append( "INNER JOIN datasetmembers AS dsm ON
> (de.dataelementid = dsm.dataelementid) " );
> +            sqlsb.append( "INNER JOIN organisationunit AS o ON
> (dv.sourceid = o.organisationunitid) " );
> +            sqlsb.append( "WHERE o.organisationunitid = '" + orgUnitId +
> "' " );
> +            sqlsb.append( "AND dv.periodid IN " + splitListHelper(
> betweenPeriods ) + " " );
>             sqlsb.append( "GROUP BY de.dataelementid, de.name " );
> -            sqlsb.append( "ORDER BY de.name " );
> +            sqlsb.append( "ORDER BY de.name) " );
>
>             String sql = sqlsb.toString();
>
> @@ -348,8 +361,12 @@
>             TimeUtils.stop();
>
>             table.incrementQueryCount();
> -            table.addColumnName("DataElement");
> +            table.addColumnName( "DataElement" );
>             table.createStructure( resultSet );
> +
> +            // TEST TABLE
> +            // Please do not delete this testing ...
> +            System.out.println( "\nTABLE For OrgUnit option:= " + table );
>         }
>         catch ( SQLException e )
>         {
> @@ -360,11 +377,12 @@
>             holder.close();
>         }
>     }
> -
> -    public Integer setCountDataElementsForDataSetBetweenPeriods(
> DataBrowserTable table, Integer dataSetId, List<Integer> betweenPeriodIds)
> +
> +    public Integer setCountDataElementsForDataSetBetweenPeriods(
> DataBrowserTable table, Integer dataSetId,
> +        List<Integer> betweenPeriodIds )
>     {
>         StatementHolder holder = statementManager.getHolder();
> -
> +
>         // Here we uses a for loop to create one big sql statement using
> UNION.
>         // This is done because the count and GROUP BY parts of this query
> can't
>         // be done in another way. The alternative to this method is to
> actually
> @@ -375,23 +393,24 @@
>         StringBuffer sqlsb = new StringBuffer();
>
>         int i = 0;
> -        for ( Integer periodid : betweenPeriodIds )
> +        for ( Integer periodId : betweenPeriodIds )
>         {
>             i++;
>
> -            sqlsb.append( "(SELECT de.dataelementid, de.name AS
> DataElement, count(*) AS Count, p.periodid AS PeriodId, p.startDate AS
> ColumnHeader " );
> +            sqlsb
> +                .append( "(SELECT de.dataelementid, de.name AS
> DataElement, Count(dv.value) AS Counts_of_aggregated_values, p.periodid AS
> PeriodId, p.startDate AS ColumnHeader " );
>             sqlsb.append( "FROM dataelement de JOIN datavalue dv ON
> (de.dataelementid = dv.dataelementid) " );
>             sqlsb.append( "JOIN datasetmembers dsm ON (de.dataelementid =
> dsm.dataelementid) " );
>             sqlsb.append( "JOIN period p ON (dv.periodid = p.periodid) " );
> -            sqlsb.append( "WHERE dsm.datasetid = " + dataSetId + " AND
> dv.periodid = " + periodid + " " );
> -            sqlsb.append( "GROUP BY de.dataelementid, de.name,
> p.periodid, p.startDate )" );
> +            sqlsb.append( "WHERE dsm.datasetid = '" + dataSetId + "' AND
> dv.periodid = '" + periodId + "' " );
> +            sqlsb.append( "GROUP BY de.dataelementid, de.name,
> p.periodid, p.startDate)" );
>
>             if ( i == betweenPeriodIds.size() )
> -               sqlsb.append( "ORDER BY PeriodId ");
> +                sqlsb.append( "ORDER BY PeriodId " );
>             else
> -               sqlsb.append( " UNION ");
> +                sqlsb.append( " UNION " );
>         }
> -
> +
>         try
>         {
>             TimeUtils.start();
> @@ -401,7 +420,7 @@
>
>             table.incrementQueryCount();
>
> -            numResults = table.addColumnToAllRows( resultSet );
> +            numResults = table.addColumnToAllRows( resultSet );
>         }
>         catch ( SQLException e )
>         {
> @@ -427,16 +446,16 @@
>         for ( Integer periodid : betweenPeriodIds )
>         {
>             i++;
> -
> +
>             sqlsb
> -                .append( "(SELECT de.dataelementid, de.name AS
> DataElement, count(*) AS Count, p.periodid AS PeriodId, p.startDate AS
> ColumnHeader " );
> +                .append( "(SELECT de.dataelementid, de.name AS
> DataElement, count(dv.value) AS Counts_of_aggregated_values, p.periodid AS
> PeriodId, p.startDate AS ColumnHeader " );
>             sqlsb.append( "FROM dataelement de JOIN datavalue dv ON
> (de.dataelementid = dv.dataelementid) " );
>             sqlsb.append( "JOIN dataelementgroupmembers degm ON
> (de.dataelementid = degm.dataelementid) " );
>             sqlsb.append( "JOIN period p ON (dv.periodid = p.periodid) " );
> -            sqlsb.append( "WHERE degm.dataelementgroupid = " +
> dataElementGroupId + " AND dv.periodid = " + periodid
> -                + " " );
> +            sqlsb.append( "WHERE degm.dataelementgroupid = '" +
> dataElementGroupId + "' " );
> +            sqlsb.append( "AND dv.periodid = '" + periodid + "' " );
>             sqlsb.append( "GROUP BY de.dataelementid, de.name, p.periodid,
> p.startDate) " );
> -
> +
>             if ( i == betweenPeriodIds.size() )
>                 sqlsb.append( "ORDER BY PeriodId " );
>             else
> @@ -465,7 +484,7 @@
>
>         return numResults;
>     }
> -
> +
>     public Integer setCountDataElementGroupsForOrgUnitGroupBetweenPeriods(
> DataBrowserTable table,
>         Integer orgUnitGroupId, List<Integer> betweenPeriodIds )
>     {
> @@ -473,21 +492,21 @@
>
>         Integer numResults = 0;
>         StringBuffer sqlsb = new StringBuffer();
> -
> +
>         int i = 0;
>         for ( Integer periodid : betweenPeriodIds )
>         {
>             i++;
>
>             sqlsb
> -                .append( " (SELECT deg.dataelementgroupid, deg.name,
> Count(*) AS Count, p.periodid AS PeriodId, p.startdate AS ColumnHeader " );
> +                .append( " (SELECT deg.dataelementgroupid, deg.name,
> Count(dv.value) AS Counts_of_aggregated_values, p.periodid AS PeriodId,
> p.startdate AS ColumnHeader " );
>             sqlsb.append( "FROM dataelementgroup AS deg " );
>             sqlsb
> -                .append( "Inner Join dataelementgroupmembers AS degm ON
> deg.dataelementgroupid = degm.dataelementgroupid " );
> -            sqlsb.append( "Inner Join datavalue AS dv ON
> degm.dataelementid = dv.dataelementid " );
> -            sqlsb.append( "Inner Join period AS p ON dv.periodid =
> p.periodid " );
> -            sqlsb.append( "Inner Join organisationunit AS ou ON
> dv.sourceid = ou.organisationunitid " );
> -            sqlsb.append( "Inner Join orgunitgroupmembers AS ougm ON
> ou.organisationunitid = ougm.organisationunitid " );
> +                .append( "INNER JOIN dataelementgroupmembers AS degm ON
> deg.dataelementgroupid = degm.dataelementgroupid " );
> +            sqlsb.append( "INNER JOIN datavalue AS dv ON
> degm.dataelementid = dv.dataelementid " );
> +            sqlsb.append( "INNER JOIN period AS p ON dv.periodid =
> p.periodid " );
> +            sqlsb.append( "INNER JOIN organisationunit AS ou ON
> dv.sourceid = ou.organisationunitid " );
> +            sqlsb.append( "INNER JOIN orgunitgroupmembers AS ougm ON
> ou.organisationunitid = ougm.organisationunitid " );
>             sqlsb
>                 .append( "WHERE p.periodid =  '" + periodid + "' AND
> ougm.orgunitgroupid =  '" + orgUnitGroupId + "' " );
>             sqlsb.append( "GROUP BY deg.dataelementgroupid,deg.name,p.periodid,p.startdate)
> " );
> @@ -534,14 +553,14 @@
>         for ( Integer periodid : betweenPeriodIds )
>         {
>             i++;
> -
> +
>             sqlsb
> -                .append( "(SELECT o.organisationunitid, o.name AS
> OrganisationUnit, count(*) AS Count, p.periodid AS PeriodId, p.startDate AS
> ColumnHeader " );
> +                .append( "(SELECT o.organisationunitid, o.name AS
> OrganisationUnit, Count(dv.value) AS Counts_of_aggregated_values, p.periodid
> AS PeriodId, p.startDate AS ColumnHeader " );
>             sqlsb.append( "FROM organisationunit o JOIN datavalue dv ON
> (o.organisationunitid = dv.sourceid) " );
>             sqlsb.append( "JOIN period p ON (dv.periodid = p.periodid) " );
> -            sqlsb.append( "WHERE o.parentid = " + orgUnitParent + " AND
> dv.periodid = " + periodid + " " );
> -            sqlsb.append( "GROUP BY o.organisationunitid, o.name,
> p.periodid, p.startDate ) " );
> -
> +            sqlsb.append( "WHERE o.parentid = '" + orgUnitParent + "' AND
> dv.periodid = '" + periodid + "' " );
> +            sqlsb.append( "GROUP BY o.organisationunitid, o.name,
> p.periodid, p.startDate) " );
> +
>             if ( i == betweenPeriodIds.size() )
>                 sqlsb.append( "ORDER BY PeriodId " );
>             else
> @@ -570,32 +589,35 @@
>         }
>
>         return numResults;
> -    }
> +    }
>
>     public Integer setCountDataElementsForOrgUnitBetweenPeriods(
> DataBrowserTable table, Integer orgUnitId,
>         List<Integer> betweenPeriodIds )
>     {
> +        // Please do not delete this testing ...
> +        System.out.println( "\n\n\n TESTING IN
> [setCountDataElementsForOrgUnitBetweenPeriods] :: " );
> +
>         StatementHolder holder = statementManager.getHolder();
>
>         Integer numResults = 0;
>         StringBuffer sqlsb = new StringBuffer();
>
>         int i = 0;
> -        for ( Integer periodid : betweenPeriodIds )
> +        for ( Integer periodId : betweenPeriodIds )
>         {
>             i++;
> -
> +
>             sqlsb
> -                .append( "(SELECT de.dataelementid, de.name AS
> DataElementGroup, count(*) AS Count, p.periodid AS PeriodId, p.startDate AS
> ColumnHeader " );
> +                .append( "(SELECT de.dataelementid, de.name AS
> DataElementGroup, Count(dv.value) AS Counts_of_aggregated_values, p.periodid
> AS PeriodId, p.startDate AS ColumnHeader " );
>             sqlsb.append( "FROM dataelement AS de " );
> -            sqlsb.append( "Inner Join datavalue AS dv ON (de.dataelementid
> = dv.dataelementid) " );
> -            sqlsb.append( "Inner Join datasetmembers AS dsm ON
> (de.dataelementid = dsm.dataelementid) " );
> -            sqlsb.append( "Inner Join organisationunit ON dv.sourceid =
> organisationunit.organisationunitid " );
> +            sqlsb.append( "INNER JOIN datavalue AS dv ON (de.dataelementid
> = dv.dataelementid) " );
> +            sqlsb.append( "INNER JOIN datasetmembers AS dsm ON
> (de.dataelementid = dsm.dataelementid) " );
> +            sqlsb.append( "INNER JOIN organisationunit As o ON
> (dv.sourceid = o.organisationunitid) " );
>             sqlsb.append( "JOIN period p ON (dv.periodid = p.periodid) " );
> -            sqlsb.append( "WHERE organisationunit.organisationunitid = " +
> orgUnitId + " AND " );
> -            sqlsb.append( "dv.periodid = " + periodid + " " );
> -            sqlsb.append( "GROUP BY de.dataelementid, de.name,
> p.periodid, p.startDate ) " );
> -
> +            sqlsb.append( "WHERE o.organisationunitid = '" + orgUnitId +
> "' " );
> +            sqlsb.append( "AND dv.periodid = '" + periodId + "' " );
> +            sqlsb.append( "GROUP BY de.dataelementid, de.name,
> p.periodid, p.startDate)" );
> +
>             if ( i == betweenPeriodIds.size() )
>                 sqlsb.append( "ORDER BY PeriodId " );
>             else
> @@ -623,18 +645,18 @@
>         }
>
>         return numResults;
> -    }
> -
> +    }
> +
>     //
> -------------------------------------------------------------------------
>     // Supportive methods
>     //
> -------------------------------------------------------------------------
>
>     /**
> -     * Splits a list of integers by by comma. Use this method if you have
> a
> -     * list that will be used in f.ins. a WHERE xxx IN (list) clause in
> SQL.
> +     * Splits a list of integers by by comma. Use this method if you have
> a list
> +     * that will be used in f.ins. a WHERE xxx IN (list) clause in SQL.
>      *
> -     * @param List<Integer> list of Integers
> -     * @return the list as a string splitted by a comma.
> +     * @param List<Integer> list of Integers
> +     * @return the list as a string splitted by a comma.
>      */
>     private String splitListHelper( List<Integer> list )
>     {
>
> === modified file
> 'dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/DateUtils.java'
> ---
> dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/DateUtils.java
>      2010-02-08 10:56:08 +0000
> +++
> dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/DateUtils.java
>      2010-04-06 10:05:28 +0000
> @@ -33,6 +33,7 @@
>  import java.util.Date;
>
>  import org.apache.commons.validator.DateValidator;
> +import org.hisp.dhis.i18n.I18nFormat;
>  import org.joda.time.DateTime;
>  import org.joda.time.Days;
>
> @@ -351,6 +352,35 @@
>     }
>
>     /**
> +     * This method converts a string from the date format "yyyy-MM-dd" to
> +     * "MMM-yy" of any format which belongs to each locale.
> +     *
> +     * @param date is the string to be converted.
> +     * @return converted string if the date is valid, else the original
> string
> +     *         is returned
> +     */
> +    public static String convertDate( String dateString, I18nFormat
> i18nFormat )
> +    {
> +        if ( !dateIsValid( dateString ) )
> +        {
> +            return dateString;
> +        }
> +
> +        SimpleDateFormat dateFormat = new SimpleDateFormat(
> DEFAULT_DATE_FORMAT );
> +
> +        try
> +        {
> +            Date date = dateFormat.parse( dateString );
> +
> +            return i18nFormat.formatDateByCustome( date );
> +        }
> +        catch ( ParseException pe )
> +        {
> +            throw new RuntimeException( "Date string could not be parsed:
> " + dateString );
> +        }
> +    }
> +
> +    /**
>      * This method adds days to a date
>      *
>      * @param date the date.
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-commons/src/main/resources/i18n_global.properties'
> ---
> dhis-2/dhis-web/dhis-web-commons/src/main/resources/i18n_global.properties
>  2010-04-01 09:31:33 +0000
> +++
> dhis-2/dhis-web/dhis-web-commons/src/main/resources/i18n_global.properties
>  2010-04-06 10:05:28 +0000
> @@ -1,13 +1,14 @@
>
>  #-- Date Formats
> --------------------------------------------------------------#
>
> -format.date = yyyy-MM-dd
> -format.date.label = yyyy-mm-dd
> -format.time = HH:mm
> -format.time.label = hh:mm
> -format.datetime = yyyy-MM-dd HH:mm
> -format.datetime.label = yyyy-mm-dd hh:mm
> -format.date.label.jquery = yy-mm-dd
> +format.date                                    = yyyy-MM-dd
> +format.date.label                      = yyyy-mm-dd
> +format.date.custome            = MMM-yy
> +format.time                            = HH:mm
> +format.time.label                      = hh:mm
> +format.datetime                        = yyyy-MM-dd HH:mm
> +format.datetime.label          = yyyy-mm-dd hh:mm
> +format.date.label.jquery       = yy-mm-dd
>
>  #-- dhis-wp
> -------------------------------------------------------------------#
>
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-commons/src/main/resources/i18n_global_vi_VN.properties'
> ---
> dhis-2/dhis-web/dhis-web-commons/src/main/resources/i18n_global_vi_VN.properties
>    2010-04-01 09:31:33 +0000
> +++
> dhis-2/dhis-web/dhis-web-commons/src/main/resources/i18n_global_vi_VN.properties
>    2010-04-06 10:05:28 +0000
> @@ -2,6 +2,7 @@
>
>  format.date                                    = dd-MM-yyyy
>  format.date.label                              = dd-mm-yyyy
> +format.date.custome                    = MMM-yy
>  format.time                                    = HH:mm
>  format.time.label                              = hh:mm
>  format.datetime                                = dd-MM-yyyy HH:mm
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/org/hisp/dhis/reportexcel/i18n_module.properties'
> ---
> dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/org/hisp/dhis/reportexcel/i18n_module.properties
>        2010-03-25 08:15:35 +0000
> +++
> dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/org/hisp/dhis/reportexcel/i18n_module.properties
>        2010-04-06 10:05:28 +0000
> @@ -200,7 +200,6 @@
>  use_only_letters_numbers_dot_only = Please enter Letters, Numbers for
> file's name and Dot for extension only
>  cell_exist                                     = Exist one cell same
> sheet, row and column with this.
>  update_successful           = Updating is success !
> -cell_exist                                     = Exist one cell same
> sheet, row and column with this.
>  download                                       = Download
>  upload_file_null                       = Upload file null
>  file_type_not_supported                = File type not supported
> @@ -217,4 +216,4 @@
>  translation_translate          = Translate
>  template_using              = File is using
>  template_pending            = File is pending
> -expression_not_well_formed     = Expression is not well formed
> \ No newline at end of file
> +expression_not_well_formed     = Expression is not well-formed
> \ No newline at end of file
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/org/hisp/dhis/reportexcel/i18n_module_vi_VN.properties'
> ---
> dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/org/hisp/dhis/reportexcel/i18n_module_vi_VN.properties
>  2010-03-24 02:56:06 +0000
> +++
> dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/org/hisp/dhis/reportexcel/i18n_module_vi_VN.properties
>  2010-04-06 10:05:28 +0000
> @@ -202,12 +202,13 @@
>  cell_exist                                     = \u0110\u00e3 t\u1ed3n
> t\u1ea1i m\u1ed9t excel item c\u00f3 c\u00f9ng d\u00f2ng, c\u1ed9t v\u00e0
> sheet.
>  update_successful           = C\u1eadp nh\u1eadt th\u00e0nh c\u00f4ng !
>  download                                       = T\u1ea3i v\u1ec1
> -override_confirm                       = File template n\u00e0y
> \u0111\u00e3 t\u1ed3n t\u1ea1i. B\u1ea1n c\u00f3 mu\u1ed1n ghi \u0111\u00e8
> hay ko ?
> -template_using                         = \u0110ANG s\u1eed d\u1ee5ng
> t\u1eadp tin n\u00e0y
> -template_pending               = CH\u01afA s\u1eed d\u1ee5ng t\u1eadp tin
> n\u00e0y
> +override_confirm                       = B\u1ea1n c\u00f3 mu\u1ed1n ghi
> \u0111\u00e8 t\u1eadp tin m\u1eabu n\u00e0y kh\u00f4ng?
> +template_using                         = \u0110ANG s\u1eed d\u1ee5ng
> +template_pending               = CH\u01afA s\u1eed d\u1ee5ng
>  intro_configuration         = Thi\u1ebft l\u1eadp \u0111\u01b0\u1eddng
> d\u1eabn ch\u1ec9 t\u1edbi thu m\u1ee5c l\u01b0u tr\u1eef c\u00e1c t\u1eadp
> tin excel m\u1eabu. V\u00ed d\u1ee5: C:\\ABC
>  intro_reports               = T\u1ea1o m\u1edbi, c\u1eadp nh\u1eadt, xem
> v\u00e0 x\u00f3a c\u00e1c B\u00e1o c\u00e1o excel. M\u1ed9t b\u00e1o
> c\u00e1o excel ch\u1ee9a nhi\u1ec1u ph\u1ea7n t\u1eed excel. B\u00e1o
> c\u00e1o excel c\u00f3 th\u1ec3 thu\u1ed9c nhi\u1ec1u lo\u1ea1i b\u00e1o
> c\u00e1o kh\u00e1c nhau. Cho ph\u00e9p g\u00e1n b\u00e1o c\u00e1o excel cho
> m\u1ed9t hay nhi\u1ec1u \u0111\u01a1n v\u1ecb ho\u1eb7c nh\u00f3m
> \u0111\u01a1n v\u1ecb v\u00e0 m\u1ed9t s\u1ed1 t\u00f9y ch\u1ecdn kh\u00e1c.
>  intro_data_status           = Ch\u1ee9c n\u0103ng n\u00e0y d\u00f9ng
> \u0111\u1ec3 xem tr\u1ea1ng th\u00e1i nh\u1eadp d\u1eef li\u1ec7u (D\u1eef
> li\u1ec7u \u0111\u01b0\u1ee3c nh\u1eadp xong hay ch\u01b0a ho\u1eb7c s\u1ed1
> li\u1ec7u n\u00e0o c\u00f2n thi\u1ebfu v.v...).
>  intro_clean_up              = Ch\u1ee9c n\u0103ng n\u00e0y cho ph\u00e9p
> ng\u01b0\u1eddi d\u00f9ng x\u00f3a c\u00e1c t\u1eadp tin t\u1ea1m sinh ra
> trong qu\u00e1 tr\u00ecnh sinh b\u00e1o c\u00e1o ho\u1eb7c xem
> tr\u01b0\u1edbc b\u00e1o c\u00e1o.
>  intro_excel_item            = T\u1ea1o m\u1edbi, c\u1eadp nh\u1eadt, xem
> v\u00e0o x\u00f3a c\u00e1c ph\u1ea7n t\u1eed excel cho qu\u00e1 tr\u00ecnh
> import d\u1eef li\u1ec7u t\u1eeb t\u1eadp tin excel. Ph\u1ea7n t\u1eed excel
> n\u00e0y c\u00f3 ch\u1ee9c n\u0103ng g\u1ea7n gi\u1ed1ng v\u1edbi ph\u1ea7n
> t\u1eed excel trong m\u1ed9t b\u00e1o c\u00e1o excel.
> -intro_excel_template_management = T\u1ea3i ,\u0111\u1ed5i t\u00ean,
> t\u00ecm ki\u1ebfm, t\u1ea3i v\u1ec1 v\u00e0 x\u00f3a c\u00e1c t\u1eadp tin
> c\u00f3 \u0111u\u00f4i m\u1edf r\u1ed9ng .xls ho\u1eb7c .xlsx.
> Ng\u01b0\u1eddi d\u00f9ng c\u00f3 th\u1ec3 nh\u1eadn bi\u1ebft t\u1eadp tin
> n\u00e0o \u0111ang \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng v\u00e0 t\u1eadp
> tin n\u00e0o ch\u01b0a d\u00f9ng \u0111\u1ebfn. Cho ph\u00e9p t\u1ef1
> \u0111\u1ed9ng c\u1eadp nh\u1eadt l\u1ea1i h\u1ec7 th\u1ed1ng b\u00e1o
> c\u00e1o excel khi t\u00ean t\u1eadp tin \u0111ang s\u1eed d\u1ee5ng thay
> \u0111\u1ed5i.
> \ No newline at end of file
> +intro_excel_template_management = T\u1ea3i ,\u0111\u1ed5i t\u00ean,
> t\u00ecm ki\u1ebfm, t\u1ea3i v\u1ec1 v\u00e0 x\u00f3a c\u00e1c t\u1eadp tin
> c\u00f3 \u0111u\u00f4i m\u1edf r\u1ed9ng .xls ho\u1eb7c .xlsx.
> Ng\u01b0\u1eddi d\u00f9ng c\u00f3 th\u1ec3 nh\u1eadn bi\u1ebft t\u1eadp tin
> n\u00e0o \u0111ang \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng v\u00e0 t\u1eadp
> tin n\u00e0o ch\u01b0a d\u00f9ng \u0111\u1ebfn. Cho ph\u00e9p t\u1ef1
> \u0111\u1ed9ng c\u1eadp nh\u1eadt l\u1ea1i h\u1ec7 th\u1ed1ng b\u00e1o
> c\u00e1o excel khi t\u00ean t\u1eadp tin \u0111ang s\u1eed d\u1ee5ng thay
> \u0111\u1ed5i.
> +expression_not_well_formed  = Bi\u1ec3u th\u1ee9c kh\u00f4ng
> \u0111\u00fang/ch\u01b0a h\u1ee3p l\u1ec7
> \ No newline at end of file
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/excelTemplateList.vm'
> ---
> dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/excelTemplateList.vm
>      2010-03-10 10:28:44 +0000
> +++
> dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/excelTemplateList.vm
>      2010-04-06 10:05:28 +0000
> @@ -45,11 +45,12 @@
>                                #end
>                        </td>
>                        <td align="left">
> +                               <a href="javascript:mode = 'edit';
> openEditExcelTemplate( '$templateFileName' );" title="$i18n.getString(
> 'edit' )"><img src="../images/edit.png" alt="$i18n.getString( 'edit' )"></a>
> +                               <a
> href="downloadExcelTemplate.action?fileName=$templateFileName"
> title="$i18n.getString( 'download' )"><img src="images/download.png"
> alt="$i18n.getString( 'download' )"></a>
>                                #if( $encoder.htmlEncode( $value ) ==
> 'false' )
>                                <a
> href="javascript:deleteExcelTemplate('$templateFileName');"
> title="$i18n.getString( 'remove' )"><img src="../images/delete.png"
> alt="$i18n.getString( 'remove' )"></a>
>                                #end
> -                               <a href="javascript:mode = 'edit';
> openEditExcelTemplate( '$templateFileName' );" title="$i18n.getString(
> 'edit' )"><img src="../images/edit.png" alt="$i18n.getString( 'edit' )"></a>
> -                               <a
> href="downloadExcelTemplate.action?fileName=$templateFileName"
> title="$i18n.getString( 'download' )"><img src="images/download.png"
> alt="$i18n.getString( 'download' )"></a>
> +
>                        </td>
>                </tr>
>        #end
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/databrowser/SearchAction.java'
> ---
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/databrowser/SearchAction.java
>      2010-04-03 09:35:43 +0000
> +++
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/databrowser/SearchAction.java
>      2010-04-06 10:05:28 +0000
> @@ -52,6 +52,7 @@
>  import org.hisp.dhis.period.Period;
>  import org.hisp.dhis.period.PeriodService;
>  import org.hisp.dhis.period.PeriodType;
> +import org.hisp.dhis.period.comparator.AscendingPeriodComparator;
>  import org.hisp.dhis.system.util.DateUtils;
>  import org.hisp.dhis.util.SessionUtils;
>
> @@ -62,6 +63,8 @@
>  /**
>  * @author espenjac, joakibj, briane, eivinhb
>  * @version $Id$
> + * @modifier Dang Duy Hieu
> + * @since 2010-04-06
>  */
>  public class SearchAction
>     implements Action
> @@ -78,7 +81,7 @@
>
>     private static final String KEY_DATABROWSERTABLE =
> "dataBrowserTableResults";
>
> -    private static final String HYPHEN = " - ";
> +    private static final String DASH = " - ";
>
>     //
> -------------------------------------------------------------------------
>     // Dependencies
> @@ -462,7 +465,6 @@
>             }
>             else
>             {
> -
>                 dataBrowserTable =
> dataBrowserService.getDataElementGroupsInPeriod( fromDate, toDate,
> periodType );
>             }
>         }
> @@ -503,7 +505,8 @@
>         // Set DataBrowserTable variable for PDF export
>         setExportPDFVariables();
>
> -        // Get format standard for periods which appropriate with from
> date, to date and period type
> +        // Get format standard for periods which appropriate with from
> date, to
> +        // date and period type
>         fromToDate = getFromToDateFormat( periodType, fromDate, toDate );
>
>         if ( fromToDate == null )
> @@ -577,7 +580,8 @@
>
>         for ( MetaValue col : allColumnsConverted )
>         {
> -            col.setName( DateUtils.convertDate( col.getName() ) );
> +            //col.setName( DateUtils.convertDate( col.getName() ) );
> +            col.setName( DateUtils.convertDate( col.getName(), format ) );
>         }
>     }
>
> @@ -605,6 +609,9 @@
>             List<Period> periods = new ArrayList<Period>(
> periodService.getPeriodsBetweenDates( periodType, date1,
>                 date2 ) );
>
> +            // Please do not delete this testing ...
> +            System.out.println( "\n\nFIRST Periods:: " + periods );
> +
>             if ( periods.isEmpty() )
>             {
>                 CalendarPeriodType calendarPeriodType =
> (CalendarPeriodType) periodType;
> @@ -613,6 +620,11 @@
>                 periods.add( calendarPeriodType.createPeriod( date2 ) );
>             }
>
> +            Collections.sort( periods, new AscendingPeriodComparator() );
> +
> +            // Please do not delete this testing ...
> +            System.out.println( "\n\nTHEN Periods:: " + periods );
> +
>             return periods;
>         }
>         catch ( ParseException e )
> @@ -630,10 +642,10 @@
>         for ( Period period : periods )
>         {
>             String sTemp = format.formatPeriod( period );
> -
> +
>             if ( !stringFormatDate.contains( sTemp ) )
>             {
> -                stringFormatDate += HYPHEN + sTemp;
> +                stringFormatDate += DASH + sTemp;
>             }
>         }
>
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserResult.vm'
> ---
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserResult.vm
>     2010-03-17 06:07:42 +0000
> +++
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserResult.vm
>     2010-04-06 10:05:28 +0000
> @@ -119,6 +119,7 @@
>            <strong>$i18n.getString( "period_type" ):</strong> $periodTypeId
>        #elseif ( $fromToDate != "" )
>            <strong>$i18n.getString( "from_date" ):</strong> $fromToDate
> +               <br/>
>                <strong>$i18n.getString( "period_type" ):</strong>
> $periodTypeId
>        #else
>            <strong>$i18n.getString( "from_date" ):</strong> $fromDate
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/resources/org/hisp/dhis/dd/i18n_module.properties'
> ---
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/resources/org/hisp/dhis/dd/i18n_module.properties
> 2010-03-30 04:36:31 +0000
> +++
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/resources/org/hisp/dhis/dd/i18n_module.properties
> 2010-04-06 10:05:28 +0000
> @@ -303,7 +303,7 @@
>  select_indicator
>     = Please select indicator
>  annualized
>             = Annualized
>  could_not_save
>     = Could not save
> -object_not_deleted_associated_by_objects               = Object not
> deleted becuause it is associated by objects of type
> +object_not_deleted_associated_by_objects               = Object not
> deleted because it is associated by objects of type
>  hide_warning
>     = Hide warning
>  please_enter_name
>      = Please enter name !
>  group_ready_exist
>      = Group ready exist
>
>
> _______________________________________________
> 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
>
>


-- 
Hieu.HISPVietnam
Good Health !

Follow ups

References