/**********************************************************************************
* $URL: https://source.sakaiproject.org/svn/edu-services/trunk/sections-service/sections-impl/integration-support/src/java/org/sakaiproject/component/section/support/IntegrationSupport.java $
* $Id: IntegrationSupport.java 105077 2012-02-24 22:54:29Z ottenhoff@longsight.com $
***********************************************************************************
*
* Copyright (c) 2005, 2006, 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.component.section.support;
import java.sql.Time;
import java.util.List;
import java.util.Set;
import org.sakaiproject.section.api.coursemanagement.Course;
import org.sakaiproject.section.api.coursemanagement.CourseSection;
import org.sakaiproject.section.api.coursemanagement.ParticipationRecord;
import org.sakaiproject.section.api.coursemanagement.User;
import org.sakaiproject.section.api.facade.Role;
/**
* Provides methods for manipulating users, courses, sections, and memberships.
* Implementations do not provide any authorization, so they are to be used for
* integration testing only.
*
* @author <a href="mailto:jholtzman@berkeley.edu">Josh Holtzman</a>
*
*/
public interface IntegrationSupport {
/**
* Creates a new course.
*
* @param siteContext
* @param title
* @param externallyManaged
* @param selfRegistrationAllowed
* @param selfSwitchingAllowed
* @return
*/
public Course createCourse(String siteContext, String title, boolean externallyManaged,
boolean selfRegistrationAllowed, boolean selfSwitchingAllowed);
/**
* Creates a new section.
*
* @param courseUuid
* @param title
* @param category
* @param maxEnrollments
* @param location
* @param startTime
* @param endTime
* @param monday
* @param tuesday
* @param wednesday
* @param thursday
* @param friday
* @param saturday
* @param sunday
* @return
*/
public CourseSection createSection(String courseUuid, String title, String category, Integer maxEnrollments,
String location, Time startTime, Time endTime, boolean monday, boolean tuesday,
boolean wednesday, boolean thursday, boolean friday, boolean saturday, boolean sunday);
/**
* Creates a new user.
*
* @param userUid
* @param displayName
* @param sortName
* @param displayId
* @return
*/
public User createUser(String userUid, String displayName, String sortName, String displayId);
/**
* Finds a user by their uuid.
*
* @param userUid
* @return
*/
public User findUser(String userUid);
/**
* Gets all of the site-scoped ParticipationRecords for a user. This can be
* a mix of enrollments and instructor or TA records, since a user can play
* different roles in different sites.
*
* @param userUid
* @return
*/
public List getAllSiteMemberships(String userUid);
/**
* Gets all of the section-scoped ParticipationRecords for a user in a
* given site. The returned Set should contain either enrollment, instructor,
* or TA records, since a user can not play different roles in the sections
* belonging to a single site.
*
* @param userUid
* @param siteContext
* @return
*/
public Set getAllSectionMemberships(String userUid, String siteContext);
/**
* Adds a user to a site (or "Course").
*
* @param userUid
* @param siteContext
* @param role
* @return
*/
public ParticipationRecord addSiteMembership(String userUid, String siteContext, Role role);
/**
* Removes a user from a site (or "Course").
*
* @param userUid
* @param siteContext
*/
public void removeSiteMembership(String userUid, String siteContext);
/**
* Adds a user to a section under the given role.
*
* @param userUid
* @param sectionUuid
* @param role
* @return
*/
public ParticipationRecord addSectionMembership(String userUid, String sectionUuid, Role role);
/**
* Removes a user from membership in a section.
*
* @param userUid
* @param sectionUuid
*/
public void removeSectionMembership(String userUid, String sectionUuid);
}