package fr.ippon.tatami.repository;
import fr.ippon.tatami.domain.status.Announcement;
import fr.ippon.tatami.domain.status.Share;
import java.util.Collection;
import java.util.List;
/**
* The Timeline Repository.
* <p/>
* A Timeline is the list of statuses that a user sees, which includes :
* - The statuses from the people he follows
* - His own statuses
* - Statuses that were shared by the people he follows or by himself
*
* @author Julien Dubois
*/
public interface TimelineRepository {
boolean isStatusInTimeline(String login, String statusId);
void addStatusToTimeline(String login, String statusId);
void removeStatusesFromTimeline(String login, Collection<String> statusIdsToDelete);
void shareStatusToTimeline(String sharedByLogin, String timelineLogin, Share share);
void announceStatusToTimeline(String announcedByLogin, List<String> logins, Announcement announcement);
void deleteTimeline(String login);
/**
* The user timeline : the user's statuses, and statuses from users he follows.
* - The key is the statusId of the statuses
* - The value is always null
*/
List<String> getTimeline(String login, int size, String start, String finish);
}