/*
* 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.builder;
import blackboard.data.discussionboard.Conference;
import blackboard.data.discussionboard.Forum;
import blackboard.data.gradebook.Lineitem;
import blackboard.persist.Id;
import blackboard.persist.PersistenceException;
import blackboard.persist.discussionboard.ConferenceDbLoader;
import blackboard.persist.discussionboard.ForumDbLoader;
import java.util.LinkedList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.paulgray.bbrest.assignment.BbAssignment;
import net.paulgray.lmsrest.course.Course;
/**
*
* @author paul
*/
public class DiscussionAssignmentBuilder implements BbAssignmentFactory {
private List<Forum> forums;
public DiscussionAssignmentBuilder(Id courseId){
try {
this.forums = new LinkedList<Forum>();
ForumDbLoader forumDbLoader = ForumDbLoader.Default.getInstance();
ConferenceDbLoader conferenceDbLoader = ConferenceDbLoader.Default.getInstance();
List<Conference> conferences = conferenceDbLoader.loadAllByCourseId(courseId);
for (Conference conference : conferences) {
List<Forum> forums = forumDbLoader.loadByConferenceId(conference.getId());
for (Forum forum : forums) {
this.forums.add(forum);
}
}
} catch (PersistenceException ex) {
Logger.getLogger(DiscussionAssignmentBuilder.class.getName()).log(Level.SEVERE, null, ex);
}
}
public BbAssignment getBbAssignment(Lineitem lineitem, Course course) {
System.out.println("****Calling BbAssignmentBuilder ");
//if it's a discussion Assignment, get the link for the outcome definition's link id, and somehow attach the description to that!
if(lineitem.getAssessmentId() != null){
System.out.println("****AssessmentId was not null...");
for(Forum forum : forums){
if( forum.getProperties() != null
&& forum.getDescription() != null
&& forum.getProperties().getForumGradeLineitemPk() != null
&& forum.getProperties().getForumGradeLineitemPk().equals(lineitem.getAssessmentId())){
//this is it, the the description!
String description = forum.getDescription().getText() != null ? forum.getDescription().getText() : forum.getDescription().getFormattedText();
System.out.println("****Description found: " + description);
return new BbAssignment(lineitem, course, description);
}
}
return new BbAssignment(lineitem, course, null);
} else {
return new BbAssignment(lineitem, course, null);
}
}
}