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
;
}
}