# 成绩中心

相关import

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import blackboard.data.ValidationException;
import blackboard.data.course.Course;
import blackboard.data.course.CourseMembership;
import blackboard.data.gradebook.Lineitem;
import blackboard.data.gradebook.Score;
import blackboard.data.user.User;
import blackboard.persist.Id;
import blackboard.persist.PersistenceException;
import blackboard.persist.course.CourseMembershipDbLoader;
import blackboard.persist.gradebook.LineitemDbPersister;
import blackboard.persist.gradebook.ScoreDbPersister;
import blackboard.platform.gradebook2.BookData;
import blackboard.platform.gradebook2.BookDataRequest;
import blackboard.platform.gradebook2.GradableItem;
import blackboard.platform.gradebook2.GradeWithAttemptScore;
import blackboard.platform.gradebook2.GradebookManager;
import blackboard.platform.gradebook2.GradebookManagerFactory;

# 在成绩中心添加一列成绩

/**
* 在成绩中心添加一列成绩
* 
* @param courseId 课程ID
* @param socre 该成绩中心总分数
* @param gradeName 该成绩中心名称
* @param type 插入key值
* @return 成绩中心ID
* 
* @throws PersistenceException 执行失败
* @throws ValidationException 验证失败
*/
public static Id addLineItem(String courseId,Float socre,String gradeName,String type) throws PersistenceException, ValidationException {
    Lineitem lineItem = new Lineitem();
    lineItem.setCourseId(CourseApi.loadCourseByCourseId(courseId).getId());
    lineItem.setPointsPossible(socre);
    lineItem.setName(gradeName);
    lineItem.setType(type);
    LineitemDbPersister.Default.getInstance().persist(lineItem);
    return lineItem.getId();
}

# 从成绩中心读取所有学生成绩

/**
* 从成绩中心获取某个学生的所有成绩
* 
* @param courseId 课程ID
* @param userId 用户ID
* @return 返回一个map(成绩名,分数)
*/
public static HashMap<String,String> getUserGrade(String courseId, String userId) {
    HashMap<String, String> map = new HashMap<String, String>();
    try {
        GradebookManager gbMgr = GradebookManagerFactory.getInstance();
        BookData bookData = null;
        Course course = CourseApi.loadCourseByCourseId(courseId);
        BookDataRequest req = new BookDataRequest(course.getId());
        bookData = gbMgr.getBookData(req);
        List<GradeWithAttemptScore> list = bookData.getGradeWithAttemptScore();
        for (GradeWithAttemptScore attempt : list) {
            Id courseUserId = attempt.getCourseUserId();
            CourseMembership cm = CourseMembershipDbLoader.Default.getInstance().loadById(courseUserId);
            String userName = UserApi.loadUserById(cm.getUserId()).getUserName();
            if (userName.equals(userId)) {
                GradableItem gradeItem = GradebookManagerFactory.getGradableItemManager().getGradebookItem(attempt.getGradableItemId());
                String scoreName = gradeItem.getDisplayColumnName();
                String score = attempt.getTextValue();
                map.put(scoreName, score);
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
        return map;
    }
    return map;
}

# 保存学生成绩

/**
* 保存学生成绩
* 
* @param lineItemId lineItemId
* @param CourseId CourseId
* @param userGradeMap 类似("stu001","100")的形式
* 
* @throws PersistenceException 执行失败
* @throws ValidationException 验证失败
*/
public static void saveUsersGrade(Id lineItemId, String CourseId,HashMap<String,String> userGradeMap) throws PersistenceException, ValidationException {
    Course course = CourseApi.loadCourseByCourseId(CourseId);
    List<Score> scoreList = new ArrayList<Score>();
    for (String userId : userGradeMap.keySet()) {
        User user = UserApi.loadUserByUserName(userId);
        CourseMembership cm = CourseUserApi.loadCourseMemberShipByCourseIdAndUserId(course.getId(), user.getId());
        Score score = new Score();
        score.setLineitemId(lineItemId);
        score.setGrade(userGradeMap.get(userId));
        score.setCourseMembershipId(cm.getId());
        scoreList.add(score);
    }
    ScoreDbPersister.Default.getInstance().persist(scoreList);
}