package com.linkedin.thirdeye.datalayer.bao.jdbc;
import com.google.inject.Singleton;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import com.linkedin.thirdeye.datalayer.bao.AnomalyFunctionManager;
import com.linkedin.thirdeye.datalayer.dto.AnomalyFunctionDTO;
import com.linkedin.thirdeye.datalayer.pojo.AnomalyFunctionBean;
import com.linkedin.thirdeye.datalayer.util.Predicate;
@Singleton
public class AnomalyFunctionManagerImpl extends AbstractManagerImpl<AnomalyFunctionDTO>
implements AnomalyFunctionManager {
public AnomalyFunctionManagerImpl() {
super(AnomalyFunctionDTO.class, AnomalyFunctionBean.class);
}
@Override
public List<AnomalyFunctionDTO> findAllByCollection(String collection) {
Predicate predicate = Predicate.EQ("collection", collection);
List<AnomalyFunctionBean> list = genericPojoDao.get(predicate, AnomalyFunctionBean.class);
List<AnomalyFunctionDTO> result = new ArrayList<>();
for (AnomalyFunctionBean abstractBean : list) {
AnomalyFunctionDTO dto = MODEL_MAPPER.map(abstractBean, AnomalyFunctionDTO.class);
result.add(dto);
}
return result;
}
@Override
public List<String> findDistinctTopicMetricsByCollection(String collection) {
Predicate predicate = Predicate.EQ("collection", collection);
List<AnomalyFunctionDTO> dtoList = findByPredicate(predicate);
Set<String> metrics = new HashSet<>();
for (AnomalyFunctionDTO dto : dtoList) {
metrics.add(dto.getTopicMetric());
}
return new ArrayList<>(metrics);
}
@Override
public List<AnomalyFunctionDTO> findAllActiveFunctions() {
Predicate predicate = Predicate.EQ("active", true);
return findByPredicate(predicate);
}
}