diff options
author | Geir Storli <geirst@yahoo-inc.com> | 2017-02-02 13:08:43 +0100 |
---|---|---|
committer | Geir Storli <geirst@yahoo-inc.com> | 2017-02-02 13:08:43 +0100 |
commit | 5bfb3aaf39e4ddfc3d8437891075928027d92e06 (patch) | |
tree | be63ce11a189703b98ea3d06a9ff8515cb05e7e5 /config-model/src/main/java/com/yahoo/vespa/configmodel | |
parent | 5814d23208b3f60c6862a39d018a544716c7b96c (diff) |
Refactor buildConfig().
Diffstat (limited to 'config-model/src/main/java/com/yahoo/vespa/configmodel')
-rw-r--r-- | config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java | 175 |
1 files changed, 106 insertions, 69 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java b/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java index ad140be75ed..c09036b53ef 100644 --- a/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java +++ b/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java @@ -18,14 +18,14 @@ public class DocumentTypes { public DocumenttypesConfig.Builder produce(DocumentModel model, DocumenttypesConfig.Builder builder) { Map<NewDocumentType.Name, NewDocumentType> produced = new HashMap<>(); - for(NewDocumentType documentType : model.getDocumentManager().getTypes()) { + for (NewDocumentType documentType : model.getDocumentManager().getTypes()) { produceInheritOrder(documentType, builder, produced); } return builder; } private void produceInheritOrder(NewDocumentType documentType, DocumenttypesConfig.Builder builder, Map<NewDocumentType.Name, NewDocumentType> produced) { - if ( ! produced.containsKey(documentType.getFullName())) { + if (!produced.containsKey(documentType.getFullName())) { for (NewDocumentType inherited : documentType.getInherited()) { produceInheritOrder(inherited, builder, produced); } @@ -40,10 +40,10 @@ public class DocumentTypes { } DocumenttypesConfig.Documenttype.Builder db = new DocumenttypesConfig.Documenttype.Builder(); db. - id(documentType.getId()). - name(documentType.getName()). - headerstruct(documentType.getHeader().getId()). - bodystruct(documentType.getBody().getId()); + id(documentType.getId()). + name(documentType.getName()). + headerstruct(documentType.getHeader().getId()). + bodystruct(documentType.getBody().getId()); Set<Integer> built = new HashSet<>(); for (NewDocumentType inherited : documentType.getInherited()) { db.inherits(new DocumenttypesConfig.Documenttype.Inherits.Builder().id(inherited.getId())); @@ -52,7 +52,7 @@ public class DocumentTypes { for (DataType dt : documentType.getTypes()) { buildConfig(dt, db, built); } - for(AnnotationType annotation : documentType.getAnnotations()) { + for (AnnotationType annotation : documentType.getAnnotations()) { DocumenttypesConfig.Documenttype.Annotationtype.Builder atb = new DocumenttypesConfig.Documenttype.Annotationtype.Builder(); db.annotationtype(atb); buildConfig(annotation, atb); @@ -64,7 +64,7 @@ public class DocumentTypes { private void buildConfig(Set<FieldSet> fieldSets, com.yahoo.document.DocumenttypesConfig.Documenttype.Builder db) { for (FieldSet fs : fieldSets) { buildConfig(fs, db); - } + } } private void buildConfig(FieldSet fs, DocumenttypesConfig.Documenttype.Builder db) { @@ -79,10 +79,10 @@ public class DocumentTypes { private void buildConfig(AnnotationType annotation, DocumenttypesConfig.Documenttype.Annotationtype.Builder builder) { builder. - id(annotation.getId()). - name(annotation.getName()); + id(annotation.getId()). + name(annotation.getName()); DataType dt = annotation.getDataType(); - if (dt!=null) { + if (dt != null) { builder.datatype(dt.getId()); } for (AnnotationType inherited : annotation.getInheritedTypes()) { @@ -91,77 +91,27 @@ public class DocumentTypes { } private void buildConfig(DataType type, DocumenttypesConfig.Documenttype.Builder documentBuilder, Set<Integer> built) { - if ((VespaDocumentType.INSTANCE.getDataType(type.getId()) == null) && ! built.contains(type.getId())) { + if ((VespaDocumentType.INSTANCE.getDataType(type.getId()) == null) && !built.contains(type.getId())) { built.add(type.getId()); DocumenttypesConfig.Documenttype.Datatype.Builder dataTypeBuilder = new DocumenttypesConfig.Documenttype.Datatype.Builder(); dataTypeBuilder.id(type.getId()); if (type instanceof StructDataType) { - dataTypeBuilder.type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.STRUCT); - StructDataType dt = (StructDataType) type; - DocumenttypesConfig.Documenttype.Datatype.Sstruct.Builder structBuilder = new DocumenttypesConfig.Documenttype.Datatype.Sstruct.Builder(); - dataTypeBuilder.sstruct(structBuilder); - structBuilder.name(dt.getName()); - if (dt.getCompressionConfig().type.getCode() != 0) { - structBuilder.compression(new DocumenttypesConfig.Documenttype.Datatype.Sstruct.Compression.Builder(). - type(DocumenttypesConfig.Documenttype.Datatype.Sstruct.Compression.Type.Enum.valueOf(dt.getCompressionConfig().type.toString())). - level(dt.getCompressionConfig().compressionLevel). - threshold((int)dt.getCompressionConfig().threshold). - minsize((int)dt.getCompressionConfig().minsize)); - } - for (com.yahoo.document.Field field : dt.getFields()) { - DocumenttypesConfig.Documenttype.Datatype.Sstruct.Field.Builder builder = - new DocumenttypesConfig.Documenttype.Datatype.Sstruct.Field.Builder(); - builder.name(field.getName()). - id(field.getId()). - id_v6(field.getIdV6()). - datatype(field.getDataType().getId()); - if (field.getDataType() instanceof TensorDataType) - builder.detailedtype(((TensorDataType)field.getDataType()).getTensorType().toString()); - structBuilder.field(builder); - buildConfig(field.getDataType(), documentBuilder, built); - } + buildConfig((StructDataType) type, dataTypeBuilder, documentBuilder, built); } else if (type instanceof ArrayDataType) { - dataTypeBuilder. - type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.ARRAY). - array(new DocumenttypesConfig.Documenttype.Datatype.Array.Builder(). - element(new DocumenttypesConfig.Documenttype.Datatype.Array.Element.Builder().id(((ArrayDataType)type).getNestedType().getId()))); - buildConfig(((ArrayDataType)type).getNestedType(), documentBuilder, built); + buildConfig((ArrayDataType) type, dataTypeBuilder, documentBuilder, built); } else if (type instanceof WeightedSetDataType) { - dataTypeBuilder.type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.WSET). - wset(new DocumenttypesConfig.Documenttype.Datatype.Wset.Builder(). - key(new DocumenttypesConfig.Documenttype.Datatype.Wset.Key.Builder(). - id(((WeightedSetDataType)type).getNestedType().getId())). - createifnonexistent(((WeightedSetDataType)type).createIfNonExistent()). - removeifzero(((WeightedSetDataType)type).removeIfZero())); - buildConfig(((WeightedSetDataType)type).getNestedType(), documentBuilder, built); + buildConfig((WeightedSetDataType) type, dataTypeBuilder, documentBuilder, built); } else if (type instanceof MapDataType) { - dataTypeBuilder. - type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.MAP). - map(new DocumenttypesConfig.Documenttype.Datatype.Map.Builder(). - key(new DocumenttypesConfig.Documenttype.Datatype.Map.Key.Builder(). - id(((MapDataType)type).getKeyType().getId())). - value(new DocumenttypesConfig.Documenttype.Datatype.Map.Value.Builder(). - id(((MapDataType)type).getValueType().getId()))); - buildConfig(((MapDataType)type).getKeyType(), documentBuilder, built); - buildConfig(((MapDataType)type).getValueType(), documentBuilder, built); + buildConfig((MapDataType) type, dataTypeBuilder, documentBuilder, built); } else if (type instanceof AnnotationReferenceDataType) { - dataTypeBuilder. - type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.ANNOTATIONREF). - annotationref(new DocumenttypesConfig.Documenttype.Datatype.Annotationref.Builder(). - annotation(new DocumenttypesConfig.Documenttype.Datatype.Annotationref.Annotation.Builder(). - id(((AnnotationReferenceDataType)type).getAnnotationType().getId()))); + buildConfig((AnnotationReferenceDataType) type, dataTypeBuilder); } else if (type instanceof TensorDataType) { // The type of the tensor is not stored here but instead in each field as detailed type information // to provide better compatibility. A tensor field can have its tensorType changed (in compatible ways) // without changing the field type and thus requiring data refeed return; } else if (type instanceof ReferenceDataType) { - ReferenceDataType refType = (ReferenceDataType) type; - DocumenttypesConfig.Documenttype.Referencetype.Builder refBuilder = - new DocumenttypesConfig.Documenttype.Referencetype.Builder(); - refBuilder.id(refType.getId()); - refBuilder.target_type_id(((ReferenceDataType) type).getTargetType().getId()); - documentBuilder.referencetype(refBuilder); + buildConfig((ReferenceDataType) type, documentBuilder); return; } else { return; @@ -170,5 +120,92 @@ public class DocumentTypes { } } -} + private void buildConfig(StructDataType type, + DocumenttypesConfig.Documenttype.Datatype.Builder dataTypeBuilder, + DocumenttypesConfig.Documenttype.Builder documentBuilder, + Set<Integer> built) { + dataTypeBuilder.type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.STRUCT); + DocumenttypesConfig.Documenttype.Datatype.Sstruct.Builder structBuilder = new DocumenttypesConfig.Documenttype.Datatype.Sstruct.Builder(); + dataTypeBuilder.sstruct(structBuilder); + structBuilder.name(type.getName()); + if (type.getCompressionConfig().type.getCode() != 0) { + structBuilder.compression(new DocumenttypesConfig.Documenttype.Datatype.Sstruct.Compression.Builder(). + type(DocumenttypesConfig.Documenttype.Datatype.Sstruct.Compression.Type.Enum.valueOf(type.getCompressionConfig().type.toString())). + level(type.getCompressionConfig().compressionLevel). + threshold((int) type.getCompressionConfig().threshold). + minsize((int) type.getCompressionConfig().minsize)); + } + for (com.yahoo.document.Field field : type.getFields()) { + DocumenttypesConfig.Documenttype.Datatype.Sstruct.Field.Builder builder = + new DocumenttypesConfig.Documenttype.Datatype.Sstruct.Field.Builder(); + builder.name(field.getName()). + id(field.getId()). + id_v6(field.getIdV6()). + datatype(field.getDataType().getId()); + if (field.getDataType() instanceof TensorDataType) { + builder.detailedtype(((TensorDataType) field.getDataType()).getTensorType().toString()); + } + structBuilder.field(builder); + buildConfig(field.getDataType(), documentBuilder, built); + } + } + private void buildConfig(ArrayDataType type, + DocumenttypesConfig.Documenttype.Datatype.Builder dataTypeBuilder, + DocumenttypesConfig.Documenttype.Builder documentBuilder, + Set<Integer> built) { + dataTypeBuilder. + type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.ARRAY). + array(new DocumenttypesConfig.Documenttype.Datatype.Array.Builder(). + element(new DocumenttypesConfig.Documenttype.Datatype.Array.Element.Builder().id(((ArrayDataType) type).getNestedType().getId()))); + buildConfig(((ArrayDataType) type).getNestedType(), documentBuilder, built); + } + + private void buildConfig(WeightedSetDataType type, + DocumenttypesConfig.Documenttype.Datatype.Builder dataTypeBuilder, + DocumenttypesConfig.Documenttype.Builder documentBuilder, + Set<Integer> built) { + dataTypeBuilder.type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.WSET). + wset(new DocumenttypesConfig.Documenttype.Datatype.Wset.Builder(). + key(new DocumenttypesConfig.Documenttype.Datatype.Wset.Key.Builder(). + id(((WeightedSetDataType) type).getNestedType().getId())). + createifnonexistent(((WeightedSetDataType) type).createIfNonExistent()). + removeifzero(((WeightedSetDataType) type).removeIfZero())); + buildConfig(((WeightedSetDataType) type).getNestedType(), documentBuilder, built); + } + + private void buildConfig(MapDataType type, + DocumenttypesConfig.Documenttype.Datatype.Builder dataTypeBuilder, + DocumenttypesConfig.Documenttype.Builder documentBuilder, + Set<Integer> built) { + dataTypeBuilder. + type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.MAP). + map(new DocumenttypesConfig.Documenttype.Datatype.Map.Builder(). + key(new DocumenttypesConfig.Documenttype.Datatype.Map.Key.Builder(). + id(((MapDataType) type).getKeyType().getId())). + value(new DocumenttypesConfig.Documenttype.Datatype.Map.Value.Builder(). + id(((MapDataType) type).getValueType().getId()))); + buildConfig(((MapDataType) type).getKeyType(), documentBuilder, built); + buildConfig(((MapDataType) type).getValueType(), documentBuilder, built); + } + + private void buildConfig(AnnotationReferenceDataType type, + DocumenttypesConfig.Documenttype.Datatype.Builder dataTypeBuilder) { + dataTypeBuilder. + type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.ANNOTATIONREF). + annotationref(new DocumenttypesConfig.Documenttype.Datatype.Annotationref.Builder(). + annotation(new DocumenttypesConfig.Documenttype.Datatype.Annotationref.Annotation.Builder(). + id(((AnnotationReferenceDataType) type).getAnnotationType().getId()))); + } + + private void buildConfig(ReferenceDataType type, + DocumenttypesConfig.Documenttype.Builder documentBuilder) { + ReferenceDataType refType = (ReferenceDataType) type; + DocumenttypesConfig.Documenttype.Referencetype.Builder refBuilder = + new DocumenttypesConfig.Documenttype.Referencetype.Builder(); + refBuilder.id(refType.getId()); + refBuilder.target_type_id(((ReferenceDataType) type).getTargetType().getId()); + documentBuilder.referencetype(refBuilder); + } + +} |