dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #02576
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 862: Precessed Period and Fixed bug in Individual Report Excel function ...
------------------------------------------------------------
revno: 862
committer: hieu <hieu.hispvietnam@xxxxxxxxx>
branch nick: trunk
timestamp: Thu 2009-10-15 16:50:00 +0700
message:
Precessed Period and Fixed bug in Individual Report Excel function ...
added:
dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/individual/action/GetPeriodsByPeriodTypeAction.java
dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/individual/action/NextPeriodsAction.java
dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/individual/action/PreviousPeriodsAction.java
dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/individual/manager/
dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/individual/manager/DefaultSelectedStateManager.java
dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/individual/manager/SelectedStateManager.java
modified:
dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/META-INF/dhis/beans.xml
dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/struts.xml
dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/individualReportExcel.vm
dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/javascript/individual.js
--
lp:dhis2
https://code.launchpad.net/~dhis2-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.
=== added file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/individual/action/GetPeriodsByPeriodTypeAction.java'
--- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/individual/action/GetPeriodsByPeriodTypeAction.java 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/individual/action/GetPeriodsByPeriodTypeAction.java 2009-10-15 09:50:00 +0000
@@ -0,0 +1,98 @@
+package org.hisp.dhis.reportexcel.export.individual.action;
+
+/*
+ * Copyright (c) 2004-2007, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * * Neither the name of the HISP project nor the names of its contributors may
+ * be used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.hisp.dhis.period.Period;
+import org.hisp.dhis.period.comparator.PeriodComparator;
+import org.hisp.dhis.reportexcel.export.individual.manager.SelectedStateManager;
+
+import com.opensymphony.xwork2.Action;
+
+/**
+ * @author Nguyen Tran Do Xuan Thuy
+ * @version $Id$
+ * @since 2009-10-14
+ */
+
+public class GetPeriodsByPeriodTypeAction
+ implements Action
+{
+ // -------------------------------------------------------------------------
+ // Dependences
+ // -------------------------------------------------------------------------
+
+ private SelectedStateManager selectedStateManager;
+
+ public void setSelectedStateManager( SelectedStateManager selectedStateManager )
+ {
+ this.selectedStateManager = selectedStateManager;
+ }
+
+ // -------------------------------------------------------------------------
+ // Input & Output
+ // -------------------------------------------------------------------------
+
+ private List<Period> periods;
+
+ public List<Period> getPeriods()
+ {
+ return periods;
+ }
+
+ private String periodTypeName;
+
+ public void setPeriodTypeName( String periodTypeName )
+ {
+ this.periodTypeName = periodTypeName;
+ }
+
+ // -------------------------------------------------------------------------
+ // Implement Action method
+ // -------------------------------------------------------------------------
+
+ public String execute()
+ throws Exception
+ {
+
+ selectedStateManager.setSelectedPeriodTypeName( periodTypeName );
+
+ periods = new ArrayList<Period>(selectedStateManager.getPeriodList());
+
+ if ( periods == null )
+ {
+ return ERROR;
+ }
+
+ Collections.sort( periods, new PeriodComparator() );
+
+ return SUCCESS;
+ }
+}
=== added file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/individual/action/NextPeriodsAction.java'
--- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/individual/action/NextPeriodsAction.java 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/individual/action/NextPeriodsAction.java 2009-10-15 09:50:00 +0000
@@ -0,0 +1,91 @@
+package org.hisp.dhis.reportexcel.export.individual.action;
+
+/*
+ * Copyright (c) 2004-2007, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * * Neither the name of the HISP project nor the names of its contributors may
+ * be used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.hisp.dhis.period.Period;
+import org.hisp.dhis.reportexcel.export.action.SelectionManager;
+import org.hisp.dhis.reportexcel.export.individual.manager.SelectedStateManager;
+
+import com.opensymphony.xwork2.Action;
+
+/**
+ * @author Torgeir Lorange Ostby
+ * @version $Id: NextPeriodsAction.java 2966 2007-03-03 14:38:20Z torgeilo $ *
+ * @modifier Dang Duy Hieu
+ * @since 2009-10-14
+ */
+public class NextPeriodsAction
+ implements Action
+{
+ // -------------------------------------------------------------------------
+ // Dependencies
+ // -------------------------------------------------------------------------
+
+ private SelectionManager selectionManager;
+
+ public void setSelectionManager( SelectionManager selectionManager )
+ {
+ this.selectionManager = selectionManager;
+ }
+
+ private SelectedStateManager selectedStateManager;
+
+ public void setSelectedStateManager( SelectedStateManager selectedStateManager )
+ {
+ this.selectedStateManager = selectedStateManager;
+ }
+
+ // -------------------------------------------------------------------------
+ // Output
+ // -------------------------------------------------------------------------
+
+ private List<Period> periods;
+
+ public List<Period> getPeriods()
+ {
+ return periods;
+ }
+
+ // -------------------------------------------------------------------------
+ // Action implementation
+ // -------------------------------------------------------------------------
+
+ public String execute()
+ throws Exception
+ {
+ selectionManager.setSeletedYear( selectionManager.getSelectedYear() + 1 );
+ selectedStateManager.nextPeriodSpan();
+
+ periods = new ArrayList<Period>( selectedStateManager.getPeriodList() );
+
+ return SUCCESS;
+ }
+}
=== added file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/individual/action/PreviousPeriodsAction.java'
--- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/individual/action/PreviousPeriodsAction.java 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/individual/action/PreviousPeriodsAction.java 2009-10-15 09:50:00 +0000
@@ -0,0 +1,92 @@
+package org.hisp.dhis.reportexcel.export.individual.action;
+
+/*
+ * Copyright (c) 2004-2007, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * * Neither the name of the HISP project nor the names of its contributors may
+ * be used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.hisp.dhis.period.Period;
+import org.hisp.dhis.reportexcel.export.action.SelectionManager;
+import org.hisp.dhis.reportexcel.export.individual.manager.SelectedStateManager;
+
+import com.opensymphony.xwork2.Action;
+
+/**
+ * @author Torgeir Lorange Ostby
+ * @version $Id: PreviousPeriodsAction.java 2966 2007-03-03 14:38:20Z torgeilo $ *
+ * @modifier Dang Duy Hieu
+ * @since 2009-10-14
+ */
+public class PreviousPeriodsAction
+ implements Action
+{
+ // -------------------------------------------------------------------------
+ // Dependencies
+ // -------------------------------------------------------------------------
+
+ private SelectedStateManager selectedStateManager;
+
+ public void setSelectedStateManager( SelectedStateManager selectedStateManager )
+ {
+ this.selectedStateManager = selectedStateManager;
+ }
+
+ private SelectionManager selectionManager;
+
+ public void setSelectionManager( SelectionManager selectionManager )
+ {
+ this.selectionManager = selectionManager;
+ }
+
+ // -------------------------------------------------------------------------
+ // Output
+ // -------------------------------------------------------------------------
+
+ private List<Period> periods;
+
+ public List<Period> getPeriods()
+ {
+ return periods;
+ }
+
+ // -------------------------------------------------------------------------
+ // Action implementation
+ // -------------------------------------------------------------------------
+
+ public String execute()
+ throws Exception
+ {
+ selectionManager.setSeletedYear( selectionManager.getSelectedYear() - 1 );
+ selectedStateManager.previousPeriodSpan();
+
+ periods = new ArrayList<Period>( selectedStateManager.getPeriodList() );
+
+ return SUCCESS;
+ }
+
+}
=== added directory 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/individual/manager'
=== added file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/individual/manager/DefaultSelectedStateManager.java'
--- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/individual/manager/DefaultSelectedStateManager.java 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/individual/manager/DefaultSelectedStateManager.java 2009-10-15 09:50:00 +0000
@@ -0,0 +1,252 @@
+package org.hisp.dhis.reportexcel.export.individual.manager;
+
+/*
+ * Copyright (c) 2004-2007, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * * Neither the name of the HISP project nor the names of its contributors may
+ * be used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.hisp.dhis.period.CalendarPeriodType;
+import org.hisp.dhis.period.Period;
+import org.hisp.dhis.period.PeriodService;
+import org.hisp.dhis.period.PeriodType;
+import org.hisp.dhis.period.comparator.PeriodComparator;
+import org.hisp.dhis.reportexcel.export.action.SelectionManager;
+import org.hisp.dhis.reportexcel.utils.DateUtils;
+
+import com.opensymphony.xwork2.ActionContext;
+
+/**
+ * @author Torgeir Lorange Ostby
+ * @version $Id: DefaultSelectedStateManager.java 5282 2008-05-28 10:41:06Z
+ * larshelg $
+ * @modifier Dang Duy Hieu
+ * @since 2009-10-14
+ */
+public class DefaultSelectedStateManager
+ implements SelectedStateManager
+{
+ private static final Log LOG = LogFactory.getLog( DefaultSelectedStateManager.class );
+
+ public static final String SESSION_KEY_SELECTED_PERIOD_TYPE_NAME = "_selected_period_type_name";
+
+ public static final String SESSION_KEY_SELECTED_PERIOD_INDEX = "_selected_period_index";
+
+ public static final String SESSION_KEY_BASE_PERIOD = "_base_period";
+
+ // -------------------------------------------------------------------------
+ // Dependencies
+ // -------------------------------------------------------------------------
+
+ private SelectionManager selectionManager;
+
+ public void setSelectionManager( SelectionManager selectionManager )
+ {
+ this.selectionManager = selectionManager;
+ }
+
+ private PeriodService periodService;
+
+ public void setPeriodService( PeriodService periodService )
+ {
+ this.periodService = periodService;
+ }
+
+ // -------------------------------------------------------------------------
+ // Cache
+ // -------------------------------------------------------------------------
+
+ private ThreadLocal<List<Period>> generatedPeriodsCache = new ThreadLocal<List<Period>>();
+
+ // -------------------------------------------------------------------------
+ // SelectedStateManager implementation
+ // -------------------------------------------------------------------------
+
+ @SuppressWarnings( "unchecked" )
+ public void setSelectedPeriodIndex( Integer index )
+ {
+ getSession().put( SESSION_KEY_SELECTED_PERIOD_INDEX, index );
+ }
+
+ public Integer getSelectedPeriodIndex()
+ {
+ return (Integer) getSession().get( SESSION_KEY_SELECTED_PERIOD_INDEX );
+ }
+
+ @SuppressWarnings( "unchecked" )
+ public void setSelectedPeriodTypeName( String periodTypeName )
+ {
+ getSession().put( SESSION_KEY_SELECTED_PERIOD_TYPE_NAME, periodTypeName );
+ }
+
+ public String getSelectedPeriodTypeName()
+ {
+ return (String) getSession().get( SESSION_KEY_SELECTED_PERIOD_TYPE_NAME );
+ }
+
+ public Period getSelectedPeriod()
+ {
+ Integer index = getSelectedPeriodIndex();
+
+ if ( index == null )
+ {
+ return null;
+ }
+
+ List<Period> periods = getPeriodList();
+
+ if ( index >= 0 && index < periods.size() )
+ {
+ Period selectedPeriod = periods.get( index );
+
+ Period period = null;
+
+ for ( Period p : periodService.getAllPeriods() )
+ {
+ if ( selectedPeriod.equals( p ) )
+ {
+ period = p;
+
+ return period;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ public void clearSelectedPeriod()
+ {
+ getSession().remove( SESSION_KEY_SELECTED_PERIOD_INDEX );
+ }
+
+ public List<Period> getPeriodList()
+ {
+ List<Period> periods = generatedPeriodsCache.get();
+
+ Period basePeriod = getBasePeriod();
+
+ if ( periods == null || periods.size() == 0
+ || !periods.get( 0 ).getPeriodType().equals( basePeriod.getPeriodType() ) || !periods.contains( basePeriod ) )
+ {
+ CalendarPeriodType periodType = (CalendarPeriodType) getPeriodType();
+
+ LOG.debug( "Generated periods cache invalid, generating new periods based on " + basePeriod );
+
+ periods = periodType.generatePeriods( basePeriod );
+
+ generatedPeriodsCache.set( periods );
+ }
+
+ Collection<Period> persistedPeriods = periodService.getPeriodsByPeriodType( getPeriodType() );
+
+ // get the period elements which exist in Collection
+ persistedPeriods.retainAll( periods );
+ Collections.sort( (ArrayList<Period>) persistedPeriods, new PeriodComparator() );
+
+ // return periods;
+ return (ArrayList<Period>) persistedPeriods;
+ }
+
+ @SuppressWarnings( "unchecked" )
+ public void nextPeriodSpan()
+ {
+ List<Period> periods = getPeriodList();
+ CalendarPeriodType periodType = (CalendarPeriodType) getPeriodType();
+
+ Period basePeriod = periods.get( periods.size() - 1 );
+ Period newBasePeriod = periodType.getNextPeriod( basePeriod );
+
+ // Future periods not allowed
+ if ( newBasePeriod.getStartDate().before( new Date() ) )
+ {
+ getSession().put( SESSION_KEY_BASE_PERIOD, newBasePeriod );
+ }
+ generatedPeriodsCache.remove();
+
+ }
+
+ @SuppressWarnings( "unchecked" )
+ public void previousPeriodSpan()
+ {
+ List<Period> periods = getPeriodList();
+ CalendarPeriodType periodType = (CalendarPeriodType) getPeriodType();
+
+ Period basePeriod = periods.get( 0 );
+ Period newBasePeriod = periodType.getPreviousPeriod( basePeriod );
+
+ getSession().put( SESSION_KEY_BASE_PERIOD, newBasePeriod );
+
+ generatedPeriodsCache.remove();
+ }
+
+ // -------------------------------------------------------------------------
+ // Support methods
+ // -------------------------------------------------------------------------
+ private PeriodType getPeriodType()
+ {
+ return periodService.getPeriodTypeByName( getSelectedPeriodTypeName() );
+ }
+
+ @SuppressWarnings( "unchecked" )
+ private Period getBasePeriod()
+ {
+ Period basePeriod = (Period) getSession().get( SESSION_KEY_BASE_PERIOD );
+ PeriodType periodType = getPeriodType();
+
+ if ( basePeriod == null )
+ {
+ LOG.debug( "getBasePeriod(): Base period is null, creating new." );
+
+ basePeriod = periodType.createPeriod();
+ getSession().put( SESSION_KEY_BASE_PERIOD, basePeriod );
+
+ selectionManager.setSeletedYear( DateUtils.getCurrentYear() );
+ }
+ else if ( selectionManager.getSelectedYear() > 0 )
+ {
+ Date firstDayOfYear = DateUtils.getFirstDayOfYear( selectionManager.getSelectedYear() );
+
+ basePeriod = periodType.createPeriod( firstDayOfYear );
+ }
+
+ return basePeriod;
+ }
+
+ @SuppressWarnings( "unchecked" )
+ private static final Map getSession()
+ {
+ return ActionContext.getContext().getSession();
+ }
+
+}
=== added file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/individual/manager/SelectedStateManager.java'
--- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/individual/manager/SelectedStateManager.java 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/individual/manager/SelectedStateManager.java 2009-10-15 09:50:00 +0000
@@ -0,0 +1,59 @@
+package org.hisp.dhis.reportexcel.export.individual.manager;
+
+/*
+ * Copyright (c) 2004-2007, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * * Neither the name of the HISP project nor the names of its contributors may
+ * be used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+import java.util.List;
+
+import org.hisp.dhis.period.Period;
+
+/**
+ * @author Torgeir Lorange Ostby
+ * @version $Id: SelectedStateManager.java 3311 2007-05-18 14:08:01Z torgeilo $
+ * @modifier Dang Duy Hieu
+ * @since 2009-10-14
+ */
+public interface SelectedStateManager
+{
+ void setSelectedPeriodIndex( Integer index );
+
+ Integer getSelectedPeriodIndex();
+
+ void setSelectedPeriodTypeName( String periodTypeName );
+
+ String getSelectedPeriodTypeName();
+
+ Period getSelectedPeriod();
+
+ void clearSelectedPeriod();
+
+ List<Period> getPeriodList();
+
+ void nextPeriodSpan();
+
+ void previousPeriodSpan();
+}
=== modified file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/META-INF/dhis/beans.xml 2009-10-09 08:02:34 +0000
+++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/META-INF/dhis/beans.xml 2009-10-15 09:50:00 +0000
@@ -975,4 +975,42 @@
</bean>
-->
+ <!-- Selection State -->
+
+ <bean id="org.hisp.dhis.reportexcel.export.individual.manager.SelectedStateManager"
+ class="org.hisp.dhis.reportexcel.export.individual.manager.DefaultSelectedStateManager">
+ <property name="periodService"
+ ref="org.hisp.dhis.period.PeriodService"/>
+ <property name="selectionManager"
+ ref="org.hisp.dhis.reportexcel.export.action.SelectionManager"/>
+ </bean>
+
+ <bean
+ id="org.hisp.dhis.reportexcel.export.individual.action.GetPeriodsByPeriodTypeAction"
+ class="org.hisp.dhis.reportexcel.export.individual.action.GetPeriodsByPeriodTypeAction"
+ scope="prototype">
+ <property name="selectedStateManager"
+ ref="org.hisp.dhis.reportexcel.export.individual.manager.SelectedStateManager" />
+ </bean>
+
+ <bean
+ id="org.hisp.dhis.reportexcel.export.individual.action.PreviousPeriodsAction"
+ class="org.hisp.dhis.reportexcel.export.individual.action.PreviousPeriodsAction"
+ scope="prototype">
+ <property name="selectedStateManager"
+ ref="org.hisp.dhis.reportexcel.export.individual.manager.SelectedStateManager" />
+ <property name="selectionManager"
+ ref="org.hisp.dhis.reportexcel.export.action.SelectionManager"/>
+ </bean>
+
+ <bean
+ id="org.hisp.dhis.reportexcel.export.individual.action.NextPeriodsAction"
+ class="org.hisp.dhis.reportexcel.export.individual.action.NextPeriodsAction"
+ scope="prototype">
+ <property name="selectedStateManager"
+ ref="org.hisp.dhis.reportexcel.export.individual.manager.SelectedStateManager" />
+ <property name="selectionManager"
+ ref="org.hisp.dhis.reportexcel.export.action.SelectionManager"/>
+ </bean>
+
</beans>
=== modified file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/struts.xml'
--- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/struts.xml 2009-10-14 04:36:29 +0000
+++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/struts.xml 2009-10-15 09:50:00 +0000
@@ -744,6 +744,28 @@
</result>
</action>
-->
+
+ <!-- PROCESSED FOR PERIOD IN INDIVIDUAL REPORT -->
+
+ <action name="getPeriodsByPeriodType"
+ class="org.hisp.dhis.reportexcel.export.individual.action.GetPeriodsByPeriodTypeAction">
+ <result name="success" type="velocity-xml">
+ /dhis-web-excel-reporting/responsePeriods.vm</result>
+ <result name="error" type="velocity-xml">
+ /dhis-web-excel-reporting/responseError.vm</result>
+ </action>
+
+ <action name="nextPeriods"
+ class="org.hisp.dhis.reportexcel.export.individual.action.NextPeriodsAction">
+ <result name="success" type="velocity-xml">
+ /dhis-web-excel-reporting/responsePeriods.vm</result>
+ </action>
+
+ <action name="previousPeriods"
+ class="org.hisp.dhis.reportexcel.export.individual.action.PreviousPeriodsAction">
+ <result name="success" type="velocity-xml">
+ /dhis-web-excel-reporting/responsePeriods.vm</result>
+ </action>
</package>
</struts>
=== modified file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/individualReportExcel.vm'
--- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/individualReportExcel.vm 2009-10-14 02:21:43 +0000
+++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/individualReportExcel.vm 2009-10-15 09:50:00 +0000
@@ -108,7 +108,7 @@
</tr>
<tr>
<td>
- <select id="availabelPeriodTypes" name="availabelPeriodTypes" style="width:30em ;" onChange="javascript: getPeriods();">
+ <select id="availabelPeriodTypes" name="availabelPeriodTypes" style="width:30em ;" onChange="javascript: getPeriodsByPeriodTypeName();">
<option value="" ></option>
#foreach ( $periodType in $periodTypes )
@@ -122,6 +122,11 @@
<td> </td>
<td></td>
</tr>
+ <tr>
+ <td><input name="button_previous" type="button" title="$i18n.getString('earlier_periods')" onClick="javascript: lastPeriod();" value="<<" #if( $periods.size() == 0 ) #end>
+ <input name="button_later" type="button" title="$i18n.getString('later_periods')" onclick="javascript: nextPeriod();" value=">>" #if( $periods.size() == 0 ) #end></td>
+ <td> </td>
+ </tr>
<tr>
<td>
<!-- List of all available DataElements -->
=== modified file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/javascript/individual.js'
--- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/javascript/individual.js 2009-10-14 02:39:08 +0000
+++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/javascript/individual.js 2009-10-15 09:50:00 +0000
@@ -296,4 +296,41 @@
function hideToolTip(){
byId('tooltip').style.display = 'none';
+}
+
+function getPeriodsByPeriodTypeName() {
+
+ var request = new Request();
+ request.setResponseTypeXML( 'xmlObject' );
+ request.setCallbackSuccess( responseListPeriodReceived );
+ request.send( 'getPeriodsByPeriodType.action?periodTypeName=' + $("#availabelPeriodTypes").val());
+}
+
+function lastPeriod() {
+
+ var request = new Request();
+ request.setResponseTypeXML( 'xmlObject' );
+ request.setCallbackSuccess( responseListPeriodReceived );
+ request.send( 'previousPeriods.action' );
+}
+
+function nextPeriod() {
+
+ var request = new Request();
+ request.setResponseTypeXML( 'xmlObject' );
+ request.setCallbackSuccess( responseListPeriodReceived );
+ request.send( 'nextPeriods.action' );
+}
+
+function responseListPeriodReceived( xmlObject ) {
+
+ clearListById('availablePeriods');
+ var list = xmlObject.getElementsByTagName('period');
+ for ( var i = 0; i < list.length; i++ )
+ {
+ item = list[i];
+ var id = item.getElementsByTagName('id')[0].firstChild.nodeValue;
+ var name = item.getElementsByTagName('name')[0].firstChild.nodeValue;
+ addOption('availablePeriods', name, id);
+ }
}
\ No newline at end of file