OW2 Consortium telosys

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
13 lguerin 1
package org.objectweb.telosys.util;
2
 
3
import java.util.Calendar;
4
 
5
/**
6
 * @author Laurent GUERIN
7
 *
8
 */
9
public final class MonthCalendar
10
{
11
    /** */
12
    private MonthCalendar()
13
    {
14
    }
15
 
16
    //-------------------------------------------------------------------------------
17
    /** */
18
    public static final int       SUNDAY    = 1;
19
 
20
    /** */
21
    public static final int       MONDAY    = 2;
22
 
23
    /** */
24
    public static final int       TUESDAY   = 3;
25
 
26
    /** */
27
    public static final int       WEDNESDAY = 4;
28
 
29
    /** */
30
    public static final int       THURSDAY  = 5;
31
 
32
    /** */
33
    public static final int       FRIDAY    = 6;
34
 
35
    /** */
36
    public static final int       SATURDAY  = 7;
37
 
38
    //-------------------------------------------------------------------------------
39
    /** Mois ( indice : 1 à 12 ) (fr_FR)*/
40
    private static final String[] AMONTHSFR = {"???", /* Indice 0 */
41
                                            "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août",
42
            "Septembre", "Octobre", "Novembre", "Décembre"};
43
 
44
    /** Mois ( indice : 1 à 12 ) (en_UK)*/
45
    private static final String[] AMONTHSEN = {"???", /* Indice 0 */
46
                                            "January", "February", "March", "April", "May", "June", "July", "August",
47
            "September", "October", "November", "December"};
48
 
49
    /** Jours ( indice : 1 à 7 ) (fr_FR)*/
50
    private static final String[] ADAYSFR   = {"???", /* Indice 0 */
51
                                            "Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"};
52
 
53
    /** Jours ( indice : 1 à 7 ) (en_UK)*/
54
    private static final String[] ADAYSEN   = {"???", /* Indice 0 */
55
                                            "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday",
56
            "Saturday"                      };
57
 
58
    /**
59
     private final static int $aDaysNum[] = {
60
     Calendar.MONDAY, Calendar.TUESDAY, Calendar.WEDNESDAY, Calendar.THURSDAY, Calendar.FRIDAY, Calendar.SATURDAY, Calendar.SUNDAY } ;
61
     **/
62
 
63
    //-------------------------------------------------------------------------------
64
    /**
65
     * @param iMonth :
66
     * @return String :
67
     */
68
    public static String getMonthName(final int iMonth)
69
    {
70
        return getMonthName(iMonth, "EN");
71
    }
72
 
73
    //-------------------------------------------------------------------------------
74
    /**
75
     * @param iMonth :
76
     * @param sLang :
77
     * @return String :
78
     */
79
    public static String getMonthName(final int iMonth, final String sLang)
80
    {
81
        //int iMonth = iMonthStd - 1 ;
82
        if (iMonth >= 1 && iMonth <= 12)
83
        {
84
            if (sLang.toUpperCase().equals("FR"))
85
            {
86
                return AMONTHSFR[iMonth];
87
            }
88
            else
89
            {
90
                return AMONTHSEN[iMonth];
91
            }
92
        }
93
        else
94
        {
95
            return "???";
96
        }
97
    }
98
 
99
    //-------------------------------------------------------------------------------
100
    /**
101
     * @param iDay :
102
     * @return String :
103
     */
104
    public static String getDayName(final int iDay)
105
    {
106
        return getDayName(iDay, "EN");
107
    }
108
 
109
    //-------------------------------------------------------------------------------
110
    /**
111
     * @param iDay :
112
     * @param sLang :
113
     * @return String :
114
     */
115
    public static String getDayName(final int iDay, final String sLang)
116
    {
117
        if (iDay >= 1 && iDay <= 7)
118
        {
119
            if (sLang.toUpperCase().equals("FR"))
120
            {
121
                return ADAYSFR[iDay];
122
            }
123
            else
124
            {
125
                return ADAYSEN[iDay];
126
            }
127
        }
128
        else
129
        {
130
            return "???";
131
        }
132
    }
133
 
134
    //-------------------------------------------------------------------------------
135
    /**
136
     * @param iMonthStd :
137
     * @param iYear :
138
     * @param iFirstDayOfWeek :
139
     * @return int[][] :
140
     */
141
    public static int[][] getCalMonth(final int iMonthStd, final int iYear, final int iFirstDayOfWeek)
142
    {
143
        int iCol = 0;
144
        int iLig = 0;
145
        int[][] cal = new int[7][7]; // 7 colonnes ( 1 par jour ) + 7 lignes ( 1 ligne de no de jours + 6 semaines  )
146
 
147
        Calendar calendar = Calendar.getInstance();
148
        int iMonth = iMonthStd - 1; // Dans le calendrier le mois va de 0 à 11
149
        calendar.set(iYear, iMonth, 1); // Premier jour du mois demandé
150
 
151
        //--- Ligne 0 : numeros des NOMS DES JOURS
152
        iCol = 0;
153
        for (int iJour = iFirstDayOfWeek; iJour <= 7; iJour++)
154
        {
155
            cal[0][iCol++] = iJour;
156
        }
157
        for (int iJour = 1; iJour < iFirstDayOfWeek; iJour++)
158
        {
159
            cal[0][iCol++] = iJour;
160
        }
161
 
162
        //--- Lignes 1 a 6 : numeros des JOURS DANS LE MOIS
163
        iCol = 0;
164
        iLig = 1;
165
        do
166
        {
167
            if (calendar.get(Calendar.DAY_OF_MONTH) == 1) //--- 1er Jour du mois
168
            {
169
                //--- 0 à N cases vides avant le premier jour
170
                int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
171
                int delta = 0;
172
                if (dayOfWeek > iFirstDayOfWeek)
173
                {
174
                    delta = (dayOfWeek - iFirstDayOfWeek);
175
                }
176
                if (dayOfWeek < iFirstDayOfWeek)
177
                {
178
                    delta = 7 - (iFirstDayOfWeek - dayOfWeek);
179
                }
180
                for (int iVoid = 0; iVoid < delta; iVoid++)
181
                {
182
                    cal[iLig][iCol++] = 0; // VOID
183
                }
184
            }
185
            //--- Case contenant le jour du calendier
186
            cal[iLig][iCol++] = calendar.get(Calendar.DAY_OF_MONTH); // JOUR DANS LE MOIS
187
 
188
            if (iCol == 7) // Après la colonne 7
189
            {
190
                //--- Changement de ligne
191
                iLig++;
192
                iCol = 0;
193
            }
194
            //--- Jour suivant dans le calendrier
195
            calendar.add(Calendar.DAY_OF_MONTH, +1);
196
        }
197
        while (calendar.get(Calendar.MONTH) == iMonth);
198
 
199
        //--- Complément sur la dernière ligne
200
        while (iCol < 7)
201
        {
202
            cal[iLig][iCol++] = 0; // VOID
203
        }
204
        return cal;
205
    }
206
    //-------------------------------------------------------------------------------
207
 
208
}