package cz.muni.fi.rtc.teacherWorkbench.model;

import java.util.Set;

/**
 * Interface defining project to be imported
 * @author Jan Stastny
 *
 */
public interface Project {

	/**
	 * Name of the project. Has to be unique within the RTC server
	 * @return Project name
	 */
	public String getName();
	
	/**
	 * Short description of the project
	 * @return Short description of the project
	 */
	public String getSummary();
	
	/**
	 * Long description of the project
	 * @return Long description
	 */
	public String getDescrition();
	
	/**
	 * Members of the team, including teachers. 
	 * Roles of the members are determined by {@link Project#getUserRole(ImportedPerson)}
	 * @return Members of the team
	 */
	public Set getMembers();
	
	/**
	 * ID of the process template the newly created project should use
	 * @return ID of the process template
	 */
	public String getProcessTemplate();
	
	/**
	 * Get the process role ID for the given role
	 * @param user User to get role of
	 * @return Role id
	 */
	public Set getUserRoles(ImportedPerson user);
	
	/**
	 * Tells if the user should be in the root of the organizational hierarchy.
	 * This is typical for teachers, who are not involved in development and therefore
	 * are not members of team 
	 * @param user User to test
	 * @return True if the user should be in the root folder
	 */
	public boolean isInRoot(ImportedPerson user);
	
}