You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by pm...@apache.org on 2007/07/20 09:29:39 UTC

svn commit: r557903 - /myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/schedule/model/AbstractScheduleModel.java

Author: pmahoney
Date: Fri Jul 20 00:29:38 2007
New Revision: 557903

URL: http://svn.apache.org/viewvc?view=rev&rev=557903
Log:
TOMAHAWK-1060: Refactor for lazy initialisation of days and events

Modified:
    myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/schedule/model/AbstractScheduleModel.java

Modified: myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/schedule/model/AbstractScheduleModel.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/schedule/model/AbstractScheduleModel.java?view=diff&rev=557903&r1=557902&r2=557903
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/schedule/model/AbstractScheduleModel.java (original)
+++ myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/schedule/model/AbstractScheduleModel.java Fri Jul 20 00:29:38 2007
@@ -24,6 +24,7 @@
 import java.util.Collection;
 import java.util.Date;
 import java.util.Iterator;
+import java.util.SortedSet;
 import java.util.TimeZone;
 import java.util.TreeSet;
 
@@ -43,7 +44,7 @@
     // ~ Instance fields
     // --------------------------------------------------------
 
-    protected final TreeSet days;
+    private TreeSet days;
 
     private Date selectedDate = new Date();
 
@@ -66,7 +67,6 @@
 
     public AbstractScheduleModel(TimeZone timeZone)
     {
-      this.days = new TreeSet();
       this.timeZone = timeZone;
     }
 
@@ -74,9 +74,50 @@
     // ----------------------------------------------------------------
 
     /**
+     * Get the set of days. Initialise on first call.
+     * 
+     */
+    protected SortedSet getDays()
+    {
+    	if (days == null)
+    	{
+    		days = new TreeSet();
+    		
+            switch (mode)
+            {
+            case DAY:
+                setDay(this.selectedDate);
+
+                break;
+
+            case WORKWEEK:
+                setWorkWeek(this.selectedDate);
+
+                break;
+
+            case WEEK:
+                setWeek(this.selectedDate);
+
+                break;
+
+            case MONTH:
+                setMonth(this.selectedDate);
+
+                break;
+
+            default:
+                setDay(this.selectedDate);
+            }    	
+    	}
+    	
+    	return days;
+    }
+    
+    /**
      * Returns the timezone setting for this model
      */
-    public TimeZone getTimeZone () {
+    public TimeZone getTimeZone ()
+    {
       return this.timeZone;
     }
 
@@ -85,7 +126,7 @@
      */
     public boolean isEmpty()
     {
-        return days.isEmpty();
+        return getDays().isEmpty();
     }
 
     /**
@@ -116,32 +157,7 @@
         }
 
         this.selectedDate = date;
-
-        switch (mode)
-        {
-        case DAY:
-            setDay(this.selectedDate);
-
-            break;
-
-        case WORKWEEK:
-            setWorkWeek(this.selectedDate);
-
-            break;
-
-        case WEEK:
-            setWeek(this.selectedDate);
-
-            break;
-
-        case MONTH:
-            setMonth(this.selectedDate);
-
-            break;
-
-        default:
-            setDay(this.selectedDate);
-        }
+        this.days = null;
     }
 
     /**
@@ -198,7 +214,7 @@
      */
     public Object get(int index)
     {
-        Object[] dayArray = days.toArray();
+        Object[] dayArray = getDays().toArray();
 
         Object returnObject = dayArray[index];
 
@@ -210,7 +226,7 @@
      */
     public Iterator iterator()
     {
-        return days.iterator();
+        return getDays().iterator();
     }
 
     /**
@@ -218,7 +234,7 @@
      */
     public int size()
     {
-        return days.size();
+        return getDays().size();
     }
 
     /**
@@ -398,7 +414,7 @@
 
         ScheduleDay day = new ScheduleDay(date, getTimeZone());
         loadDayAttributes(day);
-        days.add(day);
+        getDays().add(day);
 
         return day;
     }
@@ -410,13 +426,16 @@
      */
     protected void clear()
     {
-        for (Iterator dayIterator = days.iterator(); dayIterator.hasNext();)
-        {
-            ScheduleDay day = (ScheduleDay) dayIterator.next();
-            day.clear();
-        }
+    	if (days != null)
+    	{
+    		for (Iterator dayIterator = days.iterator(); dayIterator.hasNext();)
+    		{
+    			ScheduleDay day = (ScheduleDay) dayIterator.next();
+    			day.clear();
+    		}
 
-        days.clear();
+    		days.clear();
+    	}
     }
 
     /**
@@ -460,7 +479,7 @@
         {
             ScheduleEntry entry = (ScheduleEntry) entryIterator.next();
 
-            for (Iterator dayIterator = days.iterator(); dayIterator.hasNext();)
+            for (Iterator dayIterator = getDays().iterator(); dayIterator.hasNext();)
             {
                 ScheduleDay day = (ScheduleDay) dayIterator.next();