package com.griddynamics.jagger.dbapi; import com.griddynamics.jagger.dbapi.dto.DecisionPerSessionDto; import com.griddynamics.jagger.dbapi.dto.MetricNameDto; import com.griddynamics.jagger.dbapi.dto.NodeInfoPerSessionDto; import com.griddynamics.jagger.dbapi.dto.PlotIntegratedDto; import com.griddynamics.jagger.dbapi.dto.PlotSingleDto; import com.griddynamics.jagger.dbapi.dto.SummaryIntegratedDto; import com.griddynamics.jagger.dbapi.dto.SummarySingleDto; import com.griddynamics.jagger.dbapi.dto.TaskDataDto; import com.griddynamics.jagger.dbapi.dto.TaskDecisionDto; import com.griddynamics.jagger.dbapi.dto.TestInfoDto; import com.griddynamics.jagger.dbapi.entity.TaskData; import com.griddynamics.jagger.dbapi.model.MetricNode; import com.griddynamics.jagger.dbapi.model.RootNode; import com.griddynamics.jagger.dbapi.provider.SessionInfoProvider; import com.griddynamics.jagger.dbapi.util.SessionMatchingSetup; import com.griddynamics.jagger.util.Decision; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; /** * This class provide API to work with jagger database * * @author Gribov Kirill * @n * @par Details: * @details * @n */ public interface DatabaseService { /** * Returns control tree for selected sessions * * @param sessionIds - selected sessions * @return a pointer to the root element of tree */ RootNode getControlTreeForSessions(Set<String> sessionIds, SessionMatchingSetup sessionMatchingSetup) throws RuntimeException; /** * Returns map <metricNode, plot values> for specific metric nodes from control tree * * @param plots - set of metric nodes * @return plot values for metric nodes */ Map<MetricNode, PlotIntegratedDto> getPlotDataByMetricNode(Set<MetricNode> plots) throws IllegalArgumentException; /** * Returns map <metricNameDto, plot values> for specific metric names * * @param metricNames - set of metric names * @return plot values for metric names */ Map<MetricNameDto, List<PlotSingleDto>> getPlotDataByMetricNameDto(Set<MetricNameDto> metricNames) throws IllegalArgumentException; /** * Returns map <metricNode, plot values> for specific metric nodes from control tree * * @param metricNodes - set of metric nodes * @return plot values for metric nodes */ Map<MetricNode, SummaryIntegratedDto> getSummaryByMetricNodes(Set<MetricNode> metricNodes, boolean isEnableDecisionsPerMetricFetching ); /** * Returns summary values for current metrics * * @param metricNames - metric names * @return list of summary values */ Map<MetricNameDto, SummarySingleDto> getSummaryByMetricNameDto(Set<MetricNameDto> metricNames, boolean isEnableDecisionsPerMetricFetching ); /** * Returns test info for specified tests * * @param taskDataDtos - selected tests * @return map <taskDataDto, map <sessionId, test info>> */ Map<TaskDataDto, Map<String, TestInfoDto>> getTestInfoByTaskDataDto(Collection<TaskDataDto> taskDataDtos) throws RuntimeException; /** * Returns test info for specified tests ids * * @param taskIds - selected test ids * @return map <testId, map <sessionId, test info>> */ Map<Long, Map<String, TestInfoDto>> getTestInfoByTaskIds(Set<Long> taskIds) throws RuntimeException; /** * Return information about session nodes * * @param sessionIds - selected sessions * @return a list of NodeInfoPerSessionDto */ List<NodeInfoPerSessionDto> getNodeInfo(Set<String> sessionIds) throws RuntimeException; /** * Returns default monitoring parameters. See class DefaultMonitoringParameters */ Map<String, Set<String>> getDefaultMonitoringParameters(); /** * Returns SessionInfoProvider, which contains information about sessions * * @return SessionInfoProvider */ SessionInfoProvider getSessionInfoService(); /** * Returns tests for specified session ids * * @param sessionIds - selected sessions * @param sessionMatchingSetup - setup how to match sessions and what parameters to use for matching * @return list of test info */ List<TaskDataDto> getTaskDataForSessions(Set<String> sessionIds, SessionMatchingSetup sessionMatchingSetup); /** * Returns list of session ids corresponding to given task ids * * @param taskIds TaskData ids * @return list of session Ids */ List<String> getSessionIdsByTaskIds(Set<Long> taskIds); /** * Returns list of test group task ids corresponding to given test task ids * * @param taskIds TaskData ids * @return map <test-group id, set<tests ids>> */ Map<Long, Set<Long>> getTestGroupIdsByTestIds(Set<Long> taskIds); /** * Returns list of decisions (per test, test group) corresponding to given task ids * * @param taskIds TaskData ids * @return set of decisions */ Set<TaskDecisionDto> getDecisionsPerTask(Set<Long> taskIds); /** * Returns map of decisions per metric corresponding to given metricId, sessionId * * @param metricNames - set of metric names * @return map <metric, map <sessionId, decision>> of decisions */ Map<MetricNameDto, Map<String, Decision>> getDecisionsPerMetric(Set<MetricNameDto> metricNames); /** * Returns map of decisions per session corresponding to given sessionIds * * @param sessionIds - selected sessions * @return map <sessionId, decision> of decisions */ Map<String, Decision> getDecisionsPerSession(Set<String> sessionIds); /** * Checks the possibility of storing user comments * * @return true if it is possible to store user comments and false otherwise */ boolean checkIfUserCommentStorageAvailable(); /** * Checks the possibility of storing tags * * @return true if it is possible to store tags and false otherwise */ boolean checkIfTagsStorageAvailable(); DecisionPerSessionDto getDecisionPerSession(String sessionId); List<DecisionPerSessionDto> getAllDecisions(); /** * Returns task data, corresponding to defined pair of taskIs and sessionId * * @param taskId - TaskData taskId * @param sessionId - session id * @return TaskData for selected params */ TaskData getTaskData(String taskId, String sessionId); /** * Returns task data, corresponding to TaskData ids * * @param ids - TaskData ids * @return map <TaskData id, TaskData> */ Map<Long, TaskData> getTaskData(Collection<Long> ids); }