package org.splat.service;
-import java.util.Date;
import java.util.List;
import org.splat.dal.bo.kernel.User;
import org.splat.service.dto.DocToCompareDTO;
import org.splat.service.dto.DocumentDTO;
import org.splat.service.dto.StudyFacadeDTO;
+import org.splat.service.dto.UserDTO;
import org.splat.service.dto.StudyFacadeDTO.ScenarioDTO;
/**
* @param index
* the study id
*/
- public void removeStudy(final long index);
+ void removeStudy(final Long index);
/**
* Create a new study.
* @see #isPublic()
*/
boolean moveToPublic(Study aStudy);
-
+
/**
* Moves this study from the Public to the Private area of the repository.
*
* @return the unmodifiable not null transient list of contributors of this study
*/
List<User> getContributors(Study aStudy);
-
+
/**
* Mark study as reference.
*
* the Study
*/
void markStudyAsReference(Study aStudy);
-
+
/**
* Remove study as reference. This operation is inverse one to Mark as reference.
*
* the Study
*/
void removeStudyAsReference(Study aStudy);
-
+
/**
* Get studies, scenarios and publications available for comparison.
* <br><b> DocumentDto.id are actually filled in with Publication ids.</b>
* if a study with such id does not exist in the database.
*/
String getDescription(Long studyId) throws InvalidParameterException;
-
+
/**
* Set the description attribute related to the study.
*
* @param studyId
* the study id
* @throws InvalidParameterException
- * if no study with such Id has been found in the database.
+ * if no study with such Id has been found in the database.
* @return true if succeeded, false if study doesn't have a description.
*/
boolean removeDescription(final Long studyId)
* @param userName
* the name of the user who compare the results.
* @throws IncompatibleDataException
- * if data is incompatible for "Compare the studies" functionality.
+ * if data is incompatible for "Compare the studies" functionality.
*
* @return path to result file in the vault.
*/
String compare(List<DocToCompareDTO> docsList, final String userName)
throws IncompatibleDataException;
+
+ /**
+ * Get readers of a given study.
+ * @param studyId the study id.
+ * @return list of user DTO corresponding to the study readers.
+ * @throws InvalidParameterException if no study with such id has been found in the database.
+ */
+ List<UserDTO> getReaders(final long studyId) throws InvalidParameterException;
+
+ /**
+ * Add reader to a given study.
+ * @param studyId the study id.
+ * @param userId the user id.
+ * @return true if the user has been added as a reader
+ * @throws InvalidParameterException if no study or user with such id has been found in the database.
+ */
+ boolean addReader(final long studyId, final long userId) throws InvalidParameterException;
+
+ /**
+ * Remove reader from a given study.
+ * @param studyId the study id.
+ * @param userId the user id.
+ * @return true if the relation has been found and removed
+ * @throws InvalidParameterException if no study or user with such id has been found in the database.
+ */
+ boolean removeReader(final long studyId, final long userId) throws InvalidParameterException;
}