package com.linkedin.thirdeye.client;
import com.linkedin.thirdeye.datalayer.bao.AlertConfigManager;
import com.linkedin.thirdeye.datalayer.bao.AnomalyFunctionManager;
import com.linkedin.thirdeye.datalayer.bao.ClassificationConfigManager;
import com.linkedin.thirdeye.datalayer.bao.DashboardConfigManager;
import com.linkedin.thirdeye.datalayer.bao.DataCompletenessConfigManager;
import com.linkedin.thirdeye.datalayer.bao.DatasetConfigManager;
import com.linkedin.thirdeye.datalayer.bao.DetectionStatusManager;
import com.linkedin.thirdeye.datalayer.bao.EmailConfigurationManager;
import com.linkedin.thirdeye.datalayer.bao.EntityToEntityMappingManager;
import com.linkedin.thirdeye.datalayer.bao.EventManager;
import com.linkedin.thirdeye.datalayer.bao.AutotuneConfigManager;
import com.linkedin.thirdeye.datalayer.bao.GroupedAnomalyResultsManager;
import com.linkedin.thirdeye.datalayer.bao.IngraphDashboardConfigManager;
import com.linkedin.thirdeye.datalayer.bao.IngraphMetricConfigManager;
import com.linkedin.thirdeye.datalayer.bao.JobManager;
import com.linkedin.thirdeye.datalayer.bao.MergedAnomalyResultManager;
import com.linkedin.thirdeye.datalayer.bao.MetricConfigManager;
import com.linkedin.thirdeye.datalayer.bao.OverrideConfigManager;
import com.linkedin.thirdeye.datalayer.bao.RawAnomalyResultManager;
import com.linkedin.thirdeye.datalayer.bao.TaskManager;
import com.linkedin.thirdeye.datalayer.bao.jdbc.AlertConfigManagerImpl;
import com.linkedin.thirdeye.datalayer.bao.jdbc.AnomalyFunctionManagerImpl;
import com.linkedin.thirdeye.datalayer.bao.jdbc.ClassificationConfigManagerImpl;
import com.linkedin.thirdeye.datalayer.bao.jdbc.DashboardConfigManagerImpl;
import com.linkedin.thirdeye.datalayer.bao.jdbc.DataCompletenessConfigManagerImpl;
import com.linkedin.thirdeye.datalayer.bao.jdbc.DatasetConfigManagerImpl;
import com.linkedin.thirdeye.datalayer.bao.jdbc.DetectionStatusManagerImpl;
import com.linkedin.thirdeye.datalayer.bao.jdbc.EmailConfigurationManagerImpl;
import com.linkedin.thirdeye.datalayer.bao.jdbc.EntityToEntityMappingManagerImpl;
import com.linkedin.thirdeye.datalayer.bao.jdbc.EventManagerImpl;
import com.linkedin.thirdeye.datalayer.bao.jdbc.AutotuneConfigManagerImpl;
import com.linkedin.thirdeye.datalayer.bao.jdbc.GroupedAnomalyResultsManagerImpl;
import com.linkedin.thirdeye.datalayer.bao.jdbc.IngraphDashboardConfigManagerImpl;
import com.linkedin.thirdeye.datalayer.bao.jdbc.IngraphMetricConfigManagerImpl;
import com.linkedin.thirdeye.datalayer.bao.jdbc.JobManagerImpl;
import com.linkedin.thirdeye.datalayer.bao.jdbc.MergedAnomalyResultManagerImpl;
import com.linkedin.thirdeye.datalayer.bao.jdbc.MetricConfigManagerImpl;
import com.linkedin.thirdeye.datalayer.bao.jdbc.OverrideConfigManagerImpl;
import com.linkedin.thirdeye.datalayer.bao.jdbc.RawAnomalyResultManagerImpl;
import com.linkedin.thirdeye.datalayer.bao.jdbc.TaskManagerImpl;
import com.linkedin.thirdeye.datalayer.util.DaoProviderUtil;
/**
* Singleton service registry for Data Access Objects (DAOs)
*/
public class DAORegistry {
private static final DAORegistry INSTANCE = new DAORegistry();
/****************************************************************************
* SINGLETON
*/
public static DAORegistry getInstance() {
return INSTANCE;
}
/**
* **USE FOR TESTING ONLY**
* Return a DAO registry for testing purpose, which may be performed in arbitrary order and
* hence need independent registry for each test.
*
* @return an independent DAO registry to the global singleton registry.
*/
public static DAORegistry getTestInstance() {
return new DAORegistry();
}
/**
* internal constructor.
*/
private DAORegistry() {}
/****************************************************************************
* GETTERS/SETTERS
*/
public AnomalyFunctionManager getAnomalyFunctionDAO() {
return DaoProviderUtil.getInstance(AnomalyFunctionManagerImpl.class);
}
public EmailConfigurationManager getEmailConfigurationDAO() {
return DaoProviderUtil.getInstance(EmailConfigurationManagerImpl.class);
}
public AlertConfigManager getAlertConfigDAO() {
return DaoProviderUtil.getInstance(AlertConfigManagerImpl.class);
}
public RawAnomalyResultManager getRawAnomalyResultDAO() {
return DaoProviderUtil.getInstance(RawAnomalyResultManagerImpl.class);
}
public MergedAnomalyResultManager getMergedAnomalyResultDAO() {
return DaoProviderUtil.getInstance(MergedAnomalyResultManagerImpl.class);
}
public JobManager getJobDAO() {
return DaoProviderUtil.getInstance(JobManagerImpl.class);
}
public TaskManager getTaskDAO() {
return DaoProviderUtil.getInstance(TaskManagerImpl.class);
}
public DatasetConfigManager getDatasetConfigDAO() {
return DaoProviderUtil.getInstance(DatasetConfigManagerImpl.class);
}
public MetricConfigManager getMetricConfigDAO() {
return DaoProviderUtil.getInstance(MetricConfigManagerImpl.class);
}
public DashboardConfigManager getDashboardConfigDAO() {
return DaoProviderUtil.getInstance(DashboardConfigManagerImpl.class);
}
public IngraphDashboardConfigManager getIngraphDashboardConfigDAO() {
return DaoProviderUtil.getInstance(IngraphDashboardConfigManagerImpl.class);
}
public IngraphMetricConfigManager getIngraphMetricConfigDAO() {
return DaoProviderUtil.getInstance(IngraphMetricConfigManagerImpl.class);
}
public OverrideConfigManager getOverrideConfigDAO() {
return DaoProviderUtil.getInstance(OverrideConfigManagerImpl.class);
}
public DataCompletenessConfigManager getDataCompletenessConfigDAO() {
return DaoProviderUtil.getInstance(DataCompletenessConfigManagerImpl.class);
}
public EventManager getEventDAO() {
return DaoProviderUtil.getInstance(EventManagerImpl.class);
}
public DetectionStatusManager getDetectionStatusDAO() {
return DaoProviderUtil.getInstance(DetectionStatusManagerImpl.class);
}
public AutotuneConfigManager getAutotuneConfigDAO() {
return DaoProviderUtil.getInstance(AutotuneConfigManagerImpl.class);
}
public ClassificationConfigManager getClassificationConfigDAO() {
return DaoProviderUtil.getInstance(ClassificationConfigManagerImpl.class);
}
public EntityToEntityMappingManager getEntityToEntityMappingDAO() {
return DaoProviderUtil.getInstance(EntityToEntityMappingManagerImpl.class);
}
public GroupedAnomalyResultsManager getGroupedAnomalyResultsDAO() {
return DaoProviderUtil.getInstance(GroupedAnomalyResultsManagerImpl.class);
}
}