package rabbit.data.internal.xml.access; import rabbit.data.access.model.ISessionData; import rabbit.data.access.model.WorkspaceStorage; import rabbit.data.internal.access.model.SessionData; import rabbit.data.internal.xml.IDataStore; import rabbit.data.internal.xml.StoreNames; import rabbit.data.internal.xml.schema.events.EventListType; import rabbit.data.internal.xml.schema.events.SessionEventListType; import rabbit.data.internal.xml.schema.events.SessionEventType; import com.google.inject.Inject; import com.google.inject.name.Named; import org.joda.time.Duration; import org.joda.time.LocalDate; import java.util.Collection; /** * Accesses session data events. */ public class SessionDataAccessor extends AbstractAccessor<ISessionData, SessionEventType, SessionEventListType> { /** * Constructor. * * @param store The data store to get the data from. * @throws NullPointerException If argument is null. */ @Inject SessionDataAccessor(@Named(StoreNames.SESSION_STORE) IDataStore store) { super(store); } @Override protected ISessionData createDataNode(LocalDate cal, WorkspaceStorage ws, SessionEventType type) throws Exception { return new SessionData(cal, ws, new Duration(type.getDuration())); } @Override protected Collection<SessionEventListType> getCategories(EventListType list) { return list.getSessionEvents(); } @Override protected Collection<SessionEventType> getElements(SessionEventListType list) { return list.getSessionEvent(); } }