package com.linkedin.thirdeye.anomaly.alert;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.linkedin.thirdeye.datalayer.dto.AlertConfigDTO;
import java.util.Objects;
import org.joda.time.DateTime;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.google.common.base.MoreObjects;
import com.linkedin.thirdeye.anomaly.task.TaskInfo;
import com.linkedin.thirdeye.datalayer.dto.EmailConfigurationDTO;
import com.linkedin.thirdeye.util.CustomDateDeserializer;
import com.linkedin.thirdeye.util.CustomDateSerializer;
@JsonIgnoreProperties(ignoreUnknown = true)
public class AlertTaskInfo implements TaskInfo {
private long jobExecutionId;
@JsonSerialize(using = CustomDateSerializer.class)
@JsonDeserialize(using = CustomDateDeserializer.class)
private DateTime windowStartTime;
@JsonSerialize(using = CustomDateSerializer.class)
@JsonDeserialize(using = CustomDateDeserializer.class)
private DateTime windowEndTime;
private EmailConfigurationDTO alertConfig;
private AlertConfigDTO alertConfigDTO;
public AlertTaskInfo(long jobExecutionId, DateTime windowStartTime,
DateTime windowEndTime, EmailConfigurationDTO alertConfig, AlertConfigDTO alertConfigDTO) {
this.jobExecutionId = jobExecutionId;
this.windowStartTime = windowStartTime;
this.windowEndTime = windowEndTime;
this.alertConfig = alertConfig;
this.alertConfigDTO = alertConfigDTO;
}
public AlertTaskInfo() {
}
public long getJobExecutionId() {
return jobExecutionId;
}
public void setJobExecutionId(long jobExecutionId) {
this.jobExecutionId = jobExecutionId;
}
public DateTime getWindowStartTime() {
return windowStartTime;
}
public void setWindowStartTime(DateTime windowStartTime) {
this.windowStartTime = windowStartTime;
}
public DateTime getWindowEndTime() {
return windowEndTime;
}
public void setWindowEndTime(DateTime windowEndTime) {
this.windowEndTime = windowEndTime;
}
public EmailConfigurationDTO getAlertConfig() {
return alertConfig;
}
public void setAlertConfig(EmailConfigurationDTO emailConfig) {
this.alertConfig = emailConfig;
}
public AlertConfigDTO getAlertConfigDTO() {
return alertConfigDTO;
}
public void setAlertConfigDTO(AlertConfigDTO alertConfig) {
this.alertConfigDTO = alertConfig;
}
@Override
public boolean equals(Object o) {
if (!(o instanceof AlertTaskInfo)) {
return false;
}
AlertTaskInfo at = (AlertTaskInfo) o;
return Objects.equals(jobExecutionId, at.getJobExecutionId())
&& Objects.equals(windowStartTime, at.getWindowStartTime())
&& Objects.equals(windowEndTime, at.getWindowEndTime())
&& Objects.equals(alertConfig, at.getAlertConfig());
}
@Override
public int hashCode() {
return Objects.hash(jobExecutionId, windowStartTime, windowEndTime, alertConfig, alertConfigDTO);
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this).add("jobExecutionId", jobExecutionId)
.add("windowStartTime", windowStartTime).add("windowEndTime", windowEndTime).toString();
}
}