OW2 Consortium telosys

Rev

Blame | Last modification | View Log | RSS feed

package org.objectweb.telosys.util;

import java.util.Calendar;

/**
 * @author Laurent GUERIN
 *
 */
public final class MonthCalendar
{
    /** */
    private MonthCalendar()
    {
    }

    //-------------------------------------------------------------------------------
    /** */
    public static final int       SUNDAY    = 1;

    /** */
    public static final int       MONDAY    = 2;

    /** */
    public static final int       TUESDAY   = 3;

    /** */
    public static final int       WEDNESDAY = 4;

    /** */
    public static final int       THURSDAY  = 5;

    /** */
    public static final int       FRIDAY    = 6;

    /** */
    public static final int       SATURDAY  = 7;

    //-------------------------------------------------------------------------------
    /** Mois ( indice : 1 à 12 ) (fr_FR)*/
    private static final String[] AMONTHSFR = {"???", /* Indice 0 */
                                            "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août",
            "Septembre", "Octobre", "Novembre", "Décembre"};

    /** Mois ( indice : 1 à 12 ) (en_UK)*/
    private static final String[] AMONTHSEN = {"???", /* Indice 0 */
                                            "January", "February", "March", "April", "May", "June", "July", "August",
            "September", "October", "November", "December"};

    /** Jours ( indice : 1 à 7 ) (fr_FR)*/
    private static final String[] ADAYSFR   = {"???", /* Indice 0 */
                                            "Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"};

    /** Jours ( indice : 1 à 7 ) (en_UK)*/
    private static final String[] ADAYSEN   = {"???", /* Indice 0 */
                                            "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday",
            "Saturday"                      };

    /**
     private final static int $aDaysNum[] = { 
     Calendar.MONDAY, Calendar.TUESDAY, Calendar.WEDNESDAY, Calendar.THURSDAY, Calendar.FRIDAY, Calendar.SATURDAY, Calendar.SUNDAY } ;
     **/

    //-------------------------------------------------------------------------------
    /**
     * @param iMonth :
     * @return String :
     */
    public static String getMonthName(final int iMonth)
    {
        return getMonthName(iMonth, "EN");
    }

    //-------------------------------------------------------------------------------
    /**
     * @param iMonth :
     * @param sLang :
     * @return String :
     */
    public static String getMonthName(final int iMonth, final String sLang)
    {
        //int iMonth = iMonthStd - 1 ;
        if (iMonth >= 1 && iMonth <= 12)
        {
            if (sLang.toUpperCase().equals("FR"))
            {
                return AMONTHSFR[iMonth];
            }
            else
            {
                return AMONTHSEN[iMonth];
            }
        }
        else
        {
            return "???";
        }
    }

    //-------------------------------------------------------------------------------
    /**
     * @param iDay :
     * @return String :
     */
    public static String getDayName(final int iDay)
    {
        return getDayName(iDay, "EN");
    }

    //-------------------------------------------------------------------------------
    /**
     * @param iDay :
     * @param sLang :
     * @return String :
     */
    public static String getDayName(final int iDay, final String sLang)
    {
        if (iDay >= 1 && iDay <= 7)
        {
            if (sLang.toUpperCase().equals("FR"))
            {
                return ADAYSFR[iDay];
            }
            else
            {
                return ADAYSEN[iDay];
            }
        }
        else
        {
            return "???";
        }
    }

    //-------------------------------------------------------------------------------
    /**
     * @param iMonthStd :
     * @param iYear :
     * @param iFirstDayOfWeek :
     * @return int[][] :
     */
    public static int[][] getCalMonth(final int iMonthStd, final int iYear, final int iFirstDayOfWeek)
    {
        int iCol = 0;
        int iLig = 0;
        int[][] cal = new int[7][7]; // 7 colonnes ( 1 par jour ) + 7 lignes ( 1 ligne de no de jours + 6 semaines  )

        Calendar calendar = Calendar.getInstance();
        int iMonth = iMonthStd - 1; // Dans le calendrier le mois va de 0 à 11
        calendar.set(iYear, iMonth, 1); // Premier jour du mois demandé

        //--- Ligne 0 : numeros des NOMS DES JOURS 
        iCol = 0;
        for (int iJour = iFirstDayOfWeek; iJour <= 7; iJour++)
        {
            cal[0][iCol++] = iJour;
        }
        for (int iJour = 1; iJour < iFirstDayOfWeek; iJour++)
        {
            cal[0][iCol++] = iJour;
        }

        //--- Lignes 1 a 6 : numeros des JOURS DANS LE MOIS 
        iCol = 0;
        iLig = 1;
        do
        {
            if (calendar.get(Calendar.DAY_OF_MONTH) == 1) //--- 1er Jour du mois
            {
                //--- 0 à N cases vides avant le premier jour 
                int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
                int delta = 0;
                if (dayOfWeek > iFirstDayOfWeek)
                {
                    delta = (dayOfWeek - iFirstDayOfWeek);
                }
                if (dayOfWeek < iFirstDayOfWeek)
                {
                    delta = 7 - (iFirstDayOfWeek - dayOfWeek);
                }
                for (int iVoid = 0; iVoid < delta; iVoid++)
                {
                    cal[iLig][iCol++] = 0; // VOID  
                }
            }
            //--- Case contenant le jour du calendier
            cal[iLig][iCol++] = calendar.get(Calendar.DAY_OF_MONTH); // JOUR DANS LE MOIS

            if (iCol == 7) // Après la colonne 7
            {
                //--- Changement de ligne
                iLig++;
                iCol = 0;
            }
            //--- Jour suivant dans le calendrier 
            calendar.add(Calendar.DAY_OF_MONTH, +1);
        }
        while (calendar.get(Calendar.MONTH) == iMonth);

        //--- Complément sur la dernière ligne
        while (iCol < 7)
        {
            cal[iLig][iCol++] = 0; // VOID
        }
        return cal;
    }
    //-------------------------------------------------------------------------------

}

Generated by GNU enscript 1.6.4.