org.sakaiproject.tool.assessment.services
Class GradingService

java.lang.Object
  extended by org.sakaiproject.tool.assessment.services.GradingService

public class GradingService
extends Object

The GradingService calls the back end to get/store grading information. It also calculates scores for autograded types.


Constructor Summary
GradingService()
           
 
Method Summary
 void autoSubmitAssessments()
           
 void completeItemGradingData(AssessmentGradingData assessmentGradingData)
           
 ItemGradingAttachmentIfc createItemGradingAttachment(ItemGradingIfc itemGrading, String resourceId, String filename, String protocol)
           
 void deleteAll(Collection c)
           
 boolean fibmatch(String answer, String input, boolean casesensitive)
           
 int getActualNumberRetake(Long publishedAssessmentId, String agentIdString)
           
 HashMap getActualNumberRetakeHash(String agentIdString)
           
 List getAllAssessmentGradingByAgentId(Long publishedAssessmentId, String agentIdString)
           
 List getAllAssessmentGradingData(Long publishedId)
           
 List getAllSubmissions(String publishedId)
          Get all submissions for a published assessment from the back end.
 float getAnswerScore(ItemGradingIfc data, HashMap publishedAnswerHash)
          This grades multiple choice and true false questions.
 float getAnswerScoreMCQ(ItemGradingIfc data, HashMap publishedAnswerHash)
          This grades multiple choice and true false questions.
 HashMap getAssessmentGradingByItemGradingId(String publishedAssessmentId)
           
 List getAssessmentGradingIds(String publishedItemId)
           
 ArrayList getAssessmentGradingsByScoringType(Integer scoringType, Long publishedAssessmentId)
           
 List getExportResponsesData(String publishedAssessmentId, boolean anonymous, String audioMessage, String fileUploadMessage, String noSubmissionMessage, boolean showPartAndTotalScoreSpreadsheetColumns, String poolString, String partString, String questionString, String textString, String rationaleString, String itemGradingCommentsString, Map useridMap)
           
 boolean getFIBResult(ItemGradingIfc data, HashMap fibmap, ItemDataIfc itemdata, HashMap publishedAnswerHash)
           
 float getFIBScore(ItemGradingIfc data, HashMap fibmap, ItemDataIfc itemdata, HashMap publishedAnswerHash)
          This grades Fill In Blank questions.
 String getFileName(Long itemGradingId, String agentId, String filename)
           
 boolean getFINResult(ItemGradingIfc data, ItemDataIfc itemdata, HashMap publishedAnswerHash)
           
 float getFINScore(ItemGradingIfc data, ItemDataIfc itemdata, HashMap publishedAnswerHash)
           
 boolean getHasGradingData(Long publishedAssessmentId)
           
 ArrayList getHasGradingDataAndHasSubmission(Long publishedAssessmentId)
           
 AssessmentGradingIfc getHighestAssessmentGrading(String publishedAssessmentId, String agentId)
           
 ArrayList getHighestAssessmentGradingList(Long publishedId)
           
 AssessmentGradingIfc getHighestSubmittedAssessmentGrading(String publishedAssessmentId, String agentId)
           
 AssessmentGradingIfc getHighestSubmittedAssessmentGrading(String publishedAssessmentId, String agentId, String assessmentGradingId)
           
 List getHighestSubmittedOrGradedAssessmentGradingList(Long publishedId)
           
 HashMap getInProgressCounts(String siteId)
           
 ItemGradingData getItemGrading(String itemGradingId)
           
 ItemGradingData getItemGradingData(String assessmentGradingId, String publishedItemId)
           
 Set getItemGradingSet(String assessmentGradingId)
           
 HashMap getItemScores(Long itemId, List scores)
           
 HashMap getItemScores(Long publishedId, Long itemId, String which)
          Get the score information for each item from the assessment score.
 HashSet getItemSet(Long publishedAssessmentId, Long sectionId)
           
 AssessmentGradingIfc getLastAssessmentGradingByAgentId(String publishedAssessmentId, String agentIdString)
           
 ArrayList getLastAssessmentGradingList(Long publishedId)
           
 HashMap getLastItemGradingData(String publishedId, String agentId)
          Get the last set of itemgradingdata for a student per assessment
 ItemGradingData getLastItemGradingDataByAgent(String publishedItemId, String agentId)
           
 ArrayList getLastItemGradingDataPosition(Long assessmentGradingId, String agentId)
           
 AssessmentGradingData getLastSavedAssessmentGradingByAgentId(String publishedAssessmentId, String agentIdString)
           
 AssessmentGradingData getLastSubmittedAssessmentGradingByAgentId(String publishedAssessmentId, String agentIdString, String assessmentGradingId)
           
 List getLastSubmittedAssessmentGradingList(Long publishedId)
           
 List getLastSubmittedOrGradedAssessmentGradingList(Long publishedId)
           
 int getLateSubmissionsNumberByAgentId(Long publishedAssessmentId, String agentIdString, Date dueDate)
           
 MediaData getMedia(String mediaId)
           
 ArrayList getMediaArray(ItemGradingData i)
           
 ArrayList getMediaArray(String itemGradingId)
           
 List getMediaArray(String publishedId, String publishItemId, String which)
           
 ArrayList getMediaArray2(String itemGradingId)
           
 HashMap getMediaItemGradingHash(Long assessmentGradingId)
           
 int getNumberRetake(Long publishedAssessmentId, String agentIdString)
           
 HashMap getNumberRetakeHash(String agentIdString)
           
 PublishedAssessmentIfc getPublishedAssessmentByAssessmentGradingId(String id)
           
 PublishedAssessmentIfc getPublishedAssessmentByPublishedItemId(String publishedItemId)
           
 List getPublishedItemIds(Long assessmentGradingId)
           
 Integer getScoringType(PublishedAssessmentIfc pub)
           
 HashMap getSiteActualNumberRetakeHash(String siteIdString)
           
 HashMap getSiteInProgressCountHash(String siteId)
           
 List getSiteNeedResubmitList(String siteId)
           
 HashMap getSiteNumberRetakeHash(String siteIdString)
           
 HashMap getSiteSubmissionCountHash(String siteId)
           
 HashMap getStudentGradingData(String assessmentGradingId)
          Get the grading data for a given submission
 List getStudentGradingSummaryData(Long publishedAssessmentId, String agentIdString)
           
 int getSubmissionSizeOfPublishedAssessment(String publishedAssessmentId)
           
 HashMap getSubmitData(String publishedId, String agentId, Integer scoringoption, String assessmentGradingId)
          Get the last submission for a student per assessment
 HashMap getSubmittedCounts(String siteId)
           
 String getTextForId(Long typeId)
           
 float getTotalCorrectScore(ItemGradingIfc data, HashMap publishedAnswerHash)
           
 ArrayList getTotalScores(String publishedId, String which)
          Get all scores for a published assessment from the back end.
 ArrayList getTotalScores(String publishedId, String which, boolean getSubmittedOnly)
           
 Long getTypeId(Long itemGradingId)
           
 List getUpdatedAssessmentList(String agentId, String siteId)
           
 AssessmentGradingData load(String assessmentGradingId)
           
 void notifyGradebook(AssessmentGradingIfc data, PublishedAssessmentIfc pub)
           
 void removeItemGradingAttachment(String attachmentId)
           
 void saveItemGrading(ItemGradingIfc item)
           
 Long saveMedia(byte[] media, String mimeType)
           
 Long saveMedia(MediaData mediaData)
           
 void saveOrUpdateAll(Collection c)
           
 void saveOrUpdateAssessmentGrading(AssessmentGradingIfc assessment)
           
 void saveOrUpdateAssessmentGradingOnly(AssessmentGradingIfc assessment)
           
 void saveOrUpdateAttachments(List list)
           
 void saveStudentGradingSummaryData(StudentGradingSummaryIfc studentGradingSummaryData)
           
 void saveTotalScores(ArrayList gdataList, PublishedAssessmentIfc pub)
           
 void storeGrades(AssessmentGradingIfc data, boolean regrade, PublishedAssessmentIfc pub, HashMap publishedItemHash, HashMap publishedItemTextHash, HashMap publishedAnswerHash, boolean persistToDB)
           
 void storeGrades(AssessmentGradingIfc data, boolean regrade, PublishedAssessmentIfc pub, HashMap publishedItemHash, HashMap publishedItemTextHash, HashMap publishedAnswerHash, boolean persistToDB, HashMap invalidFINMap, ArrayList invalidSALengthList)
          This is the big, complicated mess where we take all the items in an assessment, store the grading data, auto-grade it, and update everything.
 void storeGrades(AssessmentGradingIfc data, PublishedAssessmentIfc pub, HashMap publishedItemHash, HashMap publishedItemTextHash, HashMap publishedAnswerHash, boolean persistToDB, HashMap invalidFINMap, ArrayList invalidSALengthList)
          Assume this is a new item.
 void storeGrades(AssessmentGradingIfc data, PublishedAssessmentIfc pub, HashMap publishedItemHash, HashMap publishedItemTextHash, HashMap publishedAnswerHash, HashMap invalidFINMap, ArrayList invalidSALengthList)
          Assume this is a new item.
 void updateAssessmentGradingScore(AssessmentGradingIfc adata, PublishedAssessmentIfc pub)
           
 void updateItemScore(ItemGradingData gdata, float scoreDifference, PublishedAssessmentIfc pub)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

GradingService

public GradingService()
Method Detail

getTotalScores

public ArrayList getTotalScores(String publishedId,
                                String which)
Get all scores for a published assessment from the back end.


getTotalScores

public ArrayList getTotalScores(String publishedId,
                                String which,
                                boolean getSubmittedOnly)

getAllSubmissions

public List getAllSubmissions(String publishedId)
Get all submissions for a published assessment from the back end.


getAllAssessmentGradingData

public List getAllAssessmentGradingData(Long publishedId)

getHighestAssessmentGradingList

public ArrayList getHighestAssessmentGradingList(Long publishedId)

getHighestSubmittedOrGradedAssessmentGradingList

public List getHighestSubmittedOrGradedAssessmentGradingList(Long publishedId)

getLastAssessmentGradingList

public ArrayList getLastAssessmentGradingList(Long publishedId)

getLastSubmittedAssessmentGradingList

public List getLastSubmittedAssessmentGradingList(Long publishedId)

getLastSubmittedOrGradedAssessmentGradingList

public List getLastSubmittedOrGradedAssessmentGradingList(Long publishedId)

saveTotalScores

public void saveTotalScores(ArrayList gdataList,
                            PublishedAssessmentIfc pub)

getAssessmentGradingsByScoringType

public ArrayList getAssessmentGradingsByScoringType(Integer scoringType,
                                                    Long publishedAssessmentId)

getScoringType

public Integer getScoringType(PublishedAssessmentIfc pub)

getItemScores

public HashMap getItemScores(Long publishedId,
                             Long itemId,
                             String which)
Get the score information for each item from the assessment score.


getItemScores

public HashMap getItemScores(Long itemId,
                             List scores)

getLastItemGradingData

public HashMap getLastItemGradingData(String publishedId,
                                      String agentId)
Get the last set of itemgradingdata for a student per assessment


getStudentGradingData

public HashMap getStudentGradingData(String assessmentGradingId)
Get the grading data for a given submission


getSubmitData

public HashMap getSubmitData(String publishedId,
                             String agentId,
                             Integer scoringoption,
                             String assessmentGradingId)
Get the last submission for a student per assessment


getTextForId

public String getTextForId(Long typeId)

getSubmissionSizeOfPublishedAssessment

public int getSubmissionSizeOfPublishedAssessment(String publishedAssessmentId)

saveMedia

public Long saveMedia(byte[] media,
                      String mimeType)

saveMedia

public Long saveMedia(MediaData mediaData)

getMedia

public MediaData getMedia(String mediaId)

getMediaArray

public ArrayList getMediaArray(String itemGradingId)

getMediaArray2

public ArrayList getMediaArray2(String itemGradingId)

getMediaArray

public ArrayList getMediaArray(ItemGradingData i)

getMediaItemGradingHash

public HashMap getMediaItemGradingHash(Long assessmentGradingId)

getMediaArray

public List getMediaArray(String publishedId,
                          String publishItemId,
                          String which)

getLastItemGradingDataByAgent

public ItemGradingData getLastItemGradingDataByAgent(String publishedItemId,
                                                     String agentId)

getItemGradingData

public ItemGradingData getItemGradingData(String assessmentGradingId,
                                          String publishedItemId)

load

public AssessmentGradingData load(String assessmentGradingId)

getItemGrading

public ItemGradingData getItemGrading(String itemGradingId)

getLastAssessmentGradingByAgentId

public AssessmentGradingIfc getLastAssessmentGradingByAgentId(String publishedAssessmentId,
                                                              String agentIdString)

getLastSavedAssessmentGradingByAgentId

public AssessmentGradingData getLastSavedAssessmentGradingByAgentId(String publishedAssessmentId,
                                                                    String agentIdString)

getLastSubmittedAssessmentGradingByAgentId

public AssessmentGradingData getLastSubmittedAssessmentGradingByAgentId(String publishedAssessmentId,
                                                                        String agentIdString,
                                                                        String assessmentGradingId)

saveItemGrading

public void saveItemGrading(ItemGradingIfc item)

saveOrUpdateAssessmentGrading

public void saveOrUpdateAssessmentGrading(AssessmentGradingIfc assessment)

saveOrUpdateAssessmentGradingOnly

public void saveOrUpdateAssessmentGradingOnly(AssessmentGradingIfc assessment)

getAssessmentGradingIds

public List getAssessmentGradingIds(String publishedItemId)

getHighestAssessmentGrading

public AssessmentGradingIfc getHighestAssessmentGrading(String publishedAssessmentId,
                                                        String agentId)

getHighestSubmittedAssessmentGrading

public AssessmentGradingIfc getHighestSubmittedAssessmentGrading(String publishedAssessmentId,
                                                                 String agentId,
                                                                 String assessmentGradingId)

getHighestSubmittedAssessmentGrading

public AssessmentGradingIfc getHighestSubmittedAssessmentGrading(String publishedAssessmentId,
                                                                 String agentId)

getItemGradingSet

public Set getItemGradingSet(String assessmentGradingId)

getAssessmentGradingByItemGradingId

public HashMap getAssessmentGradingByItemGradingId(String publishedAssessmentId)

updateItemScore

public void updateItemScore(ItemGradingData gdata,
                            float scoreDifference,
                            PublishedAssessmentIfc pub)

storeGrades

public void storeGrades(AssessmentGradingIfc data,
                        PublishedAssessmentIfc pub,
                        HashMap publishedItemHash,
                        HashMap publishedItemTextHash,
                        HashMap publishedAnswerHash,
                        HashMap invalidFINMap,
                        ArrayList invalidSALengthList)
                 throws GradebookServiceException,
                        FinFormatException
Assume this is a new item.

Throws:
GradebookServiceException
FinFormatException

storeGrades

public void storeGrades(AssessmentGradingIfc data,
                        PublishedAssessmentIfc pub,
                        HashMap publishedItemHash,
                        HashMap publishedItemTextHash,
                        HashMap publishedAnswerHash,
                        boolean persistToDB,
                        HashMap invalidFINMap,
                        ArrayList invalidSALengthList)
                 throws GradebookServiceException,
                        FinFormatException
Assume this is a new item.

Throws:
GradebookServiceException
FinFormatException

storeGrades

public void storeGrades(AssessmentGradingIfc data,
                        boolean regrade,
                        PublishedAssessmentIfc pub,
                        HashMap publishedItemHash,
                        HashMap publishedItemTextHash,
                        HashMap publishedAnswerHash,
                        boolean persistToDB)
                 throws GradebookServiceException,
                        FinFormatException
Throws:
GradebookServiceException
FinFormatException

storeGrades

public void storeGrades(AssessmentGradingIfc data,
                        boolean regrade,
                        PublishedAssessmentIfc pub,
                        HashMap publishedItemHash,
                        HashMap publishedItemTextHash,
                        HashMap publishedAnswerHash,
                        boolean persistToDB,
                        HashMap invalidFINMap,
                        ArrayList invalidSALengthList)
                 throws GradebookServiceException,
                        FinFormatException
This is the big, complicated mess where we take all the items in an assessment, store the grading data, auto-grade it, and update everything. If regrade is true, we just recalculate the graded score. If it's false, we do everything from scratch.

Throws:
GradebookServiceException
FinFormatException

getAnswerScore

public float getAnswerScore(ItemGradingIfc data,
                            HashMap publishedAnswerHash)
This grades multiple choice and true false questions. Since multiple choice/multiple select has a separate ItemGradingIfc for each choice, they're graded the same way the single choice are. Choices should be given negative score values if one wants them to lose points for the wrong choice.


notifyGradebook

public void notifyGradebook(AssessmentGradingIfc data,
                            PublishedAssessmentIfc pub)
                     throws GradebookServiceException
Throws:
GradebookServiceException

getFIBScore

public float getFIBScore(ItemGradingIfc data,
                         HashMap fibmap,
                         ItemDataIfc itemdata,
                         HashMap publishedAnswerHash)
This grades Fill In Blank questions. (see SAK-1685) There will be two valid cases for scoring when there are multiple fill in blanks in a question: Case 1- There are different sets of answers (a set can contain one or more item) for each blank (e.g. The {dog|coyote|wolf} howls and the {lion|cougar} roars.) In this case each blank is tested for correctness independently. Case 2-There is the same set of answers for each blank: e.g. The flag of the US is {red|white|blue},{red|white|blue}, and {red|white|blue}. These are the only two valid types of questions. When authoring, it is an ERROR to include: (1) a mixture of independent answer and common answer blanks (e.g. The {dog|coyote|wolf} howls at the {red|white|blue}, {red|white|blue}, and {red|white|blue} flag.) (2) more than one set of blanks with a common answer ((e.g. The US flag is {red|white|blue}, {red|white|blue}, and {red|white|blue} and the Italian flag is {red|white|greem}, {red|white|greem}, and {red|white|greem}.) These two invalid questions specifications should be authored as two separate questions. Here are the definition and 12 cases I came up with (lydia, 01/2006): single answers : roses are {red} and vilets are {blue} multiple answers : {dogs|cats} have 4 legs multiple answers , mutually exclusive, all answers must be identical, can be in diff. orders : US flag has {red|blue|white} and {red |white|blue} and {blue|red|white} colors multiple answers , mutually non-exclusive : {dogs|cats} have 4 legs and {dogs|cats} can be pets. wildcard uses * to mean one of more characters -. wildcard single answer, case sensitive -. wildcard single answer, case insensitive -. single answer, no wildcard , case sensitive -. single answer, no wildcard , case insensitive -. multiple answer, mutually non-exclusive, no wildcard , case sensitive -. multiple answer, mutually non-exclusive, no wildcard , case in sensitive -. multiple answer, mutually non-exclusive, wildcard , case sensitive -. multiple answer, mutually non-exclusive, wildcard , case insensitive -. multiple answer, mutually exclusive, no wildcard , case sensitive -. multiple answer, mutually exclusive, no wildcard , case in sensitive -. multiple answer, mutually exclusive, wildcard , case sensitive -. multiple answer, mutually exclusive, wildcard , case insensitive


getFIBResult

public boolean getFIBResult(ItemGradingIfc data,
                            HashMap fibmap,
                            ItemDataIfc itemdata,
                            HashMap publishedAnswerHash)

getFINScore

public float getFINScore(ItemGradingIfc data,
                         ItemDataIfc itemdata,
                         HashMap publishedAnswerHash)
                  throws FinFormatException
Throws:
FinFormatException

getFINResult

public boolean getFINResult(ItemGradingIfc data,
                            ItemDataIfc itemdata,
                            HashMap publishedAnswerHash)
                     throws FinFormatException
Throws:
FinFormatException

getTotalCorrectScore

public float getTotalCorrectScore(ItemGradingIfc data,
                                  HashMap publishedAnswerHash)

deleteAll

public void deleteAll(Collection c)

updateAssessmentGradingScore

public void updateAssessmentGradingScore(AssessmentGradingIfc adata,
                                         PublishedAssessmentIfc pub)

saveOrUpdateAll

public void saveOrUpdateAll(Collection c)

getPublishedAssessmentByAssessmentGradingId

public PublishedAssessmentIfc getPublishedAssessmentByAssessmentGradingId(String id)

getPublishedAssessmentByPublishedItemId

public PublishedAssessmentIfc getPublishedAssessmentByPublishedItemId(String publishedItemId)

getLastItemGradingDataPosition

public ArrayList getLastItemGradingDataPosition(Long assessmentGradingId,
                                                String agentId)

getPublishedItemIds

public List getPublishedItemIds(Long assessmentGradingId)

getItemSet

public HashSet getItemSet(Long publishedAssessmentId,
                          Long sectionId)

getTypeId

public Long getTypeId(Long itemGradingId)

fibmatch

public boolean fibmatch(String answer,
                        String input,
                        boolean casesensitive)

getAllAssessmentGradingByAgentId

public List getAllAssessmentGradingByAgentId(Long publishedAssessmentId,
                                             String agentIdString)

getSiteSubmissionCountHash

public HashMap getSiteSubmissionCountHash(String siteId)

getSiteInProgressCountHash

public HashMap getSiteInProgressCountHash(String siteId)

getActualNumberRetake

public int getActualNumberRetake(Long publishedAssessmentId,
                                 String agentIdString)

getActualNumberRetakeHash

public HashMap getActualNumberRetakeHash(String agentIdString)

getSiteActualNumberRetakeHash

public HashMap getSiteActualNumberRetakeHash(String siteIdString)

getStudentGradingSummaryData

public List getStudentGradingSummaryData(Long publishedAssessmentId,
                                         String agentIdString)

getNumberRetake

public int getNumberRetake(Long publishedAssessmentId,
                           String agentIdString)

getNumberRetakeHash

public HashMap getNumberRetakeHash(String agentIdString)

getSiteNumberRetakeHash

public HashMap getSiteNumberRetakeHash(String siteIdString)

saveStudentGradingSummaryData

public void saveStudentGradingSummaryData(StudentGradingSummaryIfc studentGradingSummaryData)

getLateSubmissionsNumberByAgentId

public int getLateSubmissionsNumberByAgentId(Long publishedAssessmentId,
                                             String agentIdString,
                                             Date dueDate)

getExportResponsesData

public List getExportResponsesData(String publishedAssessmentId,
                                   boolean anonymous,
                                   String audioMessage,
                                   String fileUploadMessage,
                                   String noSubmissionMessage,
                                   boolean showPartAndTotalScoreSpreadsheetColumns,
                                   String poolString,
                                   String partString,
                                   String questionString,
                                   String textString,
                                   String rationaleString,
                                   String itemGradingCommentsString,
                                   Map useridMap)

getHasGradingData

public boolean getHasGradingData(Long publishedAssessmentId)

getHasGradingDataAndHasSubmission

public ArrayList getHasGradingDataAndHasSubmission(Long publishedAssessmentId)

getFileName

public String getFileName(Long itemGradingId,
                          String agentId,
                          String filename)

getUpdatedAssessmentList

public List getUpdatedAssessmentList(String agentId,
                                     String siteId)

getSiteNeedResubmitList

public List getSiteNeedResubmitList(String siteId)

autoSubmitAssessments

public void autoSubmitAssessments()

createItemGradingAttachment

public ItemGradingAttachmentIfc createItemGradingAttachment(ItemGradingIfc itemGrading,
                                                            String resourceId,
                                                            String filename,
                                                            String protocol)

removeItemGradingAttachment

public void removeItemGradingAttachment(String attachmentId)

saveOrUpdateAttachments

public void saveOrUpdateAttachments(List list)

getInProgressCounts

public HashMap getInProgressCounts(String siteId)

getSubmittedCounts

public HashMap getSubmittedCounts(String siteId)

completeItemGradingData

public void completeItemGradingData(AssessmentGradingData assessmentGradingData)

getAnswerScoreMCQ

public float getAnswerScoreMCQ(ItemGradingIfc data,
                               HashMap publishedAnswerHash)
This grades multiple choice and true false questions. Since multiple choice/multiple select has a separate ItemGradingIfc for each choice, they're graded the same way the single choice are. BUT since we have Partial Credit stuff around we have to have a separate method here --mustansar Choices should be given negative score values if one wants them to lose points for the wrong choice.



Copyright © 2005-2012 Sakai Project. All Rights Reserved.