/** * Licensed to Jasig under one or more contributor license * agreements. See the NOTICE file distributed with this work * for additional information regarding copyright ownership. * Jasig licenses this file to you under the Apache 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.apache.org/licenses/LICENSE-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.jasig.schedassist.impl.statistics; import java.util.Date; import java.util.List; import java.util.Map; import org.jasig.schedassist.impl.EventType; import org.jasig.schedassist.model.IScheduleOwner; /** * Interface defines operations for retrieving {@link AppointmentEvent}s. * * @author Nicholas Blair, nblair@doit.wisc.edu * @version $Id: StatisticsDao.java 2321 2010-07-30 17:32:27Z npblair $ */ public interface StatisticsDao { /** * Get a count of all {@link AppointmentEvent}s that occurred each day between * the start and end time arguments. * * @param startTime * @param endTime * @return a never null, but possibly empty {@link Map} of event counts per day */ List<DailyEventSummary> getEventCounts(Date startTime, Date endTime); /** * Get a count of {@link AppointmentEvent}s that match the {@link EventType} argument * that occurred each day between the start and end time arguments. * * @param startTime * @param endTime * @param eventType * @return a never null, but possibly empty {@link Map} of event counts per day */ List<DailyEventSummary> getEventCounts(Date startTime, Date endTime, EventType eventType); /** * Get all {@link AppointmentEvent}s between the start and end times. * * @param startTime * @param endTime * @return a never null, but possibly empty, {@link List} of {@link AppointmentEvent}s. */ List<AppointmentEvent> getEvents(Date startTime, Date endTime); /** * Get all {@link AppointmentEvent}s for the specified {@link IScheduleOwner} * between the start and end times. * * @param owner * @param startTime * @param endTime * @return a never null, but possibly empty, {@link List} of {@link AppointmentEvent}s. */ List<AppointmentEvent> getEvents(IScheduleOwner owner, Date startTime, Date endTime); /** * Get the {@link AppointmentEvent}s for the specified {@link IScheduleOwner} and {@link EventType} * between the start and end times. * * @param owner * @param startTime * @param endTime * @param eventType * @return a never null, but possibly empty, {@link List} of {@link AppointmentEvent}s. */ List<AppointmentEvent> getEvents(IScheduleOwner owner, Date startTime, Date endTime, EventType eventType); /** * Get the {@link AppointmentEvent}s for the specified {@link IScheduleOwner} and {@link EventType}s * between the start and end times. * * @param owner * @param startTime * @param endTime * @param eventTypes * @return a never null, but possibly empty, {@link List} of {@link AppointmentEvent}s. */ List<AppointmentEvent> getEvents(IScheduleOwner owner, Date startTime, Date endTime, List<EventType> eventTypes); /** * * @param owner * @param visitorUsername * @param startTime * @param endTime * @return a never null, but possibly empty, {@link List} of {@link AppointmentEvent}s. */ List<AppointmentEvent> getEvents(IScheduleOwner owner, String visitorUsername, Date startTime, Date endTime); /** * * @param owner * @param visitorUsername * @param startTime * @param endTime * @param eventType * @return a never null, but possibly empty, {@link List} of {@link AppointmentEvent}s. */ List<AppointmentEvent> getEvents(IScheduleOwner owner, String visitorUsername, Date startTime, Date endTime, EventType eventType); /** * * @param owner * @param visitorUsername * @param startTime * @param endTime * @param eventTypes * @return a never null, but possibly empty, {@link List} of {@link AppointmentEvent}s. */ List<AppointmentEvent> getEvents(IScheduleOwner owner, String visitorUsername, Date startTime, Date endTime, List<EventType> eventTypes); }