/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/sam/trunk/samigo-app/src/java/org/sakaiproject/tool/assessment/ui/bean/evaluation/AgentResults.java $ * $Id: AgentResults.java 130512 2013-10-15 23:46:40Z ktsao@stanford.edu $ *********************************************************************************** * * Copyright (c) 2004, 2005, 2006, 2007, 2008 The Sakai Foundation * * Licensed under the Educational Community License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.opensource.org/licenses/ECL-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * **********************************************************************************/ package org.sakaiproject.tool.assessment.ui.bean.evaluation; import java.io.Serializable; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Set; import javax.faces.context.ExternalContext; import javax.faces.context.FacesContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.sakaiproject.content.api.FilePickerHelper; import org.sakaiproject.tool.api.ToolSession; import org.sakaiproject.tool.assessment.data.dao.grading.ItemGradingData; import org.sakaiproject.tool.assessment.data.ifc.assessment.PublishedAssessmentIfc; import org.sakaiproject.tool.assessment.ui.bean.util.Validator; import org.sakaiproject.tool.assessment.ui.listener.util.ContextUtil; import org.sakaiproject.tool.assessment.util.AttachmentUtil; import org.sakaiproject.tool.cover.SessionManager; /** * A set of information for an agent. This contains both totalScores * and questionScores information. */ public class AgentResults implements Serializable { /** * */ private static final long serialVersionUID = 2820488402465439395L; private static Log log = LogFactory.getLog(AgentResults.class); private Long assessmentGradingId; private Long itemGradingId; private String agentId; private String agentEid; private String agentDisplayId; private String firstName; private String lastName; private String lastInitial; private String email; private String idString; private String role; private PublishedAssessmentIfc publishedAssessment; private Date submittedDate; private Date attemptDate; private Boolean isLate; private Boolean forGrade; private String totalAutoScore; private String totalOverrideScore; private String finalScore; // final total score private String answer; // The abbreviated text or link of the answer private String fullAnswer=""; // The full text or link of the answer private String comments; private Integer status; private String gradedBy; private Date gradedDate; private Set itemGradingSet; private ArrayList itemGradingArrayList; private String rationale=""; private boolean retakeAllowed; private boolean isAutoSubmitted; private boolean isAttemptDateAfterDueDate; private ItemGradingData itemGrading; private List itemGradingAttachmentList; private Integer timeElapsed; private int submissionCount=0; private Double scoreSummation=new Double("0"); private Double averageScore= new Double("0"); public AgentResults() { } public Double getScoreSummation(){ return scoreSummation; } public void setScoreSummation(Double scoreSummation){ this.scoreSummation= scoreSummation; } public int getSubmissionCount(){ return submissionCount; } public void setSubmissionCount(int submissionCount){ this.submissionCount=submissionCount; } public Long getAssessmentGradingId() { return assessmentGradingId; } public void setAssessmentGradingId(Long assessmentGradingId) { this.assessmentGradingId = assessmentGradingId; } public Long getItemGradingId() { return itemGradingId; } public void setItemGradingId(Long itemGradingId) { this.itemGradingId = itemGradingId; } public PublishedAssessmentIfc getPublishedAssessment() { return publishedAssessment; } public void setPublishedAssessment(PublishedAssessmentIfc publishedAssessment) { this.publishedAssessment = publishedAssessment; } public String getAgentId() { return Validator.check(agentId, "N/A"); } public void setAgentId(String agentId) { this.agentId = agentId; } public String getAgentEid() { return Validator.check(agentEid, "N/A"); } public void setAgentEid(String agentEid) { this.agentEid = agentEid; } public String getFirstName() { return Validator.check(firstName, ""); } public void setFirstName(String name) { firstName = name; } public String getLastName() { return Validator.check(lastName, ""); } public void setLastName(String name) { lastName = name; } public String getLastInitial() { return Validator.check(lastInitial, "A"); } public void setLastInitial(String init) { lastInitial = init; } public String getEmail() { return Validator.check(email,""); } public void setEmail(String email) { this.email = email; } public String getIdString() { String escapedIdString = ContextUtil.escapeApostrophe(idString); return Validator.check(escapedIdString, "N/A"); } public void setIdString(String id) { idString = id; } public String getRole() { return Validator.check(role, "N/A"); } public void setRole(String newrole) { role = newrole; } public Date getSubmittedDate() { return submittedDate; } public void setSubmittedDate(Date submittedDate) { this.submittedDate = submittedDate; } public Date getAttemptDate() { return attemptDate; } public void setAttemptDate(Date attemptDate) { this.attemptDate = attemptDate; } public Boolean getIsLate() { return Validator.bcheck(isLate, false); } public void setIsLate(Boolean isLate) { this.isLate = isLate; } public Boolean getForGrade() { return Validator.bcheck(forGrade, true); } public void setForGrade(Boolean forGrade) { this.forGrade = forGrade; } public String getTotalAutoScore() { return getRoundedTotalAutoScore(); } public String getExactTotalAutoScore() { return Validator.check(totalAutoScore, "0").replace(',', '.'); } public String getRoundedTotalAutoScore() { if (totalAutoScore!= null){ try { String newscore = ContextUtil.getRoundedValue(totalAutoScore.replace(',', '.'), 2); return Validator.check(newscore, "N/A").replace(',', '.'); } catch (Exception e) { // encountered some weird number format/locale return Validator.check(totalAutoScore, "0").replace(',', '.'); } } else { return Validator.check(totalAutoScore, "0").replace(',', '.'); } } public void setTotalAutoScore(String totalAutoScore) { if (totalAutoScore!= null){ this.totalAutoScore = totalAutoScore.replace(',', '.'); } else { this.totalAutoScore = null; } } public String getTotalOverrideScore() { return Validator.check(totalOverrideScore, "0").replace(',', '.'); } public String getRoundedTotalOverrideScore() { if (totalOverrideScore != null) { try { String newscore = ContextUtil.getRoundedValue( totalOverrideScore.replace(',', '.'), 2); return Validator.check(newscore, "N/A").replace(',', '.'); } catch (Exception e) { // encountered some weird number format/locale return Validator.check(totalOverrideScore, "0").replace(',', '.'); } } else { return Validator.check(totalOverrideScore, "0").replace(',', '.'); } } public void setTotalOverrideScore(String totalOverrideScore) { if (totalOverrideScore!= null){ this.totalOverrideScore = totalOverrideScore.replace(',', '.'); } else { this.totalOverrideScore = null; } } public String getFinalScore() { return Validator.check(finalScore, "0").replace(',', '.'); } public String getRoundedFinalScore() { if (finalScore!= null){ try { String newscore = ContextUtil.getRoundedValue(finalScore.replace(',', '.'), 2); return Validator.check(newscore, "N/A").replace(',', '.'); } catch (Exception e) { // encountered some weird number format/locale return Validator.check(finalScore, "0").replace(',', '.'); } } else { return Validator.check(finalScore, "0").replace(',', '.'); } } public void setFinalScore(String finalScore) { if (finalScore!= null){ this.finalScore = finalScore.replace(',', '.'); } else { this.finalScore = null; } } public String getAnswer() { return Validator.check(answer, ""); } public void setAnswer(String answer) { this.answer = answer; } public String getComments() { return Validator.check(comments, ""); } public void setComments(String comments) { this.comments = comments; } public String getGradedBy() { return Validator.check(gradedBy, ""); } public void setGradedBy(String gradedBy) { this.gradedBy = gradedBy; } public Date getGradedDate() { return gradedDate; } public void setGradedDate(Date gradedDate) { this.gradedDate = gradedDate; } /** * In some cases, students are allowed to submit multiple assessment * for grading. However, the grader has the choice to select one to * represent how well the student does overall. status = 1 means * this submitted assessment is selected. */ public Integer getStatus() { return status; } public void setStatus(Integer status) { this.status = status; } public Set getItemGradingSet() { return itemGradingSet; } public void setItemGradingSet(Set itemGradingSet) { this.itemGradingSet = itemGradingSet; } // added by daisy to support to display answers to file upload question public ArrayList getItemGradingArrayList() { return itemGradingArrayList; } public void setItemGradingArrayList(ArrayList itemGradingArrayList) { this.itemGradingArrayList = itemGradingArrayList; } public String getFullAnswer() { return Validator.check(fullAnswer,""); //return Validator.check(escFullAnswer, ""); } public void setFullAnswer(String answer) { this.fullAnswer = answer; } public String getRationale() { // String unicodeRationale= ContextUtil.getStringInUnicode(rationale); return Validator.check(rationale,""); // return Validator.check(unicodeRationale, ""); } public void setRationale(String param) { this.rationale= param; } public boolean getRetakeAllowed() { return this.retakeAllowed; } public void setRetakeAllowed(boolean retakeAllowed) { this.retakeAllowed = retakeAllowed; } public boolean getIsAutoSubmitted() { return this.isAutoSubmitted; } public void setIsAutoSubmitted(boolean isAutoSubmitted) { this.isAutoSubmitted = isAutoSubmitted; } public boolean getIsAttemptDateAfterDueDate() { return this.isAttemptDateAfterDueDate; } public void setIsAttemptDateAfterDueDate(boolean isAttemptDateAfterDueDate) { this.isAttemptDateAfterDueDate = isAttemptDateAfterDueDate; } public ItemGradingData getItemGrading() { return this.itemGrading; } public void setItemGrading(ItemGradingData itemGrading) { this.itemGrading = itemGrading; } public List getItemGradingAttachmentList() { return itemGradingAttachmentList; } public void setItemGradingAttachmentList(List attachmentList) { this.itemGradingAttachmentList = attachmentList; } private boolean hasItemGradingAttachment = false; public boolean getHasItemGradingAttachment(){ if (itemGradingAttachmentList!=null && itemGradingAttachmentList.size() >0) this.hasItemGradingAttachment = true; return this.hasItemGradingAttachment; } public String addAttachmentsRedirect() { // 1. redirect to add attachment try { List filePickerList = new ArrayList(); if (itemGradingAttachmentList != null){ AttachmentUtil attachmentUtil = new AttachmentUtil(); filePickerList = attachmentUtil.prepareReferenceList(itemGradingAttachmentList); } ToolSession currentToolSession = SessionManager.getCurrentToolSession(); currentToolSession.setAttribute(FilePickerHelper.FILE_PICKER_ATTACHMENTS, filePickerList); currentToolSession.setAttribute("itemGradingId", itemGradingId); ExternalContext context = FacesContext.getCurrentInstance().getExternalContext(); context.redirect("sakai.filepicker.helper/tool"); } catch(Exception e){ log.error("fail to redirect to attachment page: " + e.getMessage()); } return "studentScores"; } public Integer getTimeElapsed() { return this.timeElapsed; } public void setTimeElapsed(Integer timeElapsed) { this.timeElapsed = timeElapsed; } public String getFormatedTimeElapsed() { String timeElapsedInString = "n/a"; if (this.timeElapsed!=null && this.timeElapsed.intValue() >0) { int totalSec = this.timeElapsed.intValue(); int hr = totalSec / 3600; int min = (totalSec % 3600)/60; int sec = (totalSec % 3600)%60; timeElapsedInString = ""; if (hr > 0) timeElapsedInString = hr + " hr "; if (min > 0) timeElapsedInString = timeElapsedInString + min + " min "; if (sec > 0) timeElapsedInString = timeElapsedInString + sec + " sec "; } return timeElapsedInString; } public String getAgentDisplayId() { return agentDisplayId; } public void setAgentDisplayId(String agentDisplayId) { this.agentDisplayId = agentDisplayId; } }