package com.linkedin.thirdeye.datalayer.bao.jdbc;
import com.google.inject.Singleton;
import com.linkedin.thirdeye.datalayer.bao.DashboardConfigManager;
import com.linkedin.thirdeye.datalayer.dto.DashboardConfigDTO;
import com.linkedin.thirdeye.datalayer.pojo.DashboardConfigBean;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.collections.CollectionUtils;
import com.linkedin.thirdeye.datalayer.util.Predicate;
@Singleton
public class DashboardConfigManagerImpl extends AbstractManagerImpl<DashboardConfigDTO>
implements DashboardConfigManager {
private static final String FIND_BY_NAME_LIKE = " WHERE active = :active and name like :name";
public DashboardConfigManagerImpl() {
super(DashboardConfigDTO.class, DashboardConfigBean.class);
}
@Override
public DashboardConfigDTO findByName(String name) {
Predicate predicate = Predicate.EQ("name", name);
List<DashboardConfigBean> list = genericPojoDao.get(predicate, DashboardConfigBean.class);
DashboardConfigDTO result = null;
if (CollectionUtils.isNotEmpty(list)) {
result = MODEL_MAPPER.map(list.get(0), DashboardConfigDTO.class);
}
return result;
}
@Override
public List<DashboardConfigDTO> findByDataset(String dataset) {
Predicate predicate = Predicate.EQ("dataset", dataset);
return findByPredicate(predicate);
}
@Override
public List<DashboardConfigDTO> findActiveByDataset(String dataset) {
Predicate datasetPredicate = Predicate.EQ("dataset", dataset);
Predicate activePredicate = Predicate.EQ("active", true);
return findByPredicate(Predicate.AND(datasetPredicate, activePredicate));
}
public List<DashboardConfigDTO> findWhereNameLikeAndActive(String name) {
Map<String, Object> parameterMap = new HashMap<>();
parameterMap.put("name", name);
parameterMap.put("active", true);
List<DashboardConfigBean> list =
genericPojoDao.executeParameterizedSQL(FIND_BY_NAME_LIKE, parameterMap, DashboardConfigBean.class);
return convertBeanListToDTOList(list);
}
}