/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package net.paulgray.bbrest.course; import blackboard.persist.Id; import blackboard.persist.PersistenceException; import blackboard.persist.course.CourseDbLoader; import blackboard.platform.security.Entitlement; import blackboard.platform.security.SecurityUtil; import net.paulgray.bbrest.BlackboardUtilities; import net.paulgray.lmsrest.course.Course; import net.paulgray.lmsrest.course.CourseService; 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.discussion.BbDiscussionBoard; import net.paulgray.bbrest.discussion.BbDiscussionService; import net.paulgray.lmsrest.discussion.DiscussionBoard; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.context.SecurityContextHolder; /** * * @author pfgray */ public class BbCourseService implements CourseService { @Autowired BbDiscussionService bbDiscussionService; @Override public Course getCourseForId(String id) { try { CourseDbLoader courseDbLoader = CourseDbLoader.Default.getInstance(); return new BbCourse(courseDbLoader.loadById(BlackboardUtilities.getIdFromPk(id, blackboard.data.course.Course.class))); } catch (PersistenceException ex) { Logger.getLogger(BbCourseService.class.getName()).log(Level.SEVERE, null, ex); return null; } } @Override public List<Course> getCoursesForUser(User user, String courseFilter) { try { CourseDbLoader courseDbLoader = CourseDbLoader.Default.getInstance(); List<blackboard.data.course.Course> courses = courseDbLoader.loadByUserId(BlackboardUtilities.getIdFromPk(user.getId(), blackboard.data.user.User.class)); List<Course> toReturn = new LinkedList<Course>(); for (blackboard.data.course.Course course : courses) { if (course.getId() != null && course.getCourseId().contains(courseFilter)) { BbCourse bbCourse = new BbCourse(course, BlackboardUtilities.getIdFromPk(user.getId(), blackboard.data.user.User.class)); List<DiscussionBoard> dbs = bbDiscussionService.getDiscussionBoardsForCourseAndUser(bbCourse, user); for (DiscussionBoard db : dbs) { bbCourse.unread_discussion_count = bbCourse.unread_discussion_count + ((BbDiscussionBoard) db).getUnread_messages(); } toReturn.add(bbCourse); } } return toReturn; } catch (PersistenceException ex) { Logger.getLogger(BbCourseService.class.getName()).log(Level.SEVERE, null, ex); return null; } } public static Boolean currentUserCanViewCourse(String courseId) { User user = (User) SecurityContextHolder.getContext().getAuthentication().getDetails(); Id userPk = BlackboardUtilities.getIdFromPk(user.getId(), blackboard.data.user.User.class); Id coursePk = BlackboardUtilities.getIdFromPk(courseId, blackboard.data.course.Course.class); if (!SecurityUtil.userHasEntitlement(userPk, coursePk, new Entitlement("course.VIEW"))) { return false; } else { return true; } } /* public List<Course> getCoursesByCourseSearch(User user, String courseFilter, int page, int pageSize){ try { CourseDbLoader courseDbLoader = CourseDbLoader.Default.getInstance(); List<blackboard.data.course.Course> courses = courseDbLoader.loadByUserId(BlackboardUtilities.getIdFromPk(user.getId(), blackboard.data.user.User.class)); CourseSearch cs = new CourseSearch(page, pageSize, null, null); cs.addSearchParameter(new CourseSearch.SearchParameter(CourseSearch.SearchKey.CourseId, courseFilter, SearchOperator.In)); cs.addSearchParameter(new CourseSearch.SearchParameter(CourseSearch.SearchKey.CourseId, courseFilter, SearchOperator.In)); List<Course> toReturn = new LinkedList<Course>(); for(blackboard.data.course.Course course : courses){ toReturn.add(new BbCourse(course, BlackboardUtilities.getIdFromPk(user.getId(), blackboard.data.user.User.class))); } return toReturn; } catch (PersistenceException ex) { Logger.getLogger(BbCourseService.class.getName()).log(Level.SEVERE, null, ex); return null; } } */ }