KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > dotmarketing > util > Calendar


1 package com.dotmarketing.util;
2
3 import java.util.ArrayList JavaDoc;
4 import java.util.GregorianCalendar JavaDoc;
5 import java.util.List JavaDoc;
6 import java.util.Map JavaDoc;
7 import java.util.TimeZone JavaDoc;
8
9
10 public class Calendar {
11     static final String JavaDoc TIMEZONE = "EST";
12     static final String JavaDoc[] MONTH_NAME = {
13         "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November",
14         "December"
15     };
16
17     public static Map JavaDoc getMap() {
18         GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc();
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 JavaDoc getMap(String JavaDoc y, String JavaDoc m) {
25         try {
26             return getMap(Integer.parseInt(y), Integer.parseInt(m), 1);
27         } catch (Exception JavaDoc e) {
28             return getMap();
29         }
30     }
31
32     public static Map JavaDoc 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 JavaDoc cal = new GregorianCalendar JavaDoc(y, m, d);
42         GregorianCalendar JavaDoc today = new GregorianCalendar JavaDoc();
43         java.util.HashMap JavaDoc modelRoot = new java.util.HashMap JavaDoc();
44
45         int month = cal.get(GregorianCalendar.MONTH);
46         int year = cal.get(GregorianCalendar.YEAR);
47
48         int showmonth = month + 1;
49
50         // simple error checking
51
if ((month < 0) || (month > 11) || (year < 1995)) {
52             month = cal.get(GregorianCalendar.MONTH);
53             year = 1995;
54         }
55
56         // populate hashtable
57
modelRoot.put("year", (new Integer JavaDoc(year).toString()));
58         modelRoot.put("month", (new Integer JavaDoc(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 JavaDoc(showmonth).toString()));
65         modelRoot.put("nextYear", (new Integer JavaDoc(year + 1).toString()));
66         modelRoot.put("prevYear", (new Integer JavaDoc(year - 1).toString()));
67         modelRoot.put("prevMonth", (new Integer JavaDoc((month + 11) % 12).toString()));
68         modelRoot.put("nextMonth", (new Integer JavaDoc((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 JavaDoc getCalendarData(int month, int year) {
76         // initialize ArrayList and fill with spaces
77
ArrayList JavaDoc monthData = new ArrayList JavaDoc();
78
79         for (int row = 0; row < 6; row++) {
80             ArrayList JavaDoc weekVect = new ArrayList JavaDoc();
81             monthData.add(weekVect);
82
83             for (int col = 0; col < 7; col++) {
84                 weekVect.add("");
85             }
86         }
87
88         // populate actual data
89
GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc(year, month, 1);
90         TimeZone JavaDoc 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 weekOfMonth = cal.get(GregorianCalendar.WEEK_OF_MONTH);
103
int col = dayOfWeek - GregorianCalendar.SUNDAY;
104
105             if (prevcol == 6) {
106                 row++;
107             }
108
109             ArrayList JavaDoc weekVect = ( ArrayList JavaDoc ) monthData.get(row);
110             weekVect.set(col, new Integer JavaDoc(i));
111             prevcol = col;
112         }
113
114         //remove last row if only 5 rows are needed
115
if (row == 4) {
116             monthData.remove(5);
117         }
118
119         ArrayList JavaDoc monthList = new ArrayList JavaDoc();
120
121         for (int i = 0; i < monthData.size(); i++) {
122             ArrayList JavaDoc weekList = new ArrayList JavaDoc();
123
124             for (int j = 0; j < (( ArrayList JavaDoc ) monthData.get(i)).size(); j++) {
125                 weekList.add(( String JavaDoc ) (( ArrayList JavaDoc ) monthData.get(i)).get(j).toString());
126             }
127
128             monthList.add(weekList);
129         }
130
131         return monthList;
132     }
133 }
134
Popular Tags