1 package com.dotmarketing.util; 2 3 import java.util.ArrayList ; 4 import java.util.GregorianCalendar ; 5 import java.util.List ; 6 import java.util.Map ; 7 import java.util.TimeZone ; 8 9 10 public class Calendar { 11 static final String TIMEZONE = "EST"; 12 static final String [] MONTH_NAME = { 13 "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", 14 "December" 15 }; 16 17 public static Map getMap() { 18 GregorianCalendar cal = new GregorianCalendar (); 19 20 return getMap(cal.get(GregorianCalendar.YEAR), cal.get(GregorianCalendar.MONTH), 21 cal.get(GregorianCalendar.DAY_OF_MONTH)); 22 } 23 24 public static Map getMap(String y, String m) { 25 try { 26 return getMap(Integer.parseInt(y), Integer.parseInt(m), 1); 27 } catch (Exception e) { 28 return getMap(); 29 } 30 } 31 32 public static Map getMap(int y, int m, int d) { 33 if (y < 100) { 34 y = y + 2000; 35 } 36 37 Logger.debug(Calendar.class, "Y:" + y); 38 Logger.debug(Calendar.class, "m:" + m); 39 Logger.debug(Calendar.class, "d:" + d); 40 41 GregorianCalendar cal = new GregorianCalendar (y, m, d); 42 GregorianCalendar today = new GregorianCalendar (); 43 java.util.HashMap modelRoot = new java.util.HashMap (); 44 45 int month = cal.get(GregorianCalendar.MONTH); 46 int year = cal.get(GregorianCalendar.YEAR); 47 48 int showmonth = month + 1; 49 50 if ((month < 0) || (month > 11) || (year < 1995)) { 52 month = cal.get(GregorianCalendar.MONTH); 53 year = 1995; 54 } 55 56 modelRoot.put("year", (new Integer (year).toString())); 58 modelRoot.put("month", (new Integer (month).toString())); 59 modelRoot.put("data", getCalendarData(month, year)); 60 modelRoot.put("today", 61 today.get(GregorianCalendar.YEAR) + "-" + today.get(GregorianCalendar.MONTH) + "-" + 62 today.get(GregorianCalendar.DAY_OF_MONTH)); 63 modelRoot.put("monthStr", MONTH_NAME[month]); 64 modelRoot.put("showmonth", (new Integer (showmonth).toString())); 65 modelRoot.put("nextYear", (new Integer (year + 1).toString())); 66 modelRoot.put("prevYear", (new Integer (year - 1).toString())); 67 modelRoot.put("prevMonth", (new Integer ((month + 11) % 12).toString())); 68 modelRoot.put("nextMonth", (new Integer ((month + 01) % 12).toString())); 69 modelRoot.put("timeZone", TIMEZONE); 70 modelRoot.put("totalDays",cal.getActualMaximum(GregorianCalendar.DAY_OF_MONTH)); 71 72 return modelRoot; 73 } 74 75 private static List getCalendarData(int month, int year) { 76 ArrayList monthData = new ArrayList (); 78 79 for (int row = 0; row < 6; row++) { 80 ArrayList weekVect = new ArrayList (); 81 monthData.add(weekVect); 82 83 for (int col = 0; col < 7; col++) { 84 weekVect.add(""); 85 } 86 } 87 88 GregorianCalendar cal = new GregorianCalendar (year, month, 1); 90 TimeZone tz = TimeZone.getTimeZone(TIMEZONE); 91 cal.setTimeZone(tz); 92 93 int totalDays = cal.getActualMaximum(GregorianCalendar.DAY_OF_MONTH); 94 int prevcol = 0; 95 int row = 0; 96 97 for (int i = 1; i <= totalDays; i++) { 98 cal.set(GregorianCalendar.DATE, i); 99 100 int dayOfWeek = cal.get(GregorianCalendar.DAY_OF_WEEK); 101 102 int col = dayOfWeek - GregorianCalendar.SUNDAY; 104 105 if (prevcol == 6) { 106 row++; 107 } 108 109 ArrayList weekVect = ( ArrayList ) monthData.get(row); 110 weekVect.set(col, new Integer (i)); 111 prevcol = col; 112 } 113 114 if (row == 4) { 116 monthData.remove(5); 117 } 118 119 ArrayList monthList = new ArrayList (); 120 121 for (int i = 0; i < monthData.size(); i++) { 122 ArrayList weekList = new ArrayList (); 123 124 for (int j = 0; j < (( ArrayList ) monthData.get(i)).size(); j++) { 125 weekList.add(( String ) (( ArrayList ) monthData.get(i)).get(j).toString()); 126 } 127 128 monthList.add(weekList); 129 } 130 131 return monthList; 132 } 133 } 134
| Popular Tags
|