package rocks.inspectit.shared.cs.cmr.service;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import rocks.inspectit.shared.all.cmr.service.ServiceExporterType;
import rocks.inspectit.shared.all.cmr.service.ServiceInterface;
import rocks.inspectit.shared.all.communication.data.HttpTimerData;
/**
* Service to access the HttpTimerData.
*
* @author Stefan Siegl
*/
@ServiceInterface(exporter = ServiceExporterType.HTTP)
public interface IHttpTimerDataAccessService {
/**
* Returns a list of the http timer data for a given template. In this template, only the
* platform id is extracted.
*
* @param timerData
* The template containing the platform id.
* @param includeRequestMethod
* whether or not the request method should be include in the categorization.
* @return The list of the timer data object.
*/
List<HttpTimerData> getAggregatedTimerData(HttpTimerData timerData, boolean includeRequestMethod);
/**
* Returns a list of the http timer data for a given template. In this template, only the
* platform id is extracted.
*
* @param timerData
* The template containing the platform id.
* @param includeRequestMethod
* whether or not the request method should be include in the categorization.
* @param fromDate
* Date to include data from.
* @param toDate
* Date to include data to.
* @return The list of the timer data object.
*/
List<HttpTimerData> getAggregatedTimerData(HttpTimerData timerData, boolean includeRequestMethod, Date fromDate, Date toDate);
/**
* Returns a list of http timer data that is aggregated the value of the given http request
* parameter. For this purpose the <code>uri</code> field of the http timer data is re-used to
* store this value.
*
* @param timerData
* the template containing the platform id.
* @param includeRequestMethod
* whether or not the request method should be include in the categorization.
*
* @return The list of the timer data objects that are aggregated by the tagged value.
*/
List<HttpTimerData> getTaggedAggregatedTimerData(HttpTimerData timerData, boolean includeRequestMethod);
/**
* Returns a list of http timer data that is aggregated the value of the given http request
* parameter. For this purpose the <code>uri</code> field of the http timer data is re-used to
* store this value.
*
* @param timerData
* the template containing the platform id.
* @param includeRequestMethod
* whether or not the request method should be include in the categorization.
* @param fromDate
* Date to include data from.
* @param toDate
* Date to include data to.
*
* @return The list of the timer data objects that are aggregated by the tagged value.
*/
List<HttpTimerData> getTaggedAggregatedTimerData(HttpTimerData timerData, boolean includeRequestMethod, Date fromDate, Date toDate);
/**
* Returns the {@link HttpTimerData} list that can be used as the input for the plotting. From
* the template list the platform ident will be used as well as all URI and tagged values.
*
* @param templates
* Templates.
* @param fromDate
* From date.
* @param toDate
* To date
* @param retrieveByTag
* If tag values from the templates should be used when retrieving the data. If false
* is passed, URi will be used from templates.
* @return List of {@link HttpTimerData}.
*/
List<HttpTimerData> getChartingHttpTimerDataFromDateToDate(Collection<HttpTimerData> templates, Date fromDate, Date toDate, boolean retrieveByTag);
}