From 54575e55caf9a7781d95e0d2e5f41d163eac3ce2 Mon Sep 17 00:00:00 2001 From: Nicholas Knize <nknize@gmail.com> Date: Tue, 31 May 2016 12:28:10 -0500 Subject: [PATCH] set ValuesSourceConfig fields as private --- .../support/AggregationContext.java | 73 ++++++++++--------- .../ValuesSourceAggregationBuilder.java | 32 ++++---- .../ValuesSourceAggregatorFactory.java | 4 +- .../support/ValuesSourceConfig.java | 35 ++++++--- .../MultiValuesSourceAggregationBuilder.java | 4 +- 5 files changed, 83 insertions(+), 65 deletions(-) diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/support/AggregationContext.java b/core/src/main/java/org/elasticsearch/search/aggregations/support/AggregationContext.java index d66a1664c8f..c4d76304d09 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/support/AggregationContext.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/support/AggregationContext.java @@ -61,29 +61,30 @@ public class AggregationContext { assert config.valid() : "value source config is invalid - must have either a field context or a script or marked as unmapped"; final VS vs; - if (config.unmapped) { - if (config.missing == null) { + if (config.unmapped()) { + if (config.missing() == null) { // otherwise we will have values because of the missing value vs = null; - } else if (config.valueSourceType == ValuesSourceType.NUMERIC) { + } else if (config.valueSourceType() == ValuesSourceType.NUMERIC) { vs = (VS) ValuesSource.Numeric.EMPTY; - } else if (config.valueSourceType == ValuesSourceType.GEOPOINT) { + } else if (config.valueSourceType() == ValuesSourceType.GEOPOINT) { vs = (VS) ValuesSource.GeoPoint.EMPTY; - } else if (config.valueSourceType == ValuesSourceType.ANY || config.valueSourceType == ValuesSourceType.BYTES) { + } else if (config.valueSourceType() == ValuesSourceType.ANY || config.valueSourceType() == ValuesSourceType.BYTES) { vs = (VS) ValuesSource.Bytes.EMPTY; } else { - throw new SearchParseException(searchContext, "Can't deal with unmapped ValuesSource type " + config.valueSourceType, null); + throw new SearchParseException(searchContext, "Can't deal with unmapped ValuesSource type " + + config.valueSourceType(), null); } } else { vs = originalValuesSource(config); } - if (config.missing == null) { + if (config.missing() == null) { return vs; } if (vs instanceof ValuesSource.Bytes) { - final BytesRef missing = new BytesRef(config.missing.toString()); + final BytesRef missing = new BytesRef(config.missing().toString()); if (vs instanceof ValuesSource.Bytes.WithOrdinals) { return (VS) MissingValues.replaceMissing((ValuesSource.Bytes.WithOrdinals) vs, missing); } else { @@ -91,20 +92,20 @@ public class AggregationContext { } } else if (vs instanceof ValuesSource.Numeric) { Number missing = null; - if (config.missing instanceof Number) { - missing = (Number) config.missing; + if (config.missing() instanceof Number) { + missing = (Number) config.missing(); } else { - if (config.fieldContext != null && config.fieldContext.fieldType() != null) { - missing = config.fieldContext.fieldType().docValueFormat(null, DateTimeZone.UTC) - .parseDouble(config.missing.toString(), false, context.nowCallable()); + if (config.fieldContext() != null && config.fieldContext().fieldType() != null) { + missing = config.fieldContext().fieldType().docValueFormat(null, DateTimeZone.UTC) + .parseDouble(config.missing().toString(), false, context.nowCallable()); } else { - missing = Double.parseDouble(config.missing.toString()); + missing = Double.parseDouble(config.missing().toString()); } } return (VS) MissingValues.replaceMissing((ValuesSource.Numeric) vs, missing); } else if (vs instanceof ValuesSource.GeoPoint) { // TODO: also support the structured formats of geo points - final GeoPoint missing = GeoUtils.parseGeoPoint(config.missing.toString(), new GeoPoint()); + final GeoPoint missing = GeoUtils.parseGeoPoint(config.missing().toString(), new GeoPoint()); return (VS) MissingValues.replaceMissing((ValuesSource.GeoPoint) vs, missing); } else { // Should not happen @@ -116,21 +117,21 @@ public class AggregationContext { * Return the original values source, before we apply `missing`. */ private <VS extends ValuesSource> VS originalValuesSource(ValuesSourceConfig<VS> config) throws IOException { - if (config.fieldContext == null) { - if (config.valueSourceType == ValuesSourceType.NUMERIC) { + if (config.fieldContext() == null) { + if (config.valueSourceType() == ValuesSourceType.NUMERIC) { return (VS) numericScript(config); } - if (config.valueSourceType == ValuesSourceType.BYTES) { + if (config.valueSourceType() == ValuesSourceType.BYTES) { return (VS) bytesScript(config); } - throw new AggregationExecutionException("value source of type [" + config.valueSourceType.name() + throw new AggregationExecutionException("value source of type [" + config.valueSourceType().name() + "] is not supported by scripts"); } - if (config.valueSourceType == ValuesSourceType.NUMERIC) { + if (config.valueSourceType() == ValuesSourceType.NUMERIC) { return (VS) numericField(config); } - if (config.valueSourceType == ValuesSourceType.GEOPOINT) { + if (config.valueSourceType() == ValuesSourceType.GEOPOINT) { return (VS) geoPointField(config); } // falling back to bytes values @@ -138,25 +139,25 @@ public class AggregationContext { } private ValuesSource.Numeric numericScript(ValuesSourceConfig<?> config) throws IOException { - return new ValuesSource.Numeric.Script(config.script, config.scriptValueType); + return new ValuesSource.Numeric.Script(config.script(), config.scriptValueType()); } private ValuesSource.Numeric numericField(ValuesSourceConfig<?> config) throws IOException { - if (!(config.fieldContext.indexFieldData() instanceof IndexNumericFieldData)) { - throw new IllegalArgumentException("Expected numeric type on field [" + config.fieldContext.field() + - "], but got [" + config.fieldContext.fieldType().typeName() + "]"); + if (!(config.fieldContext().indexFieldData() instanceof IndexNumericFieldData)) { + throw new IllegalArgumentException("Expected numeric type on field [" + config.fieldContext().field() + + "], but got [" + config.fieldContext().fieldType().typeName() + "]"); } - ValuesSource.Numeric dataSource = new ValuesSource.Numeric.FieldData((IndexNumericFieldData) config.fieldContext.indexFieldData()); - if (config.script != null) { - dataSource = new ValuesSource.Numeric.WithScript(dataSource, config.script); + ValuesSource.Numeric dataSource = new ValuesSource.Numeric.FieldData((IndexNumericFieldData)config.fieldContext().indexFieldData()); + if (config.script() != null) { + dataSource = new ValuesSource.Numeric.WithScript(dataSource, config.script()); } return dataSource; } private ValuesSource bytesField(ValuesSourceConfig<?> config) throws IOException { - final IndexFieldData<?> indexFieldData = config.fieldContext.indexFieldData(); + final IndexFieldData<?> indexFieldData = config.fieldContext().indexFieldData(); ValuesSource dataSource; if (indexFieldData instanceof ParentChildIndexFieldData) { dataSource = new ValuesSource.Bytes.WithOrdinals.ParentChild((ParentChildIndexFieldData) indexFieldData); @@ -165,24 +166,24 @@ public class AggregationContext { } else { dataSource = new ValuesSource.Bytes.FieldData(indexFieldData); } - if (config.script != null) { - dataSource = new ValuesSource.WithScript(dataSource, config.script); + if (config.script() != null) { + dataSource = new ValuesSource.WithScript(dataSource, config.script()); } return dataSource; } private ValuesSource.Bytes bytesScript(ValuesSourceConfig<?> config) throws IOException { - return new ValuesSource.Bytes.Script(config.script); + return new ValuesSource.Bytes.Script(config.script()); } private ValuesSource.GeoPoint geoPointField(ValuesSourceConfig<?> config) throws IOException { - if (!(config.fieldContext.indexFieldData() instanceof IndexGeoPointFieldData)) { - throw new IllegalArgumentException("Expected geo_point type on field [" + config.fieldContext.field() + - "], but got [" + config.fieldContext.fieldType().typeName() + "]"); + if (!(config.fieldContext().indexFieldData() instanceof IndexGeoPointFieldData)) { + throw new IllegalArgumentException("Expected geo_point type on field [" + config.fieldContext().field() + + "], but got [" + config.fieldContext().fieldType().typeName() + "]"); } - return new ValuesSource.GeoPoint.Fielddata((IndexGeoPointFieldData) config.fieldContext.indexFieldData()); + return new ValuesSource.GeoPoint.Fielddata((IndexGeoPointFieldData) config.fieldContext().indexFieldData()); } } diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceAggregationBuilder.java index 582ae6befe0..cd03ceb9eca 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceAggregationBuilder.java @@ -317,7 +317,7 @@ public abstract class ValuesSourceAggregationBuilder<VS extends ValuesSource, AB if (script == null) { @SuppressWarnings("unchecked") ValuesSourceConfig<VS> config = new ValuesSourceConfig(ValuesSourceType.ANY); - config.format = resolveFormat(null, valueType); + config.format(resolveFormat(null, valueType)); return config; } ValuesSourceType valuesSourceType = valueType != null ? valueType.getValuesSourceType() : this.valuesSourceType; @@ -329,11 +329,11 @@ public abstract class ValuesSourceAggregationBuilder<VS extends ValuesSource, AB valuesSourceType = ValuesSourceType.BYTES; } ValuesSourceConfig<VS> config = new ValuesSourceConfig<VS>(valuesSourceType); - config.missing = missing; - config.timeZone = timeZone; - config.format = resolveFormat(format, valueType); - config.script = createScript(script, context.searchContext()); - config.scriptValueType = valueType; + config.missing(missing); + config.timezone(timeZone); + config.format(resolveFormat(format, valueType)); + config.script(createScript(script, context.searchContext())); + config.scriptValueType(valueType); return config; } @@ -341,13 +341,13 @@ public abstract class ValuesSourceAggregationBuilder<VS extends ValuesSource, AB if (fieldType == null) { ValuesSourceType valuesSourceType = valueType != null ? valueType.getValuesSourceType() : this.valuesSourceType; ValuesSourceConfig<VS> config = new ValuesSourceConfig<>(valuesSourceType); - config.missing = missing; - config.timeZone = timeZone; - config.format = resolveFormat(format, valueType); - config.unmapped = true; + config.missing(missing); + config.timezone(timeZone); + config.format(resolveFormat(format, valueType)); + config.unmapped(true); if (valueType != null) { // todo do we really need this for unmapped? - config.scriptValueType = valueType; + config.scriptValueType(valueType); } return config; } @@ -367,11 +367,11 @@ public abstract class ValuesSourceAggregationBuilder<VS extends ValuesSource, AB config = new ValuesSourceConfig(valuesSourceType); } - config.fieldContext = new FieldContext(field, indexFieldData, fieldType); - config.missing = missing; - config.timeZone = timeZone; - config.script = createScript(script, context.searchContext()); - config.format = fieldType.docValueFormat(format, timeZone); + config.fieldContext(new FieldContext(field, indexFieldData, fieldType)); + config.missing(missing); + config.timezone(timeZone); + config.script(createScript(script, context.searchContext())); + config.format(fieldType.docValueFormat(format, timeZone)); return config; } diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceAggregatorFactory.java b/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceAggregatorFactory.java index c273430dda0..36ab0d505b9 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceAggregatorFactory.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceAggregatorFactory.java @@ -42,7 +42,7 @@ public abstract class ValuesSourceAggregatorFactory<VS extends ValuesSource, AF } public DateTimeZone timeZone() { - return config.timeZone; + return config.timezone(); } @Override @@ -62,4 +62,4 @@ public abstract class ValuesSourceAggregatorFactory<VS extends ValuesSource, AF boolean collectsFromSingleBucket, List<PipelineAggregator> pipelineAggregators, Map<String, Object> metaData) throws IOException; -} \ No newline at end of file +} diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceConfig.java b/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceConfig.java index acc2b063ac2..5e53812e726 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceConfig.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceConfig.java @@ -27,15 +27,15 @@ import org.joda.time.DateTimeZone; */ public class ValuesSourceConfig<VS extends ValuesSource> { - final ValuesSourceType valueSourceType; - FieldContext fieldContext; - SearchScript script; - ValueType scriptValueType; - boolean unmapped = false; - String formatPattern; - DocValueFormat format = DocValueFormat.RAW; - Object missing; - DateTimeZone timeZone; + private final ValuesSourceType valueSourceType; + private FieldContext fieldContext; + private SearchScript script; + private ValueType scriptValueType; + private boolean unmapped = false; + private String formatPattern; + private DocValueFormat format = DocValueFormat.RAW; + private Object missing; + private DateTimeZone timeZone; public ValuesSourceConfig(ValuesSourceType valueSourceType) { this.valueSourceType = valueSourceType; @@ -71,6 +71,15 @@ public class ValuesSourceConfig<VS extends ValuesSource> { return this; } + public ValuesSourceConfig<VS> scriptValueType(ValueType scriptValueType) { + this.scriptValueType = scriptValueType; + return this; + } + + public ValueType scriptValueType() { + return this.scriptValueType; + } + public ValuesSourceConfig<VS> unmapped(boolean unmapped) { this.unmapped = unmapped; return this; @@ -86,11 +95,19 @@ public class ValuesSourceConfig<VS extends ValuesSource> { return this; } + public Object missing() { + return this.missing; + } + public ValuesSourceConfig<VS> timezone(final DateTimeZone timeZone) { this.timeZone= timeZone; return this; } + public DateTimeZone timezone() { + return this.timeZone; + } + public DocValueFormat format() { return format; } diff --git a/modules/aggs-matrix-stats/src/main/java/org/elasticsearch/search/aggregations/support/MultiValuesSourceAggregationBuilder.java b/modules/aggs-matrix-stats/src/main/java/org/elasticsearch/search/aggregations/support/MultiValuesSourceAggregationBuilder.java index e4ea8df0497..51e5ce1cf27 100644 --- a/modules/aggs-matrix-stats/src/main/java/org/elasticsearch/search/aggregations/support/MultiValuesSourceAggregationBuilder.java +++ b/modules/aggs-matrix-stats/src/main/java/org/elasticsearch/search/aggregations/support/MultiValuesSourceAggregationBuilder.java @@ -30,7 +30,7 @@ import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.script.Script; import org.elasticsearch.search.DocValueFormat; import org.elasticsearch.search.aggregations.AggregationInitializationException; -import org.elasticsearch.search.aggregations.AggregationBuilder; +import org.elasticsearch.search.aggregations.AbstractAggregationBuilder; import org.elasticsearch.search.aggregations.AggregatorFactories; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactory; @@ -48,7 +48,7 @@ import java.util.Objects; * */ public abstract class MultiValuesSourceAggregationBuilder<VS extends ValuesSource, AB extends MultiValuesSourceAggregationBuilder<VS, AB>> - extends AggregationBuilder<AB> { + extends AbstractAggregationBuilder<AB> { public static final ParseField MULTIVALUE_MODE_FIELD = new ParseField("mode");