private Target getTarget()

in runtime/src/main/java/com/google/cloud/verticals/foundations/dataharmonization/function/whistle/WhistleFunction.java [132:173]


  private Target getTarget(RuntimeContext context, FieldMapping mapping) {
    switch (mapping.getTargetCase()) {
      case CUSTOM_SINK:
        return customSink(context, mapping);
      case VAR:
        return builtinSink(
            context,
            Constructor.TARGET_NAME,
            context.getDataTypeImplementation().primitiveOf(mapping.getVar().getName()),
            context.getDataTypeImplementation().primitiveOf(mapping.getVar().getPath()));
      case FIELD:
        String field = mapping.getField().getPath();
        if (field.equals(OUTPUT_VAR)) {
          field = "";
        }
        switch (mapping.getField().getType()) {
          case LOCAL:
            return builtinSink(
                context,
                Constructor.TARGET_NAME,
                context.getDataTypeImplementation().primitiveOf(OUTPUT_VAR),
                context.getDataTypeImplementation().primitiveOf(field));
          case SIDE:
            return builtinSink(
                context,
                SideTarget.Constructor.TARGET_NAME,
                context.getDataTypeImplementation().primitiveOf(field));
          case UNRECOGNIZED:
            throw new IllegalArgumentException(
                String.format(
                    "Proto error - invalid field target type: %s", mapping.getField().getType()));
        }
        // fall through, though this should never happen.
      default:
        // By default - write to $this.
        return builtinSink(
            context,
            Constructor.TARGET_NAME,
            context.getDataTypeImplementation().primitiveOf(OUTPUT_VAR),
            context.getDataTypeImplementation().primitiveOf(""));
    }
  }