diff options
Diffstat (limited to 'config-model/src/main/java/com/yahoo/schema/derived/Summaries.java')
-rw-r--r-- | config-model/src/main/java/com/yahoo/schema/derived/Summaries.java | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/Summaries.java b/config-model/src/main/java/com/yahoo/schema/derived/Summaries.java new file mode 100644 index 00000000000..2b41fbb3b1a --- /dev/null +++ b/config-model/src/main/java/com/yahoo/schema/derived/Summaries.java @@ -0,0 +1,51 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.schema.derived; + +import com.yahoo.config.application.api.DeployLogger; +import com.yahoo.config.model.api.ModelContext; +import com.yahoo.schema.Schema; +import com.yahoo.vespa.documentmodel.DocumentSummary; +import com.yahoo.vespa.config.search.SummaryConfig; + +import java.util.ArrayList; +import java.util.List; + +/** + * A list of derived summaries + * + * @author bratseth + */ +public class Summaries extends Derived implements SummaryConfig.Producer { + + private final boolean useV8GeoPositions; + private final List<SummaryClass> summaries; + + public Summaries(Schema schema, DeployLogger deployLogger, ModelContext.FeatureFlags featureFlags) { + super(); + this.useV8GeoPositions = featureFlags.useV8GeoPositions(); + + // Make sure the default is first + List<SummaryClass> summaries = new ArrayList<>(); + summaries.add(new SummaryClass(schema, schema.getSummary("default"), deployLogger)); + for (DocumentSummary summary : schema.getSummaries().values()) { + if (!summary.getName().equals("default")) + summaries.add(new SummaryClass(schema, summary, deployLogger)); + } + this.summaries = List.copyOf(summaries); + } + + public List<SummaryClass> asList() { return summaries; } + + @Override + protected String getDerivedName() { return "summary"; } + + @Override + public void getConfig(SummaryConfig.Builder builder) { + builder.defaultsummaryid(summaries.isEmpty() ? -1 : summaries.get(0).hashCode()); + builder.usev8geopositions(useV8GeoPositions); + for (SummaryClass summaryClass : summaries) { + builder.classes(summaryClass.getSummaryClassConfig()); + } + } + +} |