package com.linkedin.thirdeye.datalayer.bao.jdbc; import com.google.inject.Singleton; import com.linkedin.thirdeye.datalayer.bao.AutotuneConfigManager; import com.linkedin.thirdeye.datalayer.dto.AutotuneConfigDTO; import com.linkedin.thirdeye.datalayer.pojo.AutotuneConfigBean; import com.linkedin.thirdeye.datalayer.util.Predicate; import java.util.List; @Singleton public class AutotuneConfigManagerImpl extends AbstractManagerImpl<AutotuneConfigDTO> implements AutotuneConfigManager { private final String FUNCTION_ID = "functionId"; private final String AUTOTUNE_METHOD = "autoTuneMethod"; private final String PERFORMANCE_EVALUATION_METHOD = "performanceEvaluationMethod"; private final String START_TIME = "startTime"; private final String END_TIME = "endTime"; private final String GOAL = "goal"; public AutotuneConfigManagerImpl() { super(AutotuneConfigDTO.class, AutotuneConfigBean.class); } @Override public List<AutotuneConfigDTO> findAllByFunctionId(long functionId) { Predicate predicate = Predicate.EQ(FUNCTION_ID, functionId); return findByPredicate(predicate); } @Override public List<AutotuneConfigDTO> findAllByFunctionIdAndAutotuneMethod(long functionId, String autoTuneMethod) { Predicate predicate = Predicate.AND( Predicate.EQ(FUNCTION_ID, functionId), Predicate.EQ(AUTOTUNE_METHOD, autoTuneMethod)); return findByPredicate(predicate); } @Override public List<AutotuneConfigDTO> findAllByFunctionIdAutotuneAndEvaluationMethod(long functionId, String autoTuneMethod, String performanceEvaluationMethod) { Predicate predicate = Predicate.AND(Predicate.EQ(FUNCTION_ID, functionId), Predicate.EQ(AUTOTUNE_METHOD, autoTuneMethod), Predicate.EQ(PERFORMANCE_EVALUATION_METHOD, performanceEvaluationMethod)); return findByPredicate(predicate); } @Override public List<AutotuneConfigDTO> findAllByFuctionIdAndWindow(long functionId, long startTime, long endTime) { Predicate predicate = Predicate.AND(Predicate.EQ(FUNCTION_ID, functionId), Predicate.GE(START_TIME, startTime), Predicate.LE(END_TIME, endTime)); return findByPredicate(predicate); } }