static List visit()

in api/src/main/java/org/apache/iceberg/transforms/SortOrderVisitor.java [66:122]


  static <R> List<R> visit(SortOrder sortOrder, SortOrderVisitor<R> visitor) {
    Schema schema = sortOrder.schema();
    List<R> results = Lists.newArrayListWithExpectedSize(sortOrder.fields().size());

    for (SortField field : sortOrder.fields()) {
      String sourceName = schema.findColumnName(field.sourceId());
      Transform<?, ?> transform = field.transform();

      if (transform == null || transform instanceof Identity) {
        results.add(
            visitor.field(sourceName, field.sourceId(), field.direction(), field.nullOrder()));
      } else if (transform instanceof Bucket) {
        int numBuckets = ((Bucket<?>) transform).numBuckets();
        results.add(
            visitor.bucket(
                sourceName, field.sourceId(), numBuckets, field.direction(), field.nullOrder()));
      } else if (transform instanceof Truncate) {
        int width = ((Truncate<?>) transform).width();
        results.add(
            visitor.truncate(
                sourceName, field.sourceId(), width, field.direction(), field.nullOrder()));
      } else if (transform == Dates.YEAR
          || transform == Timestamps.MICROS_TO_YEAR
          || transform == Timestamps.NANOS_TO_YEAR
          || transform instanceof Years) {
        results.add(
            visitor.year(sourceName, field.sourceId(), field.direction(), field.nullOrder()));
      } else if (transform == Dates.MONTH
          || transform == Timestamps.MICROS_TO_MONTH
          || transform == Timestamps.NANOS_TO_MONTH
          || transform instanceof Months) {
        results.add(
            visitor.month(sourceName, field.sourceId(), field.direction(), field.nullOrder()));
      } else if (transform == Dates.DAY
          || transform == Timestamps.MICROS_TO_DAY
          || transform == Timestamps.NANOS_TO_DAY
          || transform instanceof Days) {
        results.add(
            visitor.day(sourceName, field.sourceId(), field.direction(), field.nullOrder()));
      } else if (transform == Timestamps.MICROS_TO_HOUR
          || transform == Timestamps.NANOS_TO_HOUR
          || transform instanceof Hours) {
        results.add(
            visitor.hour(sourceName, field.sourceId(), field.direction(), field.nullOrder()));
      } else if (transform instanceof UnknownTransform) {
        results.add(
            visitor.unknown(
                sourceName,
                field.sourceId(),
                transform.toString(),
                field.direction(),
                field.nullOrder()));
      }
    }

    return results;
  }