Subversion Repositories bacoAlunos

Rev

Rev 995 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.services.courseunits;

import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.Announcement;
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.Teacher;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.views.AnnouncementView;
import pt.estgp.estgweb.services.courseunits.impl.DefaultCourseUnitAnnouncements;
import pt.estgp.estgweb.utils.DatesUtils;
import pt.utl.ist.berserk.logic.serviceManager.IService;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Jorge Machado
 * @date 2/Jun/2008
 * @see pt.estgp.estgweb.services.courseunits
 */

public class LoadTeachedUnitsAnnouncementsService implements IService
{
    public List<ICourseUnitAnnouncements> run(UserSession userSession)
    {
        List<ICourseUnitAnnouncements> courseUnitAnnouncementsLst = new ArrayList<ICourseUnitAnnouncements>();
        if(!(userSession.getUser() instanceof Teacher))
            return courseUnitAnnouncementsLst;

        Teacher t = DaoFactory.getTeacherDaoImpl().load(userSession.getUser().getId());

        DatesUtils.SemestreModerate semestreModerate = DatesUtils.getSemestreModerate();
        1.5.0/docs/api/java/lang/String.html">String semestre = null;
        if(semestreModerate == DatesUtils.SemestreModerate.S1)
            semestre = "S1";
        else if(semestreModerate == DatesUtils.SemestreModerate.S2)
            semestre = "S2";

        List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadTeachedImportYearSemestreUnits(t.getId(), DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear(),semestre);


        if(units == null)
            return courseUnitAnnouncementsLst;
        for(CourseUnit c: units)
        {
            List<Announcement> announcements = DaoFactory.getCourseUnitAnnouncementDaoImpl().loadLastAnnouncements(c.getId(),Globals.HOME_MAX_COURSE_UNIT_ANNOUNCEMENTS,Globals.HOME_COURSE_UNIT_ANNOUNCEMENTS_EXPIRED_DAYS);
            if(announcements != null && announcements.size()>0)
            {
                DefaultCourseUnitAnnouncements courseUnitAnnouncements = new DefaultCourseUnitAnnouncements();
                courseUnitAnnouncements.setCourseUnit(c);
                List<AnnouncementView> announcementViews = new ArrayList<AnnouncementView>();
                for(Announcement a :announcements)
                {
                     if(announcementViews.size() > Globals.HOME_MAX_COURSE_UNIT_ANNOUNCEMENTS)
                        break;
                    AnnouncementView aV = new AnnouncementView(a);
                    announcementViews.add(aV);
                }
                courseUnitAnnouncements.setAnnouncements(announcementViews);
                courseUnitAnnouncementsLst.add(courseUnitAnnouncements);
            }
        }
        return courseUnitAnnouncementsLst;
    }
}