/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/assignment/trunk/assignment-api/api/src/java/org/sakaiproject/assignment/api/AssignmentService.java $ * $Id: AssignmentService.java 127838 2013-07-26 15:55:26Z matthew.buckett@it.ox.ac.uk $ *********************************************************************************** * * Copyright (c) 2003, 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.assignment.api; import java.io.OutputStream; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Map; import org.sakaiproject.entity.api.EntityProducer; import org.sakaiproject.exception.IdInvalidException; import org.sakaiproject.exception.IdUnusedException; import org.sakaiproject.exception.IdUsedException; import org.sakaiproject.exception.InUseException; import org.sakaiproject.exception.PermissionException; import org.sakaiproject.user.api.User; import org.w3c.dom.Element; import org.sakaiproject.site.api.Group; /** * <p> * AssignmentService is the service that handles assignments. * </p> * <p> * Each Assignment has an associated AssignmentContent (an AssignmentContent can belong to more the one Assignment) and a list of AssignmentSubmission (the student responses to the Assignment). * </p> */ public interface AssignmentService extends EntityProducer { /** The type string for this application: should not change over time as it may be stored in various parts of persistent entities. */ static final String APPLICATION_ID = "sakai:assignment"; /** This string starts the references to resources in this service. */ public static final String REFERENCE_ROOT = "/assignment"; /** Security function giving the user permission to receive assignment submission email */ public static final String SECURE_ASSIGNMENT_RECEIVE_NOTIFICATIONS = "asn.receive.notifications"; /** Security lock for adding an assignment. */ public static final String SECURE_ADD_ASSIGNMENT = "asn.new"; /** Security lock for adding an assignment. */ public static final String SECURE_ADD_ASSIGNMENT_CONTENT = "asn.new"; /** Security lock for adding an assignment submission. */ public static final String SECURE_ADD_ASSIGNMENT_SUBMISSION = "asn.submit"; /** Security lock for removing an assignment. */ public static final String SECURE_REMOVE_ASSIGNMENT = "asn.delete"; /** Security lock for removing an assignment content. */ public static final String SECURE_REMOVE_ASSIGNMENT_CONTENT = "asn.delete"; /** Security lock for removing an assignment submission. */ public static final String SECURE_REMOVE_ASSIGNMENT_SUBMISSION = "asn.delete"; /** Security lock for accessing an assignment. */ public static final String SECURE_ACCESS_ASSIGNMENT = "asn.read"; /** Security lock for accessing an assignment content. */ public static final String SECURE_ACCESS_ASSIGNMENT_CONTENT = "asn.read"; /** Security lock for accessing an assignment submission. */ public static final String SECURE_ACCESS_ASSIGNMENT_SUBMISSION = "asn.submit"; /** Security lock for updating an assignment. */ public static final String SECURE_UPDATE_ASSIGNMENT = "asn.revise"; /** Security lock for updating an assignment content. */ public static final String SECURE_UPDATE_ASSIGNMENT_CONTENT = "asn.revise"; /** Security lock for updating an assignment submission. */ public static final String SECURE_UPDATE_ASSIGNMENT_SUBMISSION = "asn.submit"; /** Security lock for grading submission */ public static final String SECURE_GRADE_ASSIGNMENT_SUBMISSION = "asn.grade"; /** Security function giving the user permission to all groups, if granted to at the site level. */ public static final String SECURE_ALL_GROUPS = "asn.all.groups"; /** Security function giving the user permission to share drafts within his/her role for a given site */ public static final String SECURE_SHARE_DRAFTS = "asn.share.drafts"; /** The Reference type for a site where site groups are to be considered in security computation. */ public static final String REF_TYPE_SITE_GROUPS = "site-groups"; /** The Reference type for an assignment. */ public static final String REF_TYPE_ASSIGNMENT = "a"; /** The Reference type for an assignment where site groups are to be considered in security computation. */ public static final String REF_TYPE_ASSIGNMENT_GROUPS = "a-groups"; /** The Reference type for a submission. */ public static final String REF_TYPE_SUBMISSION = "s"; /** The Reference type for a content. */ public static final String REF_TYPE_CONTENT = "c"; /** The Reference type for a grade spreadsheet. */ public static final String REF_TYPE_GRADES = "grades"; /** The Reference type for a submissions zip. */ public static final String REF_TYPE_SUBMISSIONS = "submissions"; // the three choices for Gradebook Integration public static final String GRADEBOOK_INTEGRATION_NO = "no"; public static final String GRADEBOOK_INTEGRATION_ADD = "add"; public static final String GRADEBOOK_INTEGRATION_ASSOCIATE = "associate"; public static final String NEW_ASSIGNMENT_ADD_TO_GRADEBOOK = "new_assignment_add_to_gradebook"; // and the prop name public static final String PROP_ASSIGNMENT_ASSOCIATE_GRADEBOOK_ASSIGNMENT = "prop_new_assignment_add_to_gradebook"; /** * Check permissions for receiving assignment submission notification email * * @param context - * Describes the portlet context - generated with DefaultId.getChannel(). * @return True if the current User is allowed to receive the email, false if not. */ public boolean allowReceiveSubmissionNotification(String context); /** * Get the List of Users who can add assignment * * @param assignmentReference - * a reference to an assignment * @return the List (User) of users who can addSubmission() for this assignment. */ public List allowReceiveSubmissionNotificationUsers(String context); /** * Check permissions for adding an Assignment. * * @param context - * Describes the portlet context - generated with DefaultId.getChannel(). * @return True if the current User is allowed to add an Assignment, false if not. */ public boolean allowAddAssignment(String context); /** * Check if the user has permission to add a site-wide (not grouped) assignment. * * @param context - * Describes the portlet context - generated with DefaultId.getChannel(). * @return true if the user has permission to add a channel-wide (not grouped) assignment. */ boolean allowAddSiteAssignment(String context); /** * Check permissions for all.groups. * * @param context - * Describes the portlet context - generated with DefaultId.getChannel(). * @return True if the current User is allowed all.groups, false if not. */ public boolean allowAllGroups(String context); /** * Check permissions for reading an Assignment. * * @param assignmentReference - * The Assignment's reference. * @return True if the current User is allowed to get the Assignment, false if not. */ public boolean allowGetAssignment(String assignmentReference); /** * Get the collection of Groups defined for the context of this site that the end user has add assignment permissions in. * * @param context - * Describes the portlet context - generated with DefaultId.getChannel(). * @return The Collection (Group) of groups defined for the context of this site that the end user has add assignment permissions in, empty if none. */ Collection getGroupsAllowAddAssignment(String context); /** * Get the collection of Groups defined for the context of this site that the end user has grade assignment permissions in. * * @param context - * Describes the portlet context - generated with DefaultId.getChannel(). * @return The Collection (Group) of groups defined for the context of this site that the end user has grade assignment permissions in, empty if none. */ Collection getGroupsAllowGradeAssignment(String context, String assignmentReference); /** * Check permissions for updating an Assignment. * * @param assignmentReference - * The Assignment's reference. * @return True if the current User is allowed to update the Assignment, false if not. */ public boolean allowUpdateAssignment(String assignmentReference); /** * Check permissions for removing an Assignment. * * @param assignmentReference - * The Assignment's reference. * @return True if the current User is allowed to remove the Assignment, false if not. */ public boolean allowRemoveAssignment(String assignmentReference); /** * Check permissions for adding an AssignmentContent. * * @param context - * Describes the portlet context - generated with DefaultId.getChannel(). * @return True if the current User is allowed to add an AssignmentContent, false if not. */ public boolean allowAddAssignmentContent(String context); /** * Check permissions for get AssignmentContent * * @param contentReference - * The AssignmentContent reference. * @return True if the current User is allowed to get the AssignmentContent, false if not. */ public boolean allowGetAssignmentContent(String contentReference); /** * Check permissions for updating AssignmentContent * * @param contentReference - * The AssignmentContent reference. * @return True if the current User is allowed to update the AssignmentContent, false if not. */ public boolean allowUpdateAssignmentContent(String contentReference); /** * Check permissions for remove Assignment content * * @param contentReference - * The AssignmentContent reference. * @return True if the current User is allowed to remove the AssignmentContent, false if not. */ public boolean allowRemoveAssignmentContent(String contentReference); /** * Check permissions for add AssignmentSubmission * * @param context - * Describes the portlet context - generated with DefaultId.getChannel(). * @return True if the current User is allowed to add an AssignmentSubmission, false if not. */ public boolean allowAddSubmission(String context); /** * SAK-21525 * * @param context * @param assignment - An Assignment object. Needed for the groups to be checked. * @return */ public boolean allowAddSubmissionCheckGroups(String context, Assignment assignment); /** * Get the List of Users who can addSubmission() for this assignment. * * @param assignmentReference - * a reference to an assignment * @return the List (User) of users who can addSubmission() for this assignment. */ public List allowAddSubmissionUsers(String assignmentReference); /* Get the List of Users who can grade submission for this assignment. * * @param assignmentReference - * a reference to an assignment * @return the List (User) of users who can grade submission for this assignment. */ public List allowGradeAssignmentUsers(String assignmentReference); /** * Get the list of users who can add submission for at lease one assignment within the context * @param context the context string * @return the list of user (ids) */ public List allowAddAnySubmissionUsers(String context); /** * Get the List of Users who can add assignment * * @param context - * Describes the portlet context - generated with DefaultId.getChannel(). * @return the List (User) of users who can add assignment */ public List allowAddAssignmentUsers(String context); /** * Check permissions for reading a Submission. * * @param submissionReference - * The Submission's reference. * @return True if the current User is allowed to get the AssignmentSubmission, false if not. */ public boolean allowGetSubmission(String submissionReference); /** * Check permissions for updating Submission. * * @param submissionReference - * The Submission's reference. * @return True if the current User is allowed to update the AssignmentSubmission, false if not. */ public boolean allowUpdateSubmission(String submissionReference); /** * Check permissions for remove Submission * * @param submissionReference - * The Submission's reference. * @return True if the current User is allowed to remove the AssignmentSubmission, false if not. */ public boolean allowRemoveSubmission(String submissionReference); /** * Check permissions for grading Submission * * @param submissionReference - * The Submission's reference. * @return True if the current User is allowed to grade the AssignmentSubmission, false if not. */ public boolean allowGradeSubmission(String submissionReference); /** * Creates and adds a new Assignment to the service. * * @param context - * Describes the portlet context - generated with DefaultId.getChannel(). * @return AssignmentEdit The new Assignment object. * @throws IdInvalidException * if the id contains prohibited characers. * @throws IdUsedException * if the id is already used in the service. * @throws PermissionException * if current User does not have permission to do this. */ public AssignmentEdit addAssignment(String context) throws PermissionException; /** * Add a new assignment to the directory, from a definition in XML. Must commitEdit() to make official, or cancelEdit() when done! * * @param el * The XML DOM Element defining the assignment. * @return A locked AssignmentEdit object (reserving the id). * @exception IdInvalidException * if the assignment id is invalid. * @exception IdUsedException * if the assignment id is already used. * @exception PermissionException * if the current user does not have permission to add an assignnment. */ public AssignmentEdit mergeAssignment(Element el) throws IdInvalidException, IdUsedException, PermissionException; /** * Creates and adds a new Assignment to the service which is a copy of an existing Assignment. * * @param context - * From DefaultId.getChannel(RunData) * @param assignmentReference - * The reference of the Assignment to be duplicated. * @return The new AssignmentEdit object, or null if the original Assignment does not exist. * @throws PermissionException * if current User does not have permission to do this. */ public AssignmentEdit addDuplicateAssignment(String context, String assignmentReference) throws IdInvalidException, PermissionException, IdUsedException, IdUnusedException; /** * Removes this Assignment * * @param assignment - * The Assignment to remove. * @throws PermissionException * if current User does not have permission to do this. */ public void removeAssignment(AssignmentEdit assignment) throws PermissionException; /** * Removes this Assignment and all references to it. * * @param assignment - * The Assignment to remove. * @throws PermissionException * if current User does not have permission to do this. */ public void removeAssignmentAndAllReferences(AssignmentEdit assignment) throws PermissionException; /** * Get a locked assignment object for editing. Must commitEdit() to make official, or cancelEdit() when done! * * @param id * The assignment id string. * @return A AssignmentEdit object for editing. * @exception IdUnusedException * if not found, or if not an AssignmentEdit object * @exception PermissionException * if the current user does not have permission to edit this assignment. * @exception InUseException * if the Assignment object is locked by someone else. */ public AssignmentEdit editAssignment(String id) throws IdUnusedException, PermissionException, InUseException; /** * Commit the changes made to a AssignmentEdit object, and release the lock. The AssignmentEdit is disabled, and not to be used after this call. * * @param assignment * The AssignmentEdit object to commit. */ public void commitEdit(AssignmentEdit assignment); /** * Cancel the changes made to a AssignmentEdit object, and release the lock. The AssignmentEdit is disabled, and not to be used after this call. * * @param assignment * The AssignmentEdit object to commit. */ public void cancelEdit(AssignmentEdit assignment); /** * Creates and adds a new AssignmentContent to the service. * * @param context - * Describes the portlet context - generated with DefaultId.getChannel(). * @return AssignmentContentEdit The new AssignmentContent object. * @throws PermissionException * if current User does not have permission to do this. */ public AssignmentContentEdit addAssignmentContent(String context) throws PermissionException; /** * Add a new AssignmentContent to the directory, from a definition in XML. Must commitEdit() to make official, or cancelEdit() when done! * * @param el * The XML DOM Element defining the AssignmentContent. * @return A locked AssignmentContentEdit object (reserving the id). * @exception IdInvalidException * if the AssignmentContent id is invalid. * @exception IdUsedException * if the AssignmentContent id is already used. * @exception PermissionException * if the current user does not have permission to add an AssignnmentContent. */ public AssignmentContentEdit mergeAssignmentContent(Element el) throws IdInvalidException, IdUsedException, PermissionException; /** * Creates and adds a new AssignmentContent to the service which is a copy of an existing AssignmentContent. * * @param context - * From DefaultId.getChannel(RunData) * @param contentId - * The id of the AssignmentContent to be duplicated. * @return AssignmentContentEdit The new AssignmentContentEdit object, or null if the original does not exist. * @throws PermissionException * if current User does not have permission to do this. */ public AssignmentContentEdit addDuplicateAssignmentContent(String context, String contentReference) throws IdInvalidException, PermissionException, IdUnusedException; /** * Removes an AssignmentContent * * @param content - * the AssignmentContent to remove. * @throws an * AssignmentContentNotEmptyException if this content still has related Assignments. * @throws PermissionException * if current User does not have permission to do this. */ public void removeAssignmentContent(AssignmentContentEdit content) throws AssignmentContentNotEmptyException, PermissionException; /** * Get a locked AssignmentContent object for editing. Must commitEdit() to make official, or cancelEdit() when done! * * @param id * The content id string. * @return An AssignmentContentEdit object for editing. * @exception IdUnusedException * if not found, or if not an AssignmentContentEdit object * @exception PermissionException * if the current user does not have permission to edit this content. * @exception InUseException * if the AssignmentContent object is locked by someone else. */ public AssignmentContentEdit editAssignmentContent(String id) throws IdUnusedException, PermissionException, InUseException; /** * Commit the changes made to a AssignmentContentEdit object, and release the lock. The AssignmentContentEdit is disabled, and not to be used after this call. * * @param content * The AssignmentContentEdit object to commit. */ public void commitEdit(AssignmentContentEdit content); /** * Cancel the changes made to a AssignmentContentEdit object, and release the lock. The AssignmentContentEdit is disabled, and not to be used after this call. * * @param content * The AssignmentContentEdit object to commit. */ public void cancelEdit(AssignmentContentEdit content); /** * Adds an AssignmentSubmission * * @param context - * Describes the portlet context - generated with DefaultId.getChannel(). * @param assignmentId The assignment id * @param submitterId The submitter id * @return The new AssignmentSubmissionEdit. * @exception IdInvalidException * if the submission id is invalid. * @exception IdUsedException * if the submission id is already used. * @throws PermissionException * if the current User does not have permission to do this. */ public AssignmentSubmissionEdit addSubmission(String context, String assignmentId, String submitter) throws PermissionException; /** * Add a new AssignmentSubmission to the directory, from a definition in XML. Must commitEdit() to make official, or cancelEdit() when done! * * @param el * The XML DOM Element defining the submission. * @return A locked AssignmentSubmissionEdit object (reserving the id). * @exception IdInvalidException * if the submission id is invalid. * @exception IdUsedException * if the submission id is already used. * @exception PermissionException * if the current user does not have permission to add a submission. */ public AssignmentSubmissionEdit mergeSubmission(Element el) throws IdInvalidException, IdUsedException, PermissionException; /** * Removes an AssignmentSubmission and all references to it * * @param submission - * the AssignmentSubmission to remove. * @throws PermissionException * if current User does not have permission to do this. */ public void removeSubmission(AssignmentSubmissionEdit submission) throws PermissionException; /** * Get a locked AssignmentSubmission object for editing. Must commitEdit() to make official, or cancelEdit() when done! * * @param id * The submission id string. * @return An AssignmentSubmissionEdit object for editing. * @exception IdUnusedException * if not found, or if not an AssignmentSubmissionEdit object * @exception PermissionException * if the current user does not have permission to edit this submission. * @exception InUseException * if the AssignmentSubmission object is locked by someone else. */ public AssignmentSubmissionEdit editSubmission(String id) throws IdUnusedException, PermissionException, InUseException; /** * Commit the changes made to a AssignmentSubmissionEdit object, and release the lock. The AssignmentSubmissionEdit is disabled, and not to be used after this call. * * @param submission * The AssignmentSubmissionEdit object to commit. */ public void commitEdit(AssignmentSubmissionEdit submission); /** * Cancel the changes made to a AssignmentSubmissionEdit object, and release the lock. The AssignmentSubmissionEdit is disabled, and not to be used after this call. * * @param submission * The AssignmentSubmissionEdit object to commit. */ public void cancelEdit(AssignmentSubmissionEdit submission); /** * Access list of all AssignmentContents created by the User. * * @param owner - * The User who's AssignmentContents are requested. * @return Iterator over all AssignmentContents owned by this User. */ public Iterator getAssignmentContents(User owner); /** * Access the Assignment with the specified id. * * @param assignmentId - * The id of the Assignment. * @return The Assignment corresponding to the id, or null if it does not exist. * @throws IdUnusedException * if there is no object with this id. * @throws PermissionException * if the current user is not allowed to read this. */ public Assignment getAssignment(String assignmentId) throws IdUnusedException, PermissionException; /** * Access the AssignmentContent with the specified id. * * @param contentId - * The id of the AssignmentContent. * @return The AssignmentContent corresponding to the id, or null if it does not exist. * @throws IdUnusedException * if there is no object with this id. * @throws PermissionException * if the current user does not have permission to see this. */ public AssignmentContent getAssignmentContent(String contentId) throws IdUnusedException, PermissionException; /** * Access the AssignmentSubmission with the specified id. * * @param submissionId - * The id of the AssignmentSubmission. * @return The AssignmentSubmission corresponding to the id, or null if it does not exist. * @throws IdUnusedException * if there is no object with this id. * @throws PermissionException * if the current user is not allowed to read this. */ public AssignmentSubmission getSubmission(String submissionId) throws IdUnusedException, PermissionException; /** * Access all the Assignments which have the specified AssignmentContent. * * @param content - * The particular AssignmentContent. * @return Iterator over all the Assignments with the specified AssignmentContent. */ public Iterator getAssignments(AssignmentContent content); /** * Access all the Assignemnts associated with the context. * * @param context - * Describes the portlet context - generated with DefaultId.getChannel(). * @return Iterator over all the Assignments associated with a group. */ public Iterator getAssignmentsForContext(String context); /** * Access all the Assignemnts associated with the context and accesible by the user * * @param context - * Describes the portlet context - generated with DefaultId.getChannel(). * @param userId * The user id * @return Iterator over all the Assignments associated with a group. */ public Iterator getAssignmentsForContext(String context, String userId); /** * Access all the Assignemnts that are not deleted and self-drafted ones * * @param context - * Describes the portlet context - generated with DefaultId.getChannel(). * @return List All the Assignments will be listed */ public List getListAssignmentsForContext(String context); /** * Retrieve a map of Assignments to a list of User IDs of those who * may submit each assignment. This map is filtered to only those * assignments that can be viewed by the current user. * * @param context the Site ID to search * @return All submittable Assignments in the site mapped to the User IDs of those who can submit them. */ public Map<Assignment, List<String>> getSubmittableAssignmentsForContext(String context); /** * Access a User's AssignmentSubmission to a particular Assignment. * * @param assignmentId - * The id of the assignment. * @param person - * The User who's Submission you would like. * @return AssignmentSubmission The user's submission for that Assignment, or null if one does not exist. * @throws IdUnusedException * if the assignmentId does not correspond to an existing Assignment. * @throws PermissionException * if the current user is not allowed to read this. */ public AssignmentSubmission getSubmission(String assignmentId, User person); /** * Access a User or Group's AssignmentSubmission to a particular Assignment. * * @param assignmentId - * The id of the assignment. * @param submitterId - * The string id of the person or group who's Submission you would like. * @return AssignmentSubmission The user's submission for that Assignment, or null if one does not exist. * @throws IdUnusedException * if the assignmentId does not correspond to an existing Assignment. * @throws PermissionException * if the current user is not allowed to read this. */ public AssignmentSubmission getSubmission(String assignmentReference, String submitterId); /** * Access a User's AssignmentSubmission inside a list of AssignmentSubmission object. * * @param - submissions * The list of submissions * @param person - * The User who's Submission you would like. * @return AssignmentSubmission The user's submission for that Assignment, or null if one does not exist. */ public AssignmentSubmission getSubmission(List submissions, User person); /** * Get the submissions for an assignment. * * @param assignment - * the Assignment who's submissions you would like. * @return List over all the submissions for an Assignment. */ public List getSubmissions(Assignment assignment); /** * Return a sorted list of users representing a group. */ public List getSortedGroupUsers(Group g); /** * Get the number of submissions which has been submitted. * * @param assignmentRef - * the reference of Assignment who's submissions you would like. * @return List over all the submissions for an Assignment. */ public int getSubmittedSubmissionsCount(String assignmentRef); /** * Get the number of submissions which has not been submitted and graded. * * @param assignmentRef - * the reference of Assignment who's submissions you would like. * @return List over all the submissions for an Assignment. */ public int getUngradedSubmissionsCount(String assignmentRef); /** * Access the grades spreadsheet for the reference, either for an assignment or all assignments in a context. * * @param ref * The reference, either to a specific assignment, or just to an assignment context. * @return The grades spreadsheet bytes. * @throws IdUnusedException * if there is no object with this id. * @throws PermissionException * if the current user is not allowed to access this. */ public byte[] getGradesSpreadsheet(String ref) throws IdUnusedException, PermissionException; /** * Access the submissions zip for the assignment reference. * * @param ref * The assignment reference. * @param out * The outputStream to stream the zip file into * @return The submissions zip bytes. * @throws IdUnusedException * if there is no object with this id. * @throws PermissionException * if the current user is not allowed to access this. */ public void getSubmissionsZip(OutputStream out, String ref) throws IdUnusedException, PermissionException; /** * Access the internal reference which can be used to assess security clearance. * * @param id * The assignment id string. * @return The the internal reference which can be used to access the resource from within the system. */ public String assignmentReference(String context, String id); /** * Access the internal reference which can be used to assess security clearance. * This will make a database call, so might not be the best choice in every situation. * But, if you don't have the context (site id) and need the reference, it's the only way to get it. * @param id * The assignment id string. * @return The the internal reference which can be used to access the resource from within the system. */ public String assignmentReference(String id); /** * Access the internal reference which can be used to access the resource from within the system. * * @param id * The content id string. * @return The the internal reference which can be used to access the resource from within the system. */ public String contentReference(String context, String id); /** * Access the internal reference which can be used to access the resource from within the system. * * @param id * The submission id string. * @return The the internal reference which can be used to access the resource from within the system. */ public String submissionReference(String context, String id, String assignmentId); /** * Get the String to form an assignment grade spreadsheet * * @param context * The assignment context String * @param assignmentId * The id for the assignment object; when null, indicates all assignment in that context */ public String gradesSpreadsheetReference(String context, String assignmentId); /** * Get the string to form an assignment submissions zip file * * @param context * The assignment context String * @param assignmentId * The id for the assignment object; */ public String submissionsZipReference(String context, String assignmentId); /** * Whether assignment could be assigned to groups */ public boolean getAllowGroupAssignments(); /** * Whether assignment with group access can be added to gradebook */ public boolean getAllowGroupAssignmentsInGradebook(); /** * Whether the current user can submit */ public boolean canSubmit(String context, Assignment a); public Collection<Group> getSubmitterGroupList(String searchFilterOnly, String allOrOneGroup, String searchString, String aRef, String contextString); /** * Allow that the instructor can submit an assignment on behalf of student */ public boolean getAllowSubmitByInstructor(); /** * get appropriate submitter id list with group choice and site id * @param searchFilterOnly If true, return only those ids that matches the group filter and search criteria * @param allOrOneGroup "all" or specific group reference * @param aRef Assignment Reference * @param search The search string * @param contextString Site id * @return */ public List<String> getSubmitterIdList(String searchFilterOnly, String allOrOneGroup, String search, String aRef, String contextString); public String escapeInvalidCharsEntry(String accentedString); }