package com.linkedin.thirdeye.anomalydetection.performanceEvaluation;
import com.linkedin.thirdeye.api.DimensionMap;
import com.linkedin.thirdeye.datalayer.dto.MergedAnomalyResultDTO;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.joda.time.Interval;
public abstract class BasePerformanceEvaluate implements PerformanceEvaluate {
/**
* convert merge anomalies to a dimension-intervals map
* @param mergedAnomalyResultDTOList
* @return
*/
public Map<DimensionMap, List<Interval>> mergedAnomalyResultsToIntervalMap (List<MergedAnomalyResultDTO> mergedAnomalyResultDTOList) {
Map<DimensionMap, List<Interval>> anomalyIntervals = new HashMap<>();
for(MergedAnomalyResultDTO mergedAnomaly : mergedAnomalyResultDTOList) {
if(!anomalyIntervals.containsKey(mergedAnomaly.getDimensions())) {
anomalyIntervals.put(mergedAnomaly.getDimensions(), new ArrayList<Interval>());
}
anomalyIntervals.get(mergedAnomaly.getDimensions()).add(
new Interval(mergedAnomaly.getStartTime(), mergedAnomaly.getEndTime()));
}
return anomalyIntervals;
}
/**
* convert merge anomalies to interval list without considering the dimension
* @param mergedAnomalyResultDTOList
* @return
*/
public List<Interval> mergedAnomalyResultsToIntervals (List<MergedAnomalyResultDTO> mergedAnomalyResultDTOList) {
List<Interval> anomalyIntervals = new ArrayList<>();
for(MergedAnomalyResultDTO mergedAnomaly : mergedAnomalyResultDTOList) {
anomalyIntervals.add(new Interval(mergedAnomaly.getStartTime(), mergedAnomaly.getEndTime()));
}
return anomalyIntervals;
}
}