/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package net.paulgray.bbrest.announcement;
import blackboard.persist.Id;
import blackboard.persist.PersistenceException;
import blackboard.persist.announcement.AnnouncementDbLoader;
import net.paulgray.bbrest.BlackboardUtilities;
import net.paulgray.lmsrest.announcement.Announcement;
import net.paulgray.lmsrest.announcement.AnnouncementService;
import net.paulgray.lmsrest.course.Course;
import net.paulgray.lmsrest.user.User;
import java.util.LinkedList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.paulgray.bbrest.course.BbCourseService;
import net.paulgray.bbrest.course.LocalCachedBbCourseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
*
* @author pfgray
*/
@Service
public class BbAnnouncementService implements AnnouncementService {
/**
* Controls the amount of days to look back for announcements
*/
public static int DAYS_BACK = 31;
@Autowired
BbCourseService bbCourseService;
public List<Announcement> getAnnouncementsForUser(User user) {
try {
AnnouncementDbLoader announcementDbLoader = AnnouncementDbLoader.Default.getInstance();
List<blackboard.data.announcement.Announcement> announcements = announcementDbLoader.loadAvailableByUserId(BlackboardUtilities.getIdFromPk(user.getId(), blackboard.data.user.User.class));
List<Announcement> toReturn = new LinkedList<Announcement>();
LocalCachedBbCourseService courseService = new LocalCachedBbCourseService(bbCourseService);
for (blackboard.data.announcement.Announcement a : announcements) {
toReturn.add(new BbAnnouncement(a, courseService.getCourseForId(a.getId().getExternalString())));
}
return toReturn;
} catch (PersistenceException ex) {
Logger.getLogger(BbAnnouncementService.class.getName()).log(Level.SEVERE, null, ex);
return new LinkedList<Announcement>();
}
}
public List<Announcement> getAnnouncementsForCourseAndUser(Course course, User user) {
try {
AnnouncementDbLoader announcementDbLoader = AnnouncementDbLoader.Default.getInstance();
Id courseId = BlackboardUtilities.getIdFromPk(course.getId(), blackboard.data.course.Course.class);
Id userId = BlackboardUtilities.getIdFromPk(user.getId(), blackboard.data.user.User.class);
List<blackboard.data.announcement.Announcement> announcements = announcementDbLoader.loadAvailableByCourseIdAndUserId(courseId, userId, DAYS_BACK, true);
List<Announcement> toReturn = new LinkedList<Announcement>();
for (blackboard.data.announcement.Announcement a : announcements) {
toReturn.add(new BbAnnouncement(a, course));
}
return toReturn;
} catch (PersistenceException ex) {
Logger.getLogger(BbAnnouncementService.class.getName()).log(Level.SEVERE, null, ex);
return new LinkedList<Announcement>();
}
}
public List<Announcement> getAnnouncementsForCourse(Course course) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
public Announcement getAnnouncementForId(String id) {
try {
AnnouncementDbLoader announcementDbLoader = AnnouncementDbLoader.Default.getInstance();
blackboard.data.announcement.Announcement a = announcementDbLoader.loadById(BlackboardUtilities.getIdFromPk(id, blackboard.data.announcement.Announcement.class));
return new BbAnnouncement(a, bbCourseService.getCourseForId(id));
} catch (PersistenceException ex) {
Logger.getLogger(BbAnnouncementService.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
}
}