package beans;

import static beans.DayInterval.*;

/**
 * Implemented as a singleton
 *
 * @author MACHIZAUD Andréa
 * @version 1.0 05/04/11
 */
public class EmploiDuTemps {
    private static final java.util.logging.Logger logger =
            java.util.logging.Logger.getLogger(EmploiDuTemps.class.getCanonicalName());

    public EmploiDuTemps() {
    }

    //A list of all day
    private static final String[] dayLabels = new String[]{
            "Lundi",
            "Mardi",
            "Mercredi",
            "Jeudi",
            "Vendredi"
    };



    //class attribute which maintains the state of the week
    private DayInterval[] days = buildWeek();
    private int[] dayHours = buildDayIntervals();

    //factory method
    private static DayInterval[] buildWeek() {
        DayInterval[] week = new DayInterval[(dayEnd - dayBeginning) / timeStep];
        for (int i = 0,hour = DayInterval.dayBeginning; i < week.length; hour += DayInterval.timeStep, i++)
            week[i] = DayInterval(hour,new String[5]);
        return week;
    }
    private static int[] buildDayIntervals() {
        int[] intervals = new int[(dayEnd - dayBeginning) / timeStep];
        logger.info("Interval length : " + intervals.length);
        for (int i = 0, hour = DayInterval.dayBeginning; i < intervals.length; hour += DayInterval.timeStep, i++) {
            logger.info("Index : " + i + ", hour : " + hour);
            intervals[i] = hour;
        }
        return intervals;
    }

    //Getters - return a copy when possible

    public String[] getDayLabels() {
        return dayLabels;
    }

    public DayInterval[] getWeek() {
        return days.clone();
    }

    public String[] getDayHours(){
        String[] labels = new String[dayHours.length];
        for(int i = 0; i < labels.length;i++)
            labels[i] = DayInterval.parseMinutes2HourLabel(dayHours[i]);
        return labels;
    }

    public void addCourse(String topic, int dayIndex, int debutIndex, int finIndex) {
        for(int i = debutIndex;i <= finIndex;i++)
           days[i].setContent(dayIndex,topic);
    }
}
