package com.linkedin.thirdeye.dashboard.configs; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import java.util.Collections; import java.util.List; import java.util.Map; import com.linkedin.thirdeye.client.MetricExpression; import java.util.concurrent.TimeUnit; @JsonIgnoreProperties(ignoreUnknown = true) public class CollectionConfig extends AbstractConfig { public static double DEFAULT_THRESHOLD = 0.01; public static String DEFAULT_TIMEZONE = "UTC"; public static String DEFAULT_PREAGGREGATED_DIMENSION_VALUE = "all"; public static int DEFAULT_NONADDITIVE_BUCKET_SIZE = 5; public static String DEFAULT_NONADDITIVE_BUCKET_UNIT = TimeUnit.MINUTES.toString(); String collectionName; String collectionAlias; double metricThreshold = DEFAULT_THRESHOLD; boolean isActive = true; boolean enableCount = false; // Default __COUNT metric String timezone = null; boolean metricAsDimension = false; String metricNamesColumn = null; String metricValuesColumn = null; boolean isNonAdditive = false; List<String> dimensionsHaveNoPreAggregation = Collections.emptyList(); String preAggregatedKeyword = DEFAULT_PREAGGREGATED_DIMENSION_VALUE; int nonAdditiveBucketSize = DEFAULT_NONADDITIVE_BUCKET_SIZE; String nonAdditiveBucketUnit = DEFAULT_NONADDITIVE_BUCKET_UNIT; Map<String, String> derivedMetrics; List<String> invertColorMetrics; // Invert colors of heatmap and table cells Map<String, MetricExpression> cellSizeExpression; // Expression defining how to compute cell size public CollectionConfig() { } public String getCollectionName() { return collectionName; } public void setCollectionName(String collectionName) { this.collectionName = collectionName; } public String getCollectionAlias() { return collectionAlias; } public void setCollectionAlias(String collectionAlias) { this.collectionAlias = collectionAlias; } public double getMetricThreshold() { return metricThreshold; } public void setMetricThreshold(double metricThreshold) { this.metricThreshold = metricThreshold; } public boolean isActive() { return isActive; } public void setActive(boolean isActive) { this.isActive = isActive; } public boolean isEnableCount() { return enableCount; } public void setEnableCount(boolean enableCount) { this.enableCount = enableCount; } public String getTimezone() { return timezone; } public void setTimezone(String timezone) { this.timezone = timezone; } public boolean isMetricAsDimension() { return metricAsDimension; } public void setMetricAsDimension(boolean metricAsDimension) { this.metricAsDimension = metricAsDimension; } public String getMetricValuesColumn() { return metricValuesColumn; } public void setMetricValuesColumn(String metricValuesColumn) { this.metricValuesColumn = metricValuesColumn; } public String getMetricNamesColumn() { return metricNamesColumn; } public void setMetricNamesColumn(String metricNamesColumn) { this.metricNamesColumn = metricNamesColumn; } public Map<String, String> getDerivedMetrics() { return derivedMetrics; } public void setDerivedMetrics(Map<String, String> derivedMetrics) { this.derivedMetrics = derivedMetrics; } public List<String> getInvertColorMetrics() { return invertColorMetrics; } public void setInvertColorMetrics(List<String> invertColorMetrics) { this.invertColorMetrics = invertColorMetrics; } public boolean isNonAdditive() { return isNonAdditive; } public void setIsNonAdditive(boolean isNonAdditive) { this.isNonAdditive = isNonAdditive; } public List<String> getDimensionsHaveNoPreAggregation() { return dimensionsHaveNoPreAggregation; } public void setDimensionsHaveNoPreAggregation(List<String> dimensionsHaveNoPreAggregation) { this.dimensionsHaveNoPreAggregation = (dimensionsHaveNoPreAggregation == null) ? Collections.<String>emptyList() : dimensionsHaveNoPreAggregation; } public String getPreAggregatedKeyword() { return preAggregatedKeyword; } public void setPreAggregatedKeyword(String preAggregatedKeyword) { this.preAggregatedKeyword = preAggregatedKeyword == null ? DEFAULT_PREAGGREGATED_DIMENSION_VALUE : preAggregatedKeyword; } public int getNonAdditiveBucketSize() { return nonAdditiveBucketSize; } public void setNonAdditiveBucketSize(int size) { this.nonAdditiveBucketSize = size; } public String getNonAdditiveBucketUnit() { return nonAdditiveBucketUnit; } public void setNonAdditiveBucketUnit(String bucketUnit) { this.nonAdditiveBucketUnit = bucketUnit; } public Map<String, MetricExpression> getCellSizeExpression() { return cellSizeExpression; } public void setCellSizeExpression(Map<String, MetricExpression> cellSizeExpression) { this.cellSizeExpression = cellSizeExpression; } @Override public String toJSON() throws Exception { return OBJECT_MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(this); } @Override public String getConfigName() { return collectionName; } }