private UnionAccumulator makeUnionType()

in src/main/java/com/google/cloud/solutions/autotokenize/common/DeIdentifiedRecordSchemaConverter.java [284:334]


  private UnionAccumulator<Schema> makeUnionType(
      BaseTypeBuilder<UnionAccumulator<Schema>> unionBuilder,
      Schema type,
      String parentSchemaKey,
      boolean encryptedField) {

    if (!type.getType().equals(Type.NULL)
        && !COMPLEX_TYPES.contains(type.getType())
        && encryptedField) {
      return makeTypeProps(unionBuilder.stringBuilder(), type).endString();
    }

    switch (type.getType()) {
      case RECORD:
        return makeRecord(
            addComplexTypeProperties(unionBuilder.record(type.getName()), type),
            type,
            parentSchemaKey);
      case ENUM:
        return (encryptedField)
            ? makeTypeProps(unionBuilder.stringBuilder(), type).endString()
            : addComplexTypeProperties(unionBuilder.enumeration(type.getName()), type)
                .defaultSymbol(type.getEnumDefault())
                .symbols(type.getEnumSymbols().toArray(new String[0]));
      case ARRAY:
        return makeArray(unionBuilder.array(), type, parentSchemaKey, encryptedField);
      case FIXED:
        return (encryptedField)
            ? makeTypeProps(unionBuilder.stringBuilder(), type).endString()
            : addComplexTypeProperties(unionBuilder.fixed(type.getName()), type)
                .size(type.getFixedSize());
      case STRING:
        return makeTypeProps(unionBuilder.stringBuilder(), type).endString();
      case BYTES:
        return makeTypeProps(unionBuilder.bytesBuilder(), type).endBytes();
      case INT:
        return makeTypeProps(unionBuilder.intBuilder(), type).endInt();
      case LONG:
        return makeTypeProps(unionBuilder.longBuilder(), type).endLong();
      case FLOAT:
        return makeTypeProps(unionBuilder.floatBuilder(), type).endFloat();
      case DOUBLE:
        return makeTypeProps(unionBuilder.doubleBuilder(), type).endDouble();
      case BOOLEAN:
        return makeTypeProps(unionBuilder.booleanBuilder(), type).endBoolean();
      case NULL:
        return unionBuilder.nullType();
      default:
        throw new UnsupportedOperationException("Union of Union/Map is invalid schema");
    }
  }