Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
$URL: https://source.sakaiproject.org/svn/jsf/tags/sakai-10.0/jsf-widgets/src/java/org/sakaiproject/jsf/model/DateModel.java $ $Id: DateModel.java 105077 2012-02-24 22:54:29Z ottenhoff@longsight.com $ Copyright (c) 2003, 2004, 2005, 2006, 2008 The Sakai Foundation Licensed under the Educational Community License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.opensource.org/licenses/ECL-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. /
 
 
 package org.sakaiproject.jsf.model;
 
 import java.io.*;
 import java.text.*;
 import java.util.*;

Models Locale specific date chanracteristics.

Includes localized slect lists.

Copyright: Copyright Sakai (c) 2005

Author(s):
Ed Smiley
Version:
$Id: DateModel.java 105077 2012-02-24 22:54:29Z ottenhoff@longsight.com $
 
 
 public class DateModel
   implements Serializable
 {
  
 
 	private static final long serialVersionUID = 3055823270695170660L;
 	private static final Integer[] months;
 	private static final Integer[] days;
 	private static final Integer[] hours12;
 	private static final Integer[] hours24;
 	private static final Integer[] minutes;
 	private static final Integer[] seconds;
 	// workaround for dfs.getAmPmStrings() returning null!
 	private static final String[] ampm =
 	{
     "AM""PM"};
 
   // calls conventiece method to set up
   static
   {
      = makeArray(12, false);
      = makeArray(31, false);
      = makeArray(12, false);
      = makeArray(24, false);
      = makeArray(60, true);
      = makeArray(60, true);
   }
 
 
   private Locale locale;
   private DateFormatSymbols dfs;
 
   public DateModel()
   {
      = Locale.getDefault();
      = new DateFormatSymbols();
 
   }
 
 
   public DateModel(Locale locale)
   {
     this. = locale;
      = new DateFormatSymbols(locale);
   }


  
Array of year Integers starting from now - rangeBefore to now + rangeAfter

Parameters:
rangeBefore int
rangeAfter int
Returns:
Integer[]
 
 
   public Integer[] getYears(int rangeBeforeint rangeAfter)
   {
     
     Calendar cal = Calendar.getInstance();
     int currentYear = cal.get(.);
     int startYear = currentYear - rangeBefore;
     int noOfYears = rangeBefore + rangeAfter + 1;
    Integer[] years = new Integer[noOfYears];
    for (int i = startYeary = 0; i < startYear + noOfYearsi++, y++)
    {
      years[y] = Integer.valueOf(startYear + y);
    }
    return years;
  }


  
Localized array of month names

Returns:
String[]
  public String[] getMonthNames()
  {
    return .getMonths();
  }


  
Localized array of short month strings

Returns:
String[]
  public String[] getMonthShortNames()
  {
    return dfs.getShortMonths();
  }


  
Localized array of day strings

Returns:
String[]
  public String[] getDayNames()
  {
    return .getWeekdays();
  }


  
Localized array of short day strings

Returns:
String[]
  public String[] getDayShortNames()
  {
    return .getShortWeekdays();
  }


  
(Should be) Localized array of {AM, PM}

Returns:
String[]
Todo:
localize Hardcoded workaround for dfs.getAmPmStrings() returning null!
  public String[] getAmPm()
  {
//			return dfs.getAmPmStrings();
    return ;
  }


  
Array of month Itegers, starting from 1

Returns:
Integer[]
  public Integer[] getMonths()
  {
    return ;
  }


  
Array of day of month Integers, starting from 1

Returns:
Integer[]
  public Integer[] getDays()
  {
    return ;
  }


  
Array of hour Integers, starting from 1

Returns:
Integer[]
  public Integer[] getHours()
  {
    return getHours(true);
  }


  
Array of hour Integers, starting from 1

Parameters:
twentyFourHour, if true use 24 hour clock, if false use 12 hour clock
Returns:
Integer[]
  public Integer[] getHours(boolean twentyFourHour)
  {
    return twentyFourHour ?  : ;
  }


  
Array of minute Integers, starting from 0

Returns:
Integer[]
  public Integer[] getMinutes()
  {
    return ;
  }


  
Array of seconds Integers, starting from 0

Returns:
Integer[]
  public Integer[] getSeconds()
  {
    return ;
  }


  
unit test

Parameters:
args String[]
  public static void main(String[] args)
  {
    DateModel dateModel1 = new DateModel();
    Integer[] ye = dateModel1.getYears(2, 2);
    Integer[] mo = dateModel1.getMonths();
    Integer[] da = dateModel1.getDays();
    Integer[] h12 = dateModel1.getHours(false);
    Integer[] h24 = dateModel1.getHours();
    Integer[] mi = dateModel1.getMinutes();
    Integer[] se = dateModel1.getSeconds();
    String[] ap = dateModel1.getAmPm();
    
    for (int i = 0; i < ye.lengthi++)
    {
      ..println("year: " + ye[i]);
    }
    for (int i = 0; i < mo.lengthi++)
    {
      ..println("month: " + mo[i]);
    }
    for (int i = 0; i < da.lengthi++)
    {
      ..println("day: " + da[i]);
    }
    for (int i = 0; i < h12.lengthi++)
    {
      ..println("hour 12: " + h12[i]);
    }
    for (int i = 0; i < h24.lengthi++)
    {
      ..println("hour 24: " + h24[i]);
    }
    for (int i = 0; i < mi.lengthi++)
    {
      ..println("minutes: " + mi[i]);
    }
    for (int i = 0; i < se.lengthi++)
    {
      ..println("seconds: " + se[i]);
    }
    for (int i = 0; i < se.lengthi++)
    {
      String zs =
        dateModel1.zeroPad(se[i].toString());
      ..println("zero pad seconds=" + zs);
    }
    for (int i = 0; i < ap.lengthi++)
    {
      ..println("am pm: " + ap[i]);
    }
    // test select items
    ..println("testing select items 12hr");
    ..println("testing select items 24hr");
    ..println("testing select items am pm");
    ..println("testing select items day");
    ..println("testing select items minute");
    ..println("testing select items month");
    ..println("testing select items second");
    ..println("testing select items year");
    unitTestSelectItemList(dateModel1.getYearSelectItems(2, 2));
  }
  private static void unitTestSelectItemList(List list)
  {
    for (Iterator iter = list.iterator(); iter.hasNext(); ) {
      SelectItem item = (SelectItem)iter.next();
      ..println("item.getLabel()="+item.getLabel());
      ..println("item.getValue()="+item.getValue());
    }
  }


  
Select list for range of years

Parameters:
rangeBefore int
rangeAfter int
Returns:
List of SelectItems
  public List getYearSelectItems(int rangeBeforeint rangeAfter)
  {
    List selectYears = new ArrayList();
    Integer[] years = this.getYears(rangeBeforerangeAfter);
    for (int i = 0; i < years.lengthi++)
    {
      SelectItem selectYear = new SelectItem(years[i], years[i].toString());
      selectYears.add(selectYear);
    }
    return selectYears;
  }


  
Select list for range of months

Returns:
List of SelectItems
  {
    List selectMonths = new ArrayList();
    Integer[] m = this.getMonths();
    for (int i = 0; i < m.lengthi++)
    {
      SelectItem selectMonth = new SelectItem(m[i], m[i].toString());
      selectMonths.add(selectMonth);
    }
    return selectMonths;
  }


  
Select list for range of days

Returns:
List of SelectItems
  public List getDaySelectItems()
  {
    List selectDays = new ArrayList();
    Integer[] d = this.getDays();
    for (int i = 0; i < d.lengthi++)
    {
      SelectItem selectDay = new SelectItem(d[i], d[i].toString());
    }
    return selectDays;
  }


  
Select list for range of hours on 24 hour clock.

Returns:
List of SelectItems
  {
    List selectHours = new ArrayList();
    Integer[] h = this.getHours();
    for (int i = 0; i < h.lengthi++)
    {
      String hourStr = zeroPad(h[i].toString());
      SelectItem selectHour =
        new SelectItem(h[i], hourStr);
      selectHours.add(selectHour);
    }
    return selectHours;
  }


  
Select list for range of hours on 12 hour clock. Used in conjunction with AM/PM.

Returns:
List of SelectItem
  {
    List selectHours = new ArrayList();
    Integer[] h = this.getHours(false);
    for (int i = 0; i < h.lengthi++)
    {
      String hourStr = zeroPad(h[i].toString());
      SelectItem selectHour =
        new SelectItem(h[i], hourStr);
      selectHours.add(selectHour);
    }
    return selectHours;
  }


  
Localized AM/PM select list

Returns:
the List of SelectItems
  {
    List ampmList = new ArrayList();
    String[] ampm = getAmPm();
    for (int i = 0; i < ampm.lengthi++)
    {
      ampmList.add(new SelectItem(Integer.valueOf(i), ampm[i]));
    }
    return ampmList;
  }


  
Select list for range of hours on 12 hour clock. Used in conjunction with AM/PM.

Returns:
List
  {
    List selectMinutes = new ArrayList();
    Integer[] m = this.getMinutes();
    for (int i = 0; i < m.lengthi++)
    {
      String minStr = zeroPad(m[i].toString());
      SelectItem selectHour =
        new SelectItem(m[i], minStr);
      selectMinutes.add(selectHour);
    }
    return selectMinutes;
  }


  
Select list for range of hours on 12 hour clock. Used in conjunction with AM/PM.

Returns:
List
  {
    List selectSeconds = new ArrayList();
    Integer[] s = this.getSeconds();
    for (int i = 0; i < s.lengthi++)
    {
      String secStr = zeroPad(s[i].toString());
      SelectItem selectHour =
        new SelectItem(s[i], secStr);
      selectSeconds.add(selectHour);
    }
    return selectSeconds;
  }


  
utility method

Parameters:
entries
Returns:
  private static Integer[] makeArray(
    int entriesboolean zeroBase)
  {
    Integer[] mk = new Integer[entries];
    int incr = 1;
    if (zeroBase)
    {
      incr = 0;
    }
    for (int i = 0; i < entriesi++)
    {
      mk[i] = Integer.valueOf(i + incr);
    }
    return mk;
  }


  
helper method

Parameters:
str a string
Returns:
  private String zeroPad(String str)
  {
    if (str == null)
    {
      return "00";
    }
    if (str.length() < 2)
    {
      str = "0" + str;
    }
    return str;
  }
New to GrepCode? Check out our FAQ X