diff options
Diffstat (limited to 'config-model/src/main/java/com/yahoo/searchdefinition')
2 files changed, 21 insertions, 3 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java index 0f1918f99d6..6070aeb0ee1 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java @@ -18,6 +18,7 @@ import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import static com.yahoo.searchdefinition.document.ComplexAttributeFieldUtils.isArrayOfSimpleStruct; import static com.yahoo.searchdefinition.document.ComplexAttributeFieldUtils.isMapOfPrimitiveType; @@ -153,6 +154,13 @@ public class AttributeFields extends Derived implements AttributesConfig.Produce return Collections.unmodifiableCollection(attributes.values()); } + public Collection<Attribute> structFieldAttributes(String baseFieldName) { + String structPrefix = baseFieldName + "."; + return attributes().stream() + .filter(attribute -> attribute.getName().startsWith(structPrefix)) + .collect(Collectors.toList()); + } + public String toString() { return "attributes " + getName(); } diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtils.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtils.java index 89d72756512..a56364a6975 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtils.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtils.java @@ -1,3 +1,4 @@ +// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.searchdefinition.document; import com.yahoo.document.ArrayDataType; @@ -19,7 +20,10 @@ import com.yahoo.document.StructDataType; public class ComplexAttributeFieldUtils { public static boolean isArrayOfSimpleStruct(ImmutableSDField field) { - DataType fieldType = field.getDataType(); + return isArrayOfSimpleStruct(field.getDataType()); + } + + public static boolean isArrayOfSimpleStruct(DataType fieldType) { if (fieldType instanceof ArrayDataType) { ArrayDataType arrayType = (ArrayDataType)fieldType; return isSimpleStruct(arrayType.getNestedType()); @@ -29,7 +33,10 @@ public class ComplexAttributeFieldUtils { } public static boolean isMapOfSimpleStruct(ImmutableSDField field) { - DataType fieldType = field.getDataType(); + return isMapOfSimpleStruct(field.getDataType()); + } + + public static boolean isMapOfSimpleStruct(DataType fieldType) { if (fieldType instanceof MapDataType) { MapDataType mapType = (MapDataType)fieldType; return isPrimitiveType(mapType.getKeyType()) && @@ -40,7 +47,10 @@ public class ComplexAttributeFieldUtils { } public static boolean isMapOfPrimitiveType(ImmutableSDField field) { - DataType fieldType = field.getDataType(); + return isMapOfPrimitiveType(field.getDataType()); + } + + public static boolean isMapOfPrimitiveType(DataType fieldType) { if (fieldType instanceof MapDataType) { MapDataType mapType = (MapDataType)fieldType; return isPrimitiveType(mapType.getKeyType()) && |