[ 
http://issues.apache.org/jira/browse/TOMAHAWK-614?page=comments#action_12430154 
] 
            
Mikhail Grushinskiy commented on TOMAHAWK-614:
----------------------------------------------

Here sample code to fix it.
This is not a patch yet. Trick is in setting 
               calendar.setFirstDayOfWeek(Calendar.MONDAY);
               calendar.setMinimalDaysInFirstWeek(1);
for every calendar used in a code. TimeZone has to be consistent and 
configurable everywhere too.

I think getCalendar() should be moved into base abstract class for a 
ScheduleModel and
AbstractScheduleModel should have gettter/setter for timeZone and 
all places for schedule instead of doing GregorialCalendar.getInstance() we 
should make a call
to model.getCalendar(). See code below

       /**
        * @return Calendar with settings
        */
       public Calendar  {
               String userTimeZone = getTimeZone();
               TimeZone tz = TimeZone.getTimeZone(userTimeZone);
               Calendar calendar = GregorianCalendar.getInstance();
               calendar.setTimeZone(tz);
               calendar.setFirstDayOfWeek(Calendar.MONDAY);
               calendar.setMinimalDaysInFirstWeek(1);
               return calendar;
       }


import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;

import org.apache.myfaces.custom.schedule.model.SimpleScheduleModel;
import org.apache.myfaces.custom.schedule.model.ScheduleDay;
import org.apache.myfaces.custom.schedule.model.ScheduleEntry;

public class ScheduleModel extends SimpleScheduleModel implements
Serializable {

   public static final String VER_ID="$Id$";

       /**
        * serialVersionUID
        */
       private static final long serialVersionUID =
-7391783268115864166L;

       private String timeZone = null;

       public String getTimeZone() {
               return timeZone;
       }

       public void setTimeZone(String timeZone) {
               this.timeZone = timeZone;
       }

       /**
        * @return Calendar with settings
        */
       public Calendar getCalendar() {
               String userTimeZone = getTimeZone();
               TimeZone tz = TimeZone.getTimeZone(userTimeZone);
               Calendar calendar = GregorianCalendar.getInstance();
               calendar.setTimeZone(tz);
               calendar.setFirstDayOfWeek(Calendar.MONDAY);
               calendar.setMinimalDaysInFirstWeek(1);
               return calendar;
       }

       /**
        * <p>
        * navigate to the specified week
        * </p>
        *
        * @param date
        *            the date to navigate to
        */
       protected void setWeek(Date date) {
               if (date == null) {
                       return;
               }
               clear();
               Calendar cal = getCalendar();
               cal.setTime(date);

               // go back to the monday of this week
               cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

               ScheduleDay firstDay = null;
               ScheduleDay lastDay = null;

               for (int i = 0; i < 7; i++) {
                       ScheduleDay addedDay = add(cal.getTime());
                       if (firstDay == null) {
                               firstDay = addedDay;
                       }
                       lastDay = addedDay;
                       cal.add(Calendar.DATE, 1);
               }
               load(firstDay.getDayStart(), lastDay.getDayEnd());
       }

       /*
        * (non-Javadoc)
        *
        * @see
org.apache.myfaces.custom.schedule.model.AbstractScheduleModel#setWorkWe
ek(java.util.Date)
        */
       @Override
       protected void setWorkWeek(Date date) {
               if (date == null) {
                       return;
               }
               clear();
               Calendar cal = getCalendar();
               cal.setTime(date);

               // go back to the monday of this week
               cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

               ScheduleDay firstDay = null;
               ScheduleDay lastDay = null;

               for (int i = 0; i < 5; i++) {
                       ScheduleDay addedDay = add(cal.getTime());
                       if (firstDay == null) {
                               firstDay = addedDay;
                       }
                       lastDay = addedDay;
                       cal.add(Calendar.DATE, 1);
               }
               load(firstDay.getDayStart(), lastDay.getDayEnd());
       }

       private void load(Date startDate, Date endDate) {
               Collection entries = loadEntries(startDate, endDate);

               for (Iterator entryIterator = entries.iterator();
entryIterator
                               .hasNext();) {
                       ScheduleEntry entry = (ScheduleEntry)
entryIterator.next();

                       for (Iterator dayIterator = days.iterator();
dayIterator.hasNext();) {
                               ScheduleDay day = (ScheduleDay)
dayIterator.next();

                               day.addEntry(entry);
                       }
               }
       }
}


> Schedule for January is missing January 1, 2006
> -----------------------------------------------
>
>                 Key: TOMAHAWK-614
>                 URL: http://issues.apache.org/jira/browse/TOMAHAWK-614
>             Project: MyFaces Tomahawk
>          Issue Type: Bug
>          Components: Schedule
>         Environment: all
>            Reporter: Mikhail Grushinskiy
>            Priority: Minor
>             Fix For: 1.1.4-SNAPSHOT, 1.1.5-SNAPSHOT
>
>         Attachments: AbstractScheduleModel.java.patch, 
> AbstractScheduleModel.java.patch
>
>
> Schedule for January is missing January 1, 2006. Somehow January 1, 2006 is 
> not appearing on January 2006 schedule (basically whole week ending with it 
> is missing)
>  

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to