package com.linkedin.thirdeye.datalayer.pojo;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@JsonIgnoreProperties(ignoreUnknown = true)
public class AlertConfigBean extends AbstractBean {
String name;
String cronExpression;
boolean active;
EmailConfig emailConfig;
ReportConfigCollection reportConfigCollection;
Map<String, String> groupByConfig = new HashMap<>();
Map<String, String> groupFilterConfig = new HashMap<>();
Map<String, String> groupTimeBasedMergeConfig = new HashMap<>();
String recipients;
String fromAddress;
public String getCronExpression() {
return cronExpression;
}
public String getFromAddress() {
return fromAddress;
}
public void setFromAddress(String fromAddress) {
this.fromAddress = fromAddress;
}
public String getRecipients() {
return recipients;
}
public void setRecipients(String recipients) {
this.recipients = recipients;
}
public void setCronExpression(String cronExpression) {
this.cronExpression = cronExpression;
}
public EmailConfig getEmailConfig() {
return emailConfig;
}
public void setEmailConfig(EmailConfig emailConfig) {
this.emailConfig = emailConfig;
}
public boolean isActive() {
return active;
}
public void setActive(boolean active) {
this.active = active;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ReportConfigCollection getReportConfigCollection() {
return reportConfigCollection;
}
public void setReportConfigCollection(ReportConfigCollection reportConfigCollection) {
this.reportConfigCollection = reportConfigCollection;
}
public Map<String, String> getGroupByConfig() {
return groupByConfig;
}
public void setGroupByConfig(Map<String, String> groupByConfig) {
this.groupByConfig = groupByConfig;
}
public Map<String, String> getGroupFilterConfig() {
return groupFilterConfig;
}
public void setGroupFilterConfig(Map<String, String> groupFilterConfig) {
this.groupFilterConfig = groupFilterConfig;
}
public Map<String, String> getGroupTimeBasedMergeConfig() {
return groupTimeBasedMergeConfig;
}
public void setGroupTimeBasedMergeConfig(Map<String, String> groupTimeBasedMergeConfig) {
this.groupTimeBasedMergeConfig = groupTimeBasedMergeConfig;
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static class EmailConfig {
long anomalyWatermark = 0l;
List<Long> functionIds = new ArrayList<>();
public List<Long> getFunctionIds() {
return functionIds;
}
public void setFunctionIds(List<Long> functionIds) {
this.functionIds = functionIds;
}
public long getAnomalyWatermark() {
return anomalyWatermark;
}
public void setAnomalyWatermark(long lastNotifiedAnomalyId) {
this.anomalyWatermark = lastNotifiedAnomalyId;
}
@Override
public String toString() {
return "EmailConfig{" +
"functionIds=" + functionIds +
", anomalyWatermark=" + anomalyWatermark +
'}';
}
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static class ReportMetricConfig {
COMPARE_MODE compareMode = COMPARE_MODE.Wo2W;
Long metricId;
List<String> dimensions = new ArrayList<>();
public COMPARE_MODE getCompareMode() {
return compareMode;
}
public void setCompareMode(COMPARE_MODE compareMode) {
this.compareMode = compareMode;
}
public List<String> getDimensions() {
return dimensions;
}
public void setDimensions(List<String> dimensions) {
this.dimensions = dimensions;
}
public Long getMetricId() {
return metricId;
}
public void setMetricId(Long metricId) {
this.metricId = metricId;
}
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static class ReportConfigCollection {
boolean enabled;
boolean intraDay;
long delayOffsetMillis = 2 * 36_00_000; // 2 hours
List<ReportMetricConfig> reportMetricConfigs = new ArrayList<>();
String contactEmail;
public boolean isIntraDay() {
return intraDay;
}
public void setIntraDay(boolean intraDay) {
this.intraDay = intraDay;
}
public long getDelayOffsetMillis() {
return delayOffsetMillis;
}
public void setDelayOffsetMillis(long delayOffsetMillis) {
this.delayOffsetMillis = delayOffsetMillis;
}
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public String getContactEmail() {
return contactEmail;
}
public List<ReportMetricConfig> getReportMetricConfigs() {
return reportMetricConfigs;
}
public void setReportMetricConfigs(List<ReportMetricConfig> reportMetricConfigs) {
this.reportMetricConfigs = reportMetricConfigs;
}
public void setContactEmail(String contactEmail) {
this.contactEmail = contactEmail;
}
@Override public String toString() {
return "ReportConfigCollection{" +
"contactEmail='" + contactEmail + '\'' +
", enabled=" + enabled +
", reportMetricConfigs=" + reportMetricConfigs +
'}';
}
}
public enum COMPARE_MODE {
WoW, Wo2W, Wo3W, Wo4W
}
}