net.sourceforge.fenixedu.dataTransferObject.InfoExam.java Source code

Java tutorial

Introduction

Here is the source code for net.sourceforge.fenixedu.dataTransferObject.InfoExam.java

Source

/**
 * Copyright  2002 Instituto Superior Tcnico
 *
 * This file is part of FenixEdu Core.
 *
 * FenixEdu Core is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * FenixEdu Core is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with FenixEdu Core.  If not, see <http://www.gnu.org/licenses/>.
 */
/*
 * InfoExam.java
 * 
 * Created on 2003/03/19
 */
package net.sourceforge.fenixedu.dataTransferObject;

/**
 * @author Luis Cruz & Sara Ribeiro
 */
import java.util.Calendar;
import java.util.List;

import net.sourceforge.fenixedu.domain.Exam;
import net.sourceforge.fenixedu.util.DiaSemana;
import net.sourceforge.fenixedu.util.EvaluationType;
import net.sourceforge.fenixedu.util.Season;

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Transformer;

public class InfoExam extends InfoWrittenEvaluation implements ISiteComponent {

    protected Season season;
    private List infoExecutionCourses;

    /**
     * The following variable serves the purpose of indicating the execution
     * course associated with this exam through which the exam was obtained. It
     * should serve only for view purposes!!! It was created to be used and set
     * by the ExamsMap Utilities. It has no meaning in the business logic.
     */
    private InfoExecutionCourse infoExecutionCourse;

    public InfoExam() {
    }

    public InfoExam(Calendar day, Calendar beginning, Calendar end, Season season) {
        this.setDay(day);
        this.setBeginning(beginning);
        this.setEnd(end);
        this.setSeason(season);

    }

    @Override
    public String toString() {
        return "[INFOEXAM:" + " day= '" + this.getDay() + "'" + " beginning= '" + this.getBeginning() + "'"
                + " end= '" + this.getEnd() + "'" + " season= '" + this.getSeason() + "'" + "";
    }

    public Season getSeason() {
        return season;
    }

    public void setSeason(Season season) {
        this.season = season;
    }

    public InfoExecutionCourse getInfoExecutionCourse() {
        return infoExecutionCourse;
    }

    public void setInfoExecutionCourse(InfoExecutionCourse course) {
        infoExecutionCourse = course;
    }

    public List getAssociatedRooms() {
        return (List) CollectionUtils.collect(super.getWrittenEvaluationSpaceOccupations(), new Transformer() {

            @Override
            public Object transform(Object arg0) {
                InfoRoomOccupation roomOccupation = (InfoRoomOccupation) arg0;
                return roomOccupation.getInfoRoom();
            }
        });
    }

    public String getDate() {
        if (getDay() == null) {
            return "0/0/0";
        }
        String result = String.valueOf(getDay().get(Calendar.DAY_OF_MONTH));
        result += "/";
        result += String.valueOf(getDay().get(Calendar.MONTH) + 1);
        result += "/";
        result += String.valueOf(getDay().get(Calendar.YEAR));
        return result;
    }

    public String getBeginningHour() {
        if (getBeginning() == null) {
            return "00:00";
        }
        String result = format(String.valueOf(getBeginning().get(Calendar.HOUR_OF_DAY)));
        result += ":";
        result += format(String.valueOf(getBeginning().get(Calendar.MINUTE)));
        return result;
    }

    public String getEndHour() {
        if (getEnd() == null) {
            return "00:00";
        }
        String result = format(String.valueOf(getEnd().get(Calendar.HOUR_OF_DAY)));
        result += ":";
        result += format(String.valueOf(getEnd().get(Calendar.MINUTE)));
        return result;
    }

    private String format(String string) {
        if (string.length() == 1) {
            string = "0" + string;
        }
        return string;
    }

    public String dateFormatter(Calendar calendar) {
        String result = "";
        if (calendar != null) {
            result += calendar.get(Calendar.DAY_OF_MONTH);
            result += "/";
            result += calendar.get(Calendar.MONTH) + 1;
            result += "/";
            result += calendar.get(Calendar.YEAR);
        }
        return result;
    }

    public String timeFormatter(Calendar calendar) {
        String result = "";
        if (calendar != null) {
            result += calendar.get(Calendar.HOUR_OF_DAY);
            result += ":";
            if (calendar.get(Calendar.MINUTE) < 10) {
                result += "0";
                result += calendar.get(Calendar.MINUTE);
            } else {
                result += calendar.get(Calendar.MINUTE);
            }
        }
        return result;
    }

    public String getEnrollmentBeginDayFormatted() {
        return dateFormatter(getEnrollmentBeginDay());
    }

    public String getEnrollmentEndDayFormatted() {
        return dateFormatter(getEnrollmentEndDay());
    }

    public String getEnrollmentBeginTimeFormatted() {
        return timeFormatter(getEnrollmentBeginTime());
    }

    public String getEnrollmentEndTimeFormatted() {
        return timeFormatter(getEnrollmentEndTime());
    }

    public boolean getEnrollmentAuthorization() {
        if (getEnrollmentEndDay() == null) {
            return false;
        }
        Calendar enrollmentEnd = Calendar.getInstance();
        enrollmentEnd.set(Calendar.DAY_OF_MONTH, getEnrollmentEndDay().get(Calendar.DAY_OF_MONTH));
        enrollmentEnd.set(Calendar.MONTH, getEnrollmentEndDay().get(Calendar.MONTH));
        enrollmentEnd.set(Calendar.YEAR, getEnrollmentEndDay().get(Calendar.YEAR));
        enrollmentEnd.set(Calendar.HOUR_OF_DAY, getEnrollmentEndTime().get(Calendar.HOUR_OF_DAY));
        enrollmentEnd.set(Calendar.MINUTE, getEnrollmentEndTime().get(Calendar.MINUTE));
        Calendar now = Calendar.getInstance();
        if (enrollmentEnd.getTimeInMillis() > now.getTimeInMillis()) {
            return true;
        }
        return false;

    }

    @Override
    public boolean equals(Object obj) {
        boolean result = false;
        if (obj instanceof InfoExam) {
            InfoExam infoExam = (InfoExam) obj;
            result = getExternalId().equals(infoExam.getExternalId()) && getDate().equals(infoExam.getDate())
                    && getEnrollmentBeginDayFormatted().equals(infoExam.getEnrollmentBeginDayFormatted())
                    && getEnrollmentBeginTimeFormatted().equals(infoExam.getEnrollmentBeginTimeFormatted())
                    && getEnrollmentEndDayFormatted().equals(infoExam.getEnrollmentEndDayFormatted())
                    && getEnrollmentEndTimeFormatted().equals(infoExam.getEnrollmentEndTimeFormatted());
        }
        return result;
    }

    @Override
    public DiaSemana getDiaSemana() {
        Calendar day = this.getDay();
        return new DiaSemana(day.get(Calendar.DAY_OF_WEEK));
    }

    public List getInfoExecutionCourses() {
        return infoExecutionCourses;
    }

    public void setInfoExecutionCourses(List infoExecutionCourses) {
        this.infoExecutionCourses = infoExecutionCourses;
    }

    public void copyFromDomain(Exam exam) {
        super.copyFromDomain(exam);
        if (exam != null) {
            setSeason(exam.getSeason());
            setEvaluationType(EvaluationType.EXAM_TYPE);
        }
    }

    public static InfoExam newInfoFromDomain(Exam exam) {
        InfoExam infoExam = null;
        if (exam != null) {
            infoExam = new InfoExam();
            infoExam.copyFromDomain(exam);
        }
        return infoExam;
    }
}