# 成绩中心
相关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);
}