public class GradingService extends Object
| Modifier and Type | Field and Description |
|---|---|
static String |
ANSWER_TYPE_COMPLEX
Key for a complext numeric answer e.g. 9+9i
|
static String |
ANSWER_TYPE_REAL
key for a real number representation e.g 1 or 10E5
|
| Constructor and Description |
|---|
GradingService() |
| Modifier and Type | Method and Description |
|---|---|
String |
applyPrecisionToNumberString(String numberStr,
int decimalPlaces)
CALCULATED_QUESTION
applyPrecisionToNumberString() takes a string representation of a number and returns
a string representation of that number, rounded to the specified number of
decimal places, including trimming decimal places if needed.
|
void |
autoSubmitAssessments() |
static String |
cleanFormula(String formula)
Cleans up formula text so that whitespaces are normalized or removed
|
void |
completeItemGradingData(AssessmentGradingData assessmentGradingData) |
ItemGradingAttachment |
createItemGradingAttachment(ItemGradingData itemGrading,
String resourceId,
String filename,
String protocol) |
void |
deleteAll(Collection c) |
Map<String,String> |
determineRandomValuesForRanges(Map<String,String> variableRangeMap,
long itemId,
long gradingId,
String agentId,
int validAnswersAttemptCount)
CALCULATED_QUESTION
Takes a map of ranges and randomly chooses values for those ranges and stores them in a new map.
|
List<String> |
extractCalcQAnswersArray(Map<Integer,String> answerList,
ItemDataIfc item,
Long gradingId,
String agentId)
CALCULATED_QUESTION
This is a busy method.
|
List<String> |
extractCalculations(String text)
extractCalculations() is a utility function for Calculated Questions.
|
List<String> |
extractFormulas(String text)
extractFormulas() is a utility function for Calculated Questions.
|
protected List<String> |
extractInstructionSegments(String instructions)
CALCULATED_QUESTION
Takes the instructions and breaks it into segments, based on the location
of formula names.
|
List<String> |
extractVariables(String text)
extractVariables() is a utility function for Calculated Questions.
|
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<ItemGradingData> |
getAllItemGradingDataForItemInGrading(Long assesmentGradingId,
Long publihsedItemId) |
List |
getAllSubmissions(String publishedId)
Get all submissions for a published assessment from the back end.
|
double |
getAnswerScore(ItemGradingData data,
Map publishedAnswerHash)
This grades multiple choice and true false questions.
|
double |
getAnswerScoreMCQ(ItemGradingData data,
Map publishedAnswerHash)
This grades multiple choice and true false questions.
|
HashMap |
getAssessmentGradingByItemGradingId(String publishedAssessmentId) |
List |
getAssessmentGradingIds(String publishedItemId) |
ArrayList |
getAssessmentGradingsByScoringType(Integer scoringType,
Long publishedAssessmentId) |
double |
getCalcQScore(ItemGradingData data,
ItemDataIfc itemdata,
Map<Integer,String> calculatedAnswersMap,
int calcQuestionAnswerSequence)
CALCULATED_QUESTION
Returns a double score value for the ItemGrading element being scored for a Calculated Question
|
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(ItemGradingData data,
HashMap fibmap,
ItemDataIfc itemdata,
HashMap publishedAnswerHash) |
double |
getFIBScore(ItemGradingData data,
Map fibmap,
ItemDataIfc itemdata,
Map publishedAnswerHash)
This grades Fill In Blank questions.
|
String |
getFileName(Long itemGradingId,
String agentId,
String filename) |
boolean |
getFINResult(ItemGradingData data,
ItemDataIfc itemdata,
Map publishedAnswerHash) |
double |
getFINScore(ItemGradingData data,
ItemDataIfc itemdata,
Map publishedAnswerHash) |
boolean |
getHasGradingData(Long publishedAssessmentId) |
ArrayList |
getHasGradingDataAndHasSubmission(Long publishedAssessmentId) |
AssessmentGradingData |
getHighestAssessmentGrading(String publishedAssessmentId,
String agentId) |
ArrayList |
getHighestAssessmentGradingList(Long publishedId) |
AssessmentGradingData |
getHighestSubmittedAssessmentGrading(String publishedAssessmentId,
String agentId) |
AssessmentGradingData |
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,
boolean loadItemGradingAttachment) |
HashMap |
getItemScores(Long publishedId,
Long itemId,
String which)
Get the score information for each item from the assessment score.
|
HashMap |
getItemScores(Long publishedId,
Long itemId,
String which,
boolean loadItemGradingAttachment) |
HashSet |
getItemSet(Long publishedAssessmentId,
Long sectionId) |
AssessmentGradingData |
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<MediaData> |
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) |
double |
getTotalCorrectScore(ItemGradingData data,
Map 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 |
getUnSubmittedAssessmentGradingDataList(Long publishedAssessmentId,
String agentIdString) |
List |
getUpdatedAssessmentList(String agentId,
String siteId) |
boolean |
hasDistractors(ItemDataIfc item)
hasDistractors looks at an itemData object for a Matching question and determines
if all of the choices have correct matches or not.
|
boolean |
isAnswerValid(String answer)
CALCULATED_QUESTION
Takes an answer string and checks for the value returned
is NaN or Infinity, indicating a Samigo formula parse error
Returns false if divide by zero is detected.
|
boolean |
isDistractor(ItemTextIfc itemText)
determines if the passed parameter is a distractor
For ItemTextIfc objects that hold data for matching type questions, a distractor
is a choice that has no valid matches (i.e. no correct answers).
|
boolean |
isNegativeSqrt(String expression)
isNegativeSqrt() looks at the incoming expression and looks specifically
to see if it executes the SQRT function.
|
AssessmentGradingData |
load(String assessmentGradingId) |
AssessmentGradingData |
load(String assessmentGradingId,
boolean loadGradingAttachment) |
void |
notifyGradebook(AssessmentGradingData data,
PublishedAssessmentIfc pub) |
String |
processFormulaIntoValue(String formula,
int decimalPlaces)
CALCULATED_QUESTION
Process a single formula into a final string representing the calculated value of the formula
|
void |
removeItemGradingAttachment(String attachmentId) |
String |
replaceCalculationsWithValues(String expression,
int decimalPlaces)
CALCULATED_QUESTION
replaceMappedVariablesWithNumbers() takes a string and substitutes any variable
names found with the value of the variable.
|
String |
replaceMappedVariablesWithNumbers(String expression,
Map<String,String> variables)
CALCULATED_QUESTION
replaceMappedVariablesWithNumbers() takes a string and substitutes any variable
names found with the value of the variable.
|
void |
saveItemGrading(ItemGradingData item) |
Long |
saveMedia(byte[] media,
String mimeType) |
Long |
saveMedia(MediaData mediaData) |
void |
saveOrUpdateAll(Collection c) |
void |
saveOrUpdateAssessmentGrading(AssessmentGradingData assessment) |
void |
saveOrUpdateAssessmentGradingOnly(AssessmentGradingData assessment) |
void |
saveOrUpdateAttachments(List list) |
void |
saveStudentGradingSummaryData(StudentGradingSummaryIfc studentGradingSummaryData) |
void |
saveTotalScores(ArrayList gdataList,
PublishedAssessmentIfc pub) |
void |
storeGrades(AssessmentGradingData data,
boolean regrade,
PublishedAssessmentIfc pub,
HashMap publishedItemHash,
HashMap publishedItemTextHash,
HashMap publishedAnswerHash,
boolean persistToDB) |
void |
storeGrades(AssessmentGradingData 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(AssessmentGradingData data,
PublishedAssessmentIfc pub,
HashMap publishedItemHash,
HashMap publishedItemTextHash,
HashMap publishedAnswerHash,
boolean persistToDB,
HashMap invalidFINMap,
ArrayList invalidSALengthList)
Assume this is a new item.
|
void |
storeGrades(AssessmentGradingData data,
PublishedAssessmentIfc pub,
HashMap publishedItemHash,
HashMap publishedItemTextHash,
HashMap publishedAnswerHash,
HashMap invalidFINMap,
ArrayList invalidSALengthList)
Assume this is a new item.
|
void |
updateAssessmentGradingScore(AssessmentGradingData adata,
PublishedAssessmentIfc pub) |
void |
updateItemScore(ItemGradingData gdata,
double scoreDifference,
PublishedAssessmentIfc pub) |
Map |
validate(String value)
Validate a students numeric answer
|
public static final String ANSWER_TYPE_COMPLEX
public static final String ANSWER_TYPE_REAL
public ArrayList getTotalScores(String publishedId, String which)
public ArrayList getTotalScores(String publishedId, String which, boolean getSubmittedOnly)
public List getAllSubmissions(String publishedId)
public List getHighestSubmittedOrGradedAssessmentGradingList(Long publishedId)
public List getLastSubmittedAssessmentGradingList(Long publishedId)
public List getLastSubmittedOrGradedAssessmentGradingList(Long publishedId)
public void saveTotalScores(ArrayList gdataList, PublishedAssessmentIfc pub)
public ArrayList getAssessmentGradingsByScoringType(Integer scoringType, Long publishedAssessmentId)
public Integer getScoringType(PublishedAssessmentIfc pub)
public HashMap getItemScores(Long publishedId, Long itemId, String which)
public HashMap getItemScores(Long publishedId, Long itemId, String which, boolean loadItemGradingAttachment)
public HashMap getItemScores(Long itemId, List scores, boolean loadItemGradingAttachment)
public HashMap getLastItemGradingData(String publishedId, String agentId)
public HashMap getStudentGradingData(String assessmentGradingId)
public HashMap getSubmitData(String publishedId, String agentId, Integer scoringoption, String assessmentGradingId)
public int getSubmissionSizeOfPublishedAssessment(String publishedAssessmentId)
public ArrayList getMediaArray(ItemGradingData i)
public List<MediaData> getMediaArray(String publishedId, String publishItemId, String which)
public ItemGradingData getLastItemGradingDataByAgent(String publishedItemId, String agentId)
public ItemGradingData getItemGradingData(String assessmentGradingId, String publishedItemId)
public AssessmentGradingData load(String assessmentGradingId)
public AssessmentGradingData load(String assessmentGradingId, boolean loadGradingAttachment)
public ItemGradingData getItemGrading(String itemGradingId)
public AssessmentGradingData getLastAssessmentGradingByAgentId(String publishedAssessmentId, String agentIdString)
public AssessmentGradingData getLastSavedAssessmentGradingByAgentId(String publishedAssessmentId, String agentIdString)
public AssessmentGradingData getLastSubmittedAssessmentGradingByAgentId(String publishedAssessmentId, String agentIdString, String assessmentGradingId)
public void saveItemGrading(ItemGradingData item)
public void saveOrUpdateAssessmentGrading(AssessmentGradingData assessment)
public void saveOrUpdateAssessmentGradingOnly(AssessmentGradingData assessment)
public AssessmentGradingData getHighestAssessmentGrading(String publishedAssessmentId, String agentId)
public AssessmentGradingData getHighestSubmittedAssessmentGrading(String publishedAssessmentId, String agentId, String assessmentGradingId)
public AssessmentGradingData getHighestSubmittedAssessmentGrading(String publishedAssessmentId, String agentId)
public HashMap getAssessmentGradingByItemGradingId(String publishedAssessmentId)
public void updateItemScore(ItemGradingData gdata, double scoreDifference, PublishedAssessmentIfc pub)
public void storeGrades(AssessmentGradingData data, PublishedAssessmentIfc pub, HashMap publishedItemHash, HashMap publishedItemTextHash, HashMap publishedAnswerHash, HashMap invalidFINMap, ArrayList invalidSALengthList) throws GradebookServiceException, FinFormatException
public void storeGrades(AssessmentGradingData data, PublishedAssessmentIfc pub, HashMap publishedItemHash, HashMap publishedItemTextHash, HashMap publishedAnswerHash, boolean persistToDB, HashMap invalidFINMap, ArrayList invalidSALengthList) throws GradebookServiceException, FinFormatException
public void storeGrades(AssessmentGradingData data, boolean regrade, PublishedAssessmentIfc pub, HashMap publishedItemHash, HashMap publishedItemTextHash, HashMap publishedAnswerHash, boolean persistToDB) throws GradebookServiceException, FinFormatException
public void storeGrades(AssessmentGradingData data, boolean regrade, PublishedAssessmentIfc pub, HashMap publishedItemHash, HashMap publishedItemTextHash, HashMap publishedAnswerHash, boolean persistToDB, HashMap invalidFINMap, ArrayList invalidSALengthList) throws GradebookServiceException, FinFormatException
public double getAnswerScore(ItemGradingData data, Map publishedAnswerHash)
public void notifyGradebook(AssessmentGradingData data, PublishedAssessmentIfc pub) throws GradebookServiceException
GradebookServiceExceptionpublic double getFIBScore(ItemGradingData data, Map fibmap, ItemDataIfc itemdata, Map publishedAnswerHash)
public boolean getFIBResult(ItemGradingData data, HashMap fibmap, ItemDataIfc itemdata, HashMap publishedAnswerHash)
public double getFINScore(ItemGradingData data, ItemDataIfc itemdata, Map publishedAnswerHash) throws FinFormatException
FinFormatExceptionpublic boolean getFINResult(ItemGradingData data, ItemDataIfc itemdata, Map publishedAnswerHash) throws FinFormatException
FinFormatExceptionpublic Map validate(String value)
The - answer to validateANSWER_TYPE_REAL or ANSWER_TYPE_COMPLEXpublic double getCalcQScore(ItemGradingData data, ItemDataIfc itemdata, Map<Integer,String> calculatedAnswersMap, int calcQuestionAnswerSequence)
calcQuestionAnswerSequence - the order of answers in the listpublic double getTotalCorrectScore(ItemGradingData data, Map publishedAnswerHash)
public void deleteAll(Collection c)
public void updateAssessmentGradingScore(AssessmentGradingData adata, PublishedAssessmentIfc pub)
public void saveOrUpdateAll(Collection c)
public PublishedAssessmentIfc getPublishedAssessmentByAssessmentGradingId(String id)
public PublishedAssessmentIfc getPublishedAssessmentByPublishedItemId(String publishedItemId)
public ArrayList getLastItemGradingDataPosition(Long assessmentGradingId, String agentId)
public List getAllAssessmentGradingByAgentId(Long publishedAssessmentId, String agentIdString)
public List<ItemGradingData> getAllItemGradingDataForItemInGrading(Long assesmentGradingId, Long publihsedItemId)
public int getActualNumberRetake(Long publishedAssessmentId, String agentIdString)
public List getStudentGradingSummaryData(Long publishedAssessmentId, String agentIdString)
public void saveStudentGradingSummaryData(StudentGradingSummaryIfc studentGradingSummaryData)
public int getLateSubmissionsNumberByAgentId(Long publishedAssessmentId, String agentIdString, Date dueDate)
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)
publishedAssessmentId - anonymous - audioMessage - fileUploadMessage - noSubmissionMessage - showPartAndTotalScoreSpreadsheetColumns - poolString - partString - questionString - textString - rationaleString - itemGradingCommentsString - useridMap - public boolean getHasGradingData(Long publishedAssessmentId)
public List<String> extractCalculations(String text)
For example, if the passed parameter is {a} + {b} = {{c}}, [[{a}+{b}]],
the resulting list would contain one entry: a string of "{a}+{b}"
Formulas must contain at least one variable OR parens OR calculation symbol (*-+/)
text - contents to be searchedpublic List<String> extractFormulas(String text)
For example, if the passed parameter is {a} + {b} = {{c}},
the resulting list would contain one entry: a string of "c"
Formulas must begin with an alpha, but subsequent character can be alpha-numeric
text - contents to be searchedpublic List<String> extractVariables(String text)
For example, if the passed parameter is {a} + {b} = {{c}},
the resulting list would contain two entries: strings of "a" and "b"
Variables must begin with an alpha, but subsequent character can be alpha-numeric.
Note - a formula, encoded as {{ }}, will not be mistaken for a variable.
text - content to be searchedprotected List<String> extractInstructionSegments(String instructions)
Note - in this context, it would probably be easier if any variable value substitutions have occurred before the breakup is done; otherwise, each segment will need to have substitutions done.
instructions - string to be broken uppublic String applyPrecisionToNumberString(String numberStr, int decimalPlaces)
numberStr - decimalPlaces - public List<String> extractCalcQAnswersArray(Map<Integer,String> answerList, ItemDataIfc item, Long gradingId, String agentId)
Note: If a divide by zero occurs. We change the random values and try again. It gets limited chances to get valid values and then will return "infinity" as the answer.
answerList - will enter the method empty and be filled with sequential answers to the questionpublic boolean isAnswerValid(String answer)
public String replaceMappedVariablesWithNumbers(String expression, Map<String,String> variables)
Note - this function comprehends syntax like "5{x}". If "x" is 37, the result would be "5*37"
expression - - the string being substituted intovariables - - Map key is the variable name, value is what will be
substituted into the expression.public String replaceCalculationsWithValues(String expression, int decimalPlaces) throws SamigoExpressionError
Note - this function comprehends syntax like "5{x}". If "x" is 37, the result would be "5*37"
expression - - the string which will be scanned for calculationsIllegalStateException - if the formula value cannot be calculatedSamigoExpressionError - if the formula cannot be parsedpublic String processFormulaIntoValue(String formula, int decimalPlaces) throws SamigoExpressionError
formula - the formula to process (e.g. 1 * 2 + 3 - 4), All variable replacement must have already happeneddecimalPlaces - number of decimals to include in the final outputIllegalStateException - if the formula value cannot be calculated (typically caused by 0 divisors and the like)SamigoExpressionError - if the formula cannot be parsedpublic static String cleanFormula(String formula)
formula - formula with variables or withoutpublic boolean isNegativeSqrt(String expression) throws SamigoExpressionError
Note - the incoming expression should have no variables. They should have been replaced before this function was called
expression - a mathematical formula, with all variables replaced by
real values, to be evaluatedSamigoExpressionError - if the evaluation of the SQRT function throws
some other parse errorpublic Map<String,String> determineRandomValuesForRanges(Map<String,String> variableRangeMap, long itemId, long gradingId, String agentId, int validAnswersAttemptCount)
public ArrayList getHasGradingDataAndHasSubmission(Long publishedAssessmentId)
public void autoSubmitAssessments()
public ItemGradingAttachment createItemGradingAttachment(ItemGradingData itemGrading, String resourceId, String filename, String protocol)
public void removeItemGradingAttachment(String attachmentId)
public void saveOrUpdateAttachments(List list)
public void completeItemGradingData(AssessmentGradingData assessmentGradingData)
public double getAnswerScoreMCQ(ItemGradingData data, Map publishedAnswerHash)
public boolean hasDistractors(ItemDataIfc item)
item - public boolean isDistractor(ItemTextIfc itemText)
For ItemTextIfc objects that hold data for matching type questions, a distractor is a choice that has no valid matches (i.e. no correct answers). This function returns if this ItemTextIfc object has any correct answers
itemText - Copyright © 2005-2014 Sakai Project. All Rights Reserved.