private static String toString(StructDataType dataType) { StringBuilder builder = new StringBuilder(); builder.append(dataType.getName()).append(":{"); boolean first = true; for (Field field : dataType.getFields()) { if (!first) { builder.append(","); } if (field.getDataType() instanceof StructDataType) { builder.append(toString((StructDataType) field.getDataType())); } else { builder.append(field.getName() + ":" + field.getDataType().getName()); } first = false; } builder.append("}"); return builder.toString(); } }
private static SDDocumentType createSDDocumentType(StructDataType structType) { SDDocumentType docType = new SDDocumentType(structType.getName()); for (Field field : structType.getFields()) { docType.addField(new SDField(docType, field.getName(), field.getDataType())); } docType.setStruct(structType); return docType; }
/** * Data type of the header fields of this and all inherited document types * @return merged {@link StructDataType} */ public StructDataType allHeader() { StructDataType ret = new StructDataType(header.getName()); for (Field f : header.getFields()) { ret.addField(f); } for (NewDocumentType inherited : getInherited()) { for (Field f : ((StructDataType) inherited.getHeader()).getFields()) { ret.addField(f); } } return ret; }
/** * Data type of the body fields of this and all inherited document types * @return merged {@link StructDataType} */ public StructDataType allBody() { StructDataType ret = new StructDataType(body.getName()); for (Field f : body.getFields()) { ret.addField(f); } for (NewDocumentType inherited : getInherited()) { for (Field f : ((StructDataType) inherited.getBody()).getFields()) { ret.addField(f); } } return ret; }
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); } }
Datatype.Structtype.Builder structBuilder = new Datatype.Structtype.Builder(); builder.structtype(structBuilder); structBuilder.name(structType.getName()); if (structType.getCompressionConfig().type.getCode() != 0) { structBuilder. structBuilder.inherits(new Datatype.Structtype.Inherits.Builder().name(inherited.getName()));