Subversion Repositories bacoAlunos

Rev

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

package pt.estgp.estgweb.services.courseunits;

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

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

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

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

        Student t = DaoFactory.getStudentDaoImpl().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().loadSubscribedImportYearSemestreUnits(t.getId(), DatesUtils.getImportYear(),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;
    }
}