package com.linkedin.thirdeye.datalayer.pojo; import com.linkedin.thirdeye.api.DimensionMap; import java.util.Objects; import org.apache.commons.lang.ObjectUtils; import org.joda.time.DateTime; @Deprecated public class RawAnomalyResultBean extends AbstractBean implements Comparable<RawAnomalyResultBean> { private Long functionId; private Long AnomalyFeedbackId; private Long startTime; private Long endTime; private DimensionMap dimensions; // significance level private double score; // severity private double weight; private String properties; private String message; private Long creationTimeUtc; private boolean dataMissing; private boolean merged; private double avgCurrentVal; private double avgBaselineVal; public double getAvgCurrentVal(){ return this.avgCurrentVal; } public double getAvgBaselineVal(){ return this.avgBaselineVal; } public void setAvgCurrentVal(double val){ this.avgCurrentVal = val; } public void setAvgBaselineVal(double val){ this.avgBaselineVal = val; } public RawAnomalyResultBean() { creationTimeUtc = DateTime.now().getMillis(); } public DimensionMap getDimensions() { return dimensions; } public void setDimensions(DimensionMap dimensions) { this.dimensions = dimensions; } public Long getStartTime() { return startTime; } public void setStartTime(Long startTimeUtc) { this.startTime = startTimeUtc; } public Long getEndTime() { return endTime; } public void setEndTime(Long endTimeUtc) { this.endTime = endTimeUtc; } public double getScore() { return score; } public void setScore(double score) { this.score = score; } public double getWeight() { return weight; } public void setWeight(double weight) { this.weight = weight; } public String getProperties() { return properties; } public void setProperties(String properties) { this.properties = properties; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public Long getCreationTimeUtc() { return creationTimeUtc; } public void setCreationTimeUtc(Long creationTimeUtc) { this.creationTimeUtc = creationTimeUtc; } public boolean isDataMissing() { return dataMissing; } public void setDataMissing(boolean dataMissing) { this.dataMissing = dataMissing; } public boolean isMerged() { return merged; } public void setMerged(boolean merged) { this.merged = merged; } public Long getFunctionId() { return functionId; } public void setFunctionId(Long functionId) { this.functionId = functionId; } public Long getAnomalyFeedbackId() { return AnomalyFeedbackId; } public void setAnomalyFeedbackId(Long anomalyFeedbackId) { AnomalyFeedbackId = anomalyFeedbackId; } @Override public boolean equals(Object o) { if (!(o instanceof RawAnomalyResultBean)) { return false; } RawAnomalyResultBean r = (RawAnomalyResultBean) o; return Objects.equals(startTime, r.getStartTime()) && Objects.equals(dimensions, r.getDimensions()) && Objects.equals(endTime, r.getEndTime()) && Objects.equals(score, r.getScore()) && Objects.equals(weight, r.getWeight()) && Objects.equals(properties, r.getProperties()) && Objects.equals(message, r.getMessage()) && Objects.equals(avgBaselineVal, r.getAvgBaselineVal()) && Objects.equals(avgCurrentVal, r.getAvgCurrentVal()); // Intentionally omit creationTimeUtc, since start/end are the truly significant dates for // anomalies } @Override public int hashCode() { return Objects.hash(dimensions, startTime, endTime, score, weight, properties, message, avgBaselineVal, avgCurrentVal); // Intentionally omit creationTimeUtc, since start/end are the truly significant dates for // anomalies } @Override public int compareTo(RawAnomalyResultBean o) { // compare by dimension, -startTime, functionId, id int diff = ObjectUtils.compare(getDimensions(), o.getDimensions()); if (diff != 0) { return diff; } diff = -ObjectUtils.compare(startTime, o.getStartTime()); // inverted to sort by // decreasing time if (diff != 0) { return diff; } return ObjectUtils.compare(getId(), o.getId()); } }