/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package net.paulgray.bbrest.assignment; import blackboard.data.gradebook.Lineitem; import blackboard.data.gradebook.impl.OutcomeDefinitionCategory; import blackboard.persist.Id; import blackboard.persist.PersistenceException; import blackboard.persist.gradebook.LineitemDbLoader; import java.util.Arrays; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import net.paulgray.bbrest.BlackboardUtilities; import net.paulgray.bbrest.assignment.builder.BbAssignmentBuilder; import net.paulgray.bbrest.assignment.builder.BbAssignmentFactory; import net.paulgray.bbrest.assignment.builder.DefaultAssignmentBuilder; import net.paulgray.bbrest.assignment.builder.DiscussionAssignmentBuilder; import net.paulgray.bbrest.course.BbCourseService; import net.paulgray.bbrest.discussion.BbDiscussionService; import net.paulgray.lmsrest.assignment.AssignmentService; import net.paulgray.lmsrest.course.Course; import net.paulgray.lmsrest.user.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.AccessDeniedException; import org.springframework.stereotype.Service; /** * * @author paul */ @Service public class BbAssignmentService implements AssignmentService<BbAssignment> { @Autowired BbCourseService bbCourseService; @Autowired BbDiscussionService bbDiscussionService; public static final List<String> acceptedAssignmentTypes = Arrays.asList(OutcomeDefinitionCategory.ASSIGNMENT, OutcomeDefinitionCategory.BLOG, OutcomeDefinitionCategory.DISCUSSION, OutcomeDefinitionCategory.ESSAY, OutcomeDefinitionCategory.EXAM, OutcomeDefinitionCategory.EXTRA_CREDIT, OutcomeDefinitionCategory.FINAL_EXAM, OutcomeDefinitionCategory.GROUP_PROJECT, OutcomeDefinitionCategory.HOMEWORK, OutcomeDefinitionCategory.JOURNAL, OutcomeDefinitionCategory.LAB, OutcomeDefinitionCategory.MIDTERM_EXAM, OutcomeDefinitionCategory.OTHER, OutcomeDefinitionCategory.PAPER, OutcomeDefinitionCategory.PRESENTATION, OutcomeDefinitionCategory.PROBLEM_SET, OutcomeDefinitionCategory.WIKI, OutcomeDefinitionCategory.TEST, OutcomeDefinitionCategory.SURVEY, OutcomeDefinitionCategory.SCORM, OutcomeDefinitionCategory.RESOURCE_BUNDLE, OutcomeDefinitionCategory.QUIZ); { for (int i = 0; i < acceptedAssignmentTypes.size(); i++) { acceptedAssignmentTypes.set(i, acceptedAssignmentTypes.get(i).replaceAll("\\.name", "")); } } public List<BbAssignment> getAssignments(User user, String courseFilter) { List<BbAssignment> toReturn = new LinkedList<BbAssignment>(); List<Course> courses = bbCourseService.getCoursesForUser(user, courseFilter); for (Course course : courses) { toReturn.addAll(this.getAssignments(user, course)); } return toReturn; } public List<BbAssignment> getAssignments(User user, Course course) { try { if (!BbCourseService.currentUserCanViewCourse(course.getId())) { throw new AccessDeniedException("User cannot view course: " + course.getId()); } // LineitemDbLoader lineItemDbLoader = LineitemDbLoader.Default.getInstance(); // List<Lineitem> lineitems = lineItemDbLoader.loadByCourseId(BlackboardUtilities.getIdFromPk(course.getId(), blackboard.data.course.Course.class)); // ContentDbLoader contentDbLoader = ContentDbLoader.Default.getInstance(); // ScoreDbLoader scoreDbLoader = ScoreDbLoader.Default.getInstance(); LineitemDbLoader lineitemDbLoader = LineitemDbLoader.Default.getInstance(); // OutcomeDefinitionDbLoader outcomeDefinitionDbLoader = OutcomeDefinitionDbLoader.Default.getInstance(); // List<OutcomeDefinition> outcomeDefinitions = outcomeDefinitionDbLoader.loadByCourseId(BlackboardUtilities.getIdFromPk(course.getId(), blackboard.data.course.Course.class)); // List<OutcomeDefinition> ods = new LinkedList<OutcomeDefinition>(); Id courseId = BlackboardUtilities.getIdFromPk(course.getId(), blackboard.data.course.Course.class); List<Lineitem> lineitems = lineitemDbLoader.loadByCourseId(courseId); List<BbAssignment> toReturn = new LinkedList<BbAssignment>(); Map<String, BbAssignmentFactory> assignmentBuilders = new HashMap<String, BbAssignmentFactory>(); assignmentBuilders.put(OutcomeDefinitionCategory.ASSIGNMENT.replaceAll("\\.name", ""), new BbAssignmentBuilder()); assignmentBuilders.put(OutcomeDefinitionCategory.DISCUSSION.replaceAll("\\.name", ""), new DiscussionAssignmentBuilder(courseId)); for (Lineitem li : lineitems) { if (li != null && li.getIsAvailable() && acceptedAssignmentTypes.contains(li.getOutcomeDefinition().getCategory().getTitle())) { System.out.println("****checking factories for: " + li.getOutcomeDefinition().getCategory().getTitle()); BbAssignmentFactory factory = assignmentBuilders.get(li.getOutcomeDefinition().getCategory().getTitle()); if (factory == null) { System.out.println("****factory not found"); factory = new DefaultAssignmentBuilder(); } toReturn.add(factory.getBbAssignment(li, course)); } } return toReturn; } catch (PersistenceException ex) { return null; } } public BbAssignment getAssignment(String id) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } }