OffsetIndex.java

/**
 * Autogenerated by Thrift Compiler (0.16.0)
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */
package org.apache.parquet.format;

@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
/**
 * Optional offsets for each data page in a ColumnChunk.
 * 
 * Forms part of the page index, along with ColumnIndex.
 * 
 * OffsetIndex may be present even if ColumnIndex is not.
 */
@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.16.0)", date = "2026-05-14")
public class OffsetIndex implements org.apache.thrift.TBase<OffsetIndex, OffsetIndex._Fields>, java.io.Serializable, Cloneable, Comparable<OffsetIndex> {
  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("OffsetIndex");

  private static final org.apache.thrift.protocol.TField PAGE_LOCATIONS_FIELD_DESC = new org.apache.thrift.protocol.TField("page_locations", org.apache.thrift.protocol.TType.LIST, (short)1);
  private static final org.apache.thrift.protocol.TField UNENCODED_BYTE_ARRAY_DATA_BYTES_FIELD_DESC = new org.apache.thrift.protocol.TField("unencoded_byte_array_data_bytes", org.apache.thrift.protocol.TType.LIST, (short)2);

  private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new OffsetIndexStandardSchemeFactory();
  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new OffsetIndexTupleSchemeFactory();

  /**
   * PageLocations, ordered by increasing PageLocation.offset. It is required
   * that page_locations[i].first_row_index < page_locations[i+1].first_row_index.
   */
  public @org.apache.thrift.annotation.Nullable java.util.List<PageLocation> page_locations; // required
  /**
   * Unencoded/uncompressed size for BYTE_ARRAY types.
   * 
   * See documention for unencoded_byte_array_data_bytes in SizeStatistics for
   * more details on this field.
   */
  public @org.apache.thrift.annotation.Nullable java.util.List<java.lang.Long> unencoded_byte_array_data_bytes; // optional

  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
    /**
     * PageLocations, ordered by increasing PageLocation.offset. It is required
     * that page_locations[i].first_row_index < page_locations[i+1].first_row_index.
     */
    PAGE_LOCATIONS((short)1, "page_locations"),
    /**
     * Unencoded/uncompressed size for BYTE_ARRAY types.
     * 
     * See documention for unencoded_byte_array_data_bytes in SizeStatistics for
     * more details on this field.
     */
    UNENCODED_BYTE_ARRAY_DATA_BYTES((short)2, "unencoded_byte_array_data_bytes");

    private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

    static {
      for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
        byName.put(field.getFieldName(), field);
      }
    }

    /**
     * Find the _Fields constant that matches fieldId, or null if its not found.
     */
    @org.apache.thrift.annotation.Nullable
    public static _Fields findByThriftId(int fieldId) {
      switch(fieldId) {
        case 1: // PAGE_LOCATIONS
          return PAGE_LOCATIONS;
        case 2: // UNENCODED_BYTE_ARRAY_DATA_BYTES
          return UNENCODED_BYTE_ARRAY_DATA_BYTES;
        default:
          return null;
      }
    }

    /**
     * Find the _Fields constant that matches fieldId, throwing an exception
     * if it is not found.
     */
    public static _Fields findByThriftIdOrThrow(int fieldId) {
      _Fields fields = findByThriftId(fieldId);
      if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
      return fields;
    }

    /**
     * Find the _Fields constant that matches name, or null if its not found.
     */
    @org.apache.thrift.annotation.Nullable
    public static _Fields findByName(java.lang.String name) {
      return byName.get(name);
    }

    private final short _thriftId;
    private final java.lang.String _fieldName;

    _Fields(short thriftId, java.lang.String fieldName) {
      _thriftId = thriftId;
      _fieldName = fieldName;
    }

    public short getThriftFieldId() {
      return _thriftId;
    }

    public java.lang.String getFieldName() {
      return _fieldName;
    }
  }

  // isset id assignments
  private static final _Fields optionals[] = {_Fields.UNENCODED_BYTE_ARRAY_DATA_BYTES};
  public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
  static {
    java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
    tmpMap.put(_Fields.PAGE_LOCATIONS, new org.apache.thrift.meta_data.FieldMetaData("page_locations", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, PageLocation.class))));
    tmpMap.put(_Fields.UNENCODED_BYTE_ARRAY_DATA_BYTES, new org.apache.thrift.meta_data.FieldMetaData("unencoded_byte_array_data_bytes", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64))));
    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(OffsetIndex.class, metaDataMap);
  }

  public OffsetIndex() {
  }

  public OffsetIndex(
    java.util.List<PageLocation> page_locations)
  {
    this();
    this.page_locations = page_locations;
  }

  /**
   * Performs a deep copy on <i>other</i>.
   */
  public OffsetIndex(OffsetIndex other) {
    if (other.isSetPageLocations()) {
      java.util.List<PageLocation> __this__page_locations = new java.util.ArrayList<PageLocation>(other.page_locations.size());
      for (PageLocation other_element : other.page_locations) {
        __this__page_locations.add(new PageLocation(other_element));
      }
      this.page_locations = __this__page_locations;
    }
    if (other.isSetUnencodedByteArrayDataBytes()) {
      java.util.List<java.lang.Long> __this__unencoded_byte_array_data_bytes = new java.util.ArrayList<java.lang.Long>(other.unencoded_byte_array_data_bytes);
      this.unencoded_byte_array_data_bytes = __this__unencoded_byte_array_data_bytes;
    }
  }

  public OffsetIndex deepCopy() {
    return new OffsetIndex(this);
  }

  @Override
  public void clear() {
    this.page_locations = null;
    this.unencoded_byte_array_data_bytes = null;
  }

  public int getPageLocationsSize() {
    return (this.page_locations == null) ? 0 : this.page_locations.size();
  }

  @org.apache.thrift.annotation.Nullable
  public java.util.Iterator<PageLocation> getPageLocationsIterator() {
    return (this.page_locations == null) ? null : this.page_locations.iterator();
  }

  public void addToPageLocations(PageLocation elem) {
    if (this.page_locations == null) {
      this.page_locations = new java.util.ArrayList<PageLocation>();
    }
    this.page_locations.add(elem);
  }

  /**
   * PageLocations, ordered by increasing PageLocation.offset. It is required
   * that page_locations[i].first_row_index < page_locations[i+1].first_row_index.
   */
  @org.apache.thrift.annotation.Nullable
  public java.util.List<PageLocation> getPageLocations() {
    return this.page_locations;
  }

  /**
   * PageLocations, ordered by increasing PageLocation.offset. It is required
   * that page_locations[i].first_row_index < page_locations[i+1].first_row_index.
   */
  public OffsetIndex setPageLocations(@org.apache.thrift.annotation.Nullable java.util.List<PageLocation> page_locations) {
    this.page_locations = page_locations;
    return this;
  }

  public void unsetPageLocations() {
    this.page_locations = null;
  }

  /** Returns true if field page_locations is set (has been assigned a value) and false otherwise */
  public boolean isSetPageLocations() {
    return this.page_locations != null;
  }

  public void setPageLocationsIsSet(boolean value) {
    if (!value) {
      this.page_locations = null;
    }
  }

  public int getUnencodedByteArrayDataBytesSize() {
    return (this.unencoded_byte_array_data_bytes == null) ? 0 : this.unencoded_byte_array_data_bytes.size();
  }

  @org.apache.thrift.annotation.Nullable
  public java.util.Iterator<java.lang.Long> getUnencodedByteArrayDataBytesIterator() {
    return (this.unencoded_byte_array_data_bytes == null) ? null : this.unencoded_byte_array_data_bytes.iterator();
  }

  public void addToUnencodedByteArrayDataBytes(long elem) {
    if (this.unencoded_byte_array_data_bytes == null) {
      this.unencoded_byte_array_data_bytes = new java.util.ArrayList<java.lang.Long>();
    }
    this.unencoded_byte_array_data_bytes.add(elem);
  }

  /**
   * Unencoded/uncompressed size for BYTE_ARRAY types.
   * 
   * See documention for unencoded_byte_array_data_bytes in SizeStatistics for
   * more details on this field.
   */
  @org.apache.thrift.annotation.Nullable
  public java.util.List<java.lang.Long> getUnencodedByteArrayDataBytes() {
    return this.unencoded_byte_array_data_bytes;
  }

  /**
   * Unencoded/uncompressed size for BYTE_ARRAY types.
   * 
   * See documention for unencoded_byte_array_data_bytes in SizeStatistics for
   * more details on this field.
   */
  public OffsetIndex setUnencodedByteArrayDataBytes(@org.apache.thrift.annotation.Nullable java.util.List<java.lang.Long> unencoded_byte_array_data_bytes) {
    this.unencoded_byte_array_data_bytes = unencoded_byte_array_data_bytes;
    return this;
  }

  public void unsetUnencodedByteArrayDataBytes() {
    this.unencoded_byte_array_data_bytes = null;
  }

  /** Returns true if field unencoded_byte_array_data_bytes is set (has been assigned a value) and false otherwise */
  public boolean isSetUnencodedByteArrayDataBytes() {
    return this.unencoded_byte_array_data_bytes != null;
  }

  public void setUnencodedByteArrayDataBytesIsSet(boolean value) {
    if (!value) {
      this.unencoded_byte_array_data_bytes = null;
    }
  }

  public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
    switch (field) {
    case PAGE_LOCATIONS:
      if (value == null) {
        unsetPageLocations();
      } else {
        setPageLocations((java.util.List<PageLocation>)value);
      }
      break;

    case UNENCODED_BYTE_ARRAY_DATA_BYTES:
      if (value == null) {
        unsetUnencodedByteArrayDataBytes();
      } else {
        setUnencodedByteArrayDataBytes((java.util.List<java.lang.Long>)value);
      }
      break;

    }
  }

  @org.apache.thrift.annotation.Nullable
  public java.lang.Object getFieldValue(_Fields field) {
    switch (field) {
    case PAGE_LOCATIONS:
      return getPageLocations();

    case UNENCODED_BYTE_ARRAY_DATA_BYTES:
      return getUnencodedByteArrayDataBytes();

    }
    throw new java.lang.IllegalStateException();
  }

  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
  public boolean isSet(_Fields field) {
    if (field == null) {
      throw new java.lang.IllegalArgumentException();
    }

    switch (field) {
    case PAGE_LOCATIONS:
      return isSetPageLocations();
    case UNENCODED_BYTE_ARRAY_DATA_BYTES:
      return isSetUnencodedByteArrayDataBytes();
    }
    throw new java.lang.IllegalStateException();
  }

  @Override
  public boolean equals(java.lang.Object that) {
    if (that instanceof OffsetIndex)
      return this.equals((OffsetIndex)that);
    return false;
  }

  public boolean equals(OffsetIndex that) {
    if (that == null)
      return false;
    if (this == that)
      return true;

    boolean this_present_page_locations = true && this.isSetPageLocations();
    boolean that_present_page_locations = true && that.isSetPageLocations();
    if (this_present_page_locations || that_present_page_locations) {
      if (!(this_present_page_locations && that_present_page_locations))
        return false;
      if (!this.page_locations.equals(that.page_locations))
        return false;
    }

    boolean this_present_unencoded_byte_array_data_bytes = true && this.isSetUnencodedByteArrayDataBytes();
    boolean that_present_unencoded_byte_array_data_bytes = true && that.isSetUnencodedByteArrayDataBytes();
    if (this_present_unencoded_byte_array_data_bytes || that_present_unencoded_byte_array_data_bytes) {
      if (!(this_present_unencoded_byte_array_data_bytes && that_present_unencoded_byte_array_data_bytes))
        return false;
      if (!this.unencoded_byte_array_data_bytes.equals(that.unencoded_byte_array_data_bytes))
        return false;
    }

    return true;
  }

  @Override
  public int hashCode() {
    int hashCode = 1;

    hashCode = hashCode * 8191 + ((isSetPageLocations()) ? 131071 : 524287);
    if (isSetPageLocations())
      hashCode = hashCode * 8191 + page_locations.hashCode();

    hashCode = hashCode * 8191 + ((isSetUnencodedByteArrayDataBytes()) ? 131071 : 524287);
    if (isSetUnencodedByteArrayDataBytes())
      hashCode = hashCode * 8191 + unencoded_byte_array_data_bytes.hashCode();

    return hashCode;
  }

  @Override
  public int compareTo(OffsetIndex other) {
    if (!getClass().equals(other.getClass())) {
      return getClass().getName().compareTo(other.getClass().getName());
    }

    int lastComparison = 0;

    lastComparison = java.lang.Boolean.compare(isSetPageLocations(), other.isSetPageLocations());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetPageLocations()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.page_locations, other.page_locations);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetUnencodedByteArrayDataBytes(), other.isSetUnencodedByteArrayDataBytes());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetUnencodedByteArrayDataBytes()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.unencoded_byte_array_data_bytes, other.unencoded_byte_array_data_bytes);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    return 0;
  }

  @org.apache.thrift.annotation.Nullable
  public _Fields fieldForId(int fieldId) {
    return _Fields.findByThriftId(fieldId);
  }

  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
    scheme(iprot).read(iprot, this);
  }

  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
    scheme(oprot).write(oprot, this);
  }

  @Override
  public java.lang.String toString() {
    java.lang.StringBuilder sb = new java.lang.StringBuilder("OffsetIndex(");
    boolean first = true;

    sb.append("page_locations:");
    if (this.page_locations == null) {
      sb.append("null");
    } else {
      sb.append(this.page_locations);
    }
    first = false;
    if (isSetUnencodedByteArrayDataBytes()) {
      if (!first) sb.append(", ");
      sb.append("unencoded_byte_array_data_bytes:");
      if (this.unencoded_byte_array_data_bytes == null) {
        sb.append("null");
      } else {
        sb.append(this.unencoded_byte_array_data_bytes);
      }
      first = false;
    }
    sb.append(")");
    return sb.toString();
  }

  public void validate() throws org.apache.thrift.TException {
    // check for required fields
    if (page_locations == null) {
      throw new org.apache.thrift.protocol.TProtocolException("Required field 'page_locations' was not present! Struct: " + toString());
    }
    // check for sub-struct validity
  }

  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
    try {
      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
    } catch (org.apache.thrift.TException te) {
      throw new java.io.IOException(te);
    }
  }

  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
    try {
      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
    } catch (org.apache.thrift.TException te) {
      throw new java.io.IOException(te);
    }
  }

  private static class OffsetIndexStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
    public OffsetIndexStandardScheme getScheme() {
      return new OffsetIndexStandardScheme();
    }
  }

  private static class OffsetIndexStandardScheme extends org.apache.thrift.scheme.StandardScheme<OffsetIndex> {

    public void read(org.apache.thrift.protocol.TProtocol iprot, OffsetIndex struct) throws org.apache.thrift.TException {
      org.apache.thrift.protocol.TField schemeField;
      iprot.readStructBegin();
      while (true)
      {
        schemeField = iprot.readFieldBegin();
        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
          break;
        }
        switch (schemeField.id) {
          case 1: // PAGE_LOCATIONS
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list80 = iprot.readListBegin();
                struct.page_locations = new java.util.ArrayList<PageLocation>(_list80.size);
                @org.apache.thrift.annotation.Nullable PageLocation _elem81;
                for (int _i82 = 0; _i82 < _list80.size; ++_i82)
                {
                  _elem81 = new PageLocation();
                  _elem81.read(iprot);
                  struct.page_locations.add(_elem81);
                }
                iprot.readListEnd();
              }
              struct.setPageLocationsIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 2: // UNENCODED_BYTE_ARRAY_DATA_BYTES
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list83 = iprot.readListBegin();
                struct.unencoded_byte_array_data_bytes = new java.util.ArrayList<java.lang.Long>(_list83.size);
                long _elem84;
                for (int _i85 = 0; _i85 < _list83.size; ++_i85)
                {
                  _elem84 = iprot.readI64();
                  struct.unencoded_byte_array_data_bytes.add(_elem84);
                }
                iprot.readListEnd();
              }
              struct.setUnencodedByteArrayDataBytesIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          default:
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
        }
        iprot.readFieldEnd();
      }
      iprot.readStructEnd();

      // check for required fields of primitive type, which can't be checked in the validate method
      struct.validate();
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot, OffsetIndex struct) throws org.apache.thrift.TException {
      struct.validate();

      oprot.writeStructBegin(STRUCT_DESC);
      if (struct.page_locations != null) {
        oprot.writeFieldBegin(PAGE_LOCATIONS_FIELD_DESC);
        {
          oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.page_locations.size()));
          for (PageLocation _iter86 : struct.page_locations)
          {
            _iter86.write(oprot);
          }
          oprot.writeListEnd();
        }
        oprot.writeFieldEnd();
      }
      if (struct.unencoded_byte_array_data_bytes != null) {
        if (struct.isSetUnencodedByteArrayDataBytes()) {
          oprot.writeFieldBegin(UNENCODED_BYTE_ARRAY_DATA_BYTES_FIELD_DESC);
          {
            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.I64, struct.unencoded_byte_array_data_bytes.size()));
            for (long _iter87 : struct.unencoded_byte_array_data_bytes)
            {
              oprot.writeI64(_iter87);
            }
            oprot.writeListEnd();
          }
          oprot.writeFieldEnd();
        }
      }
      oprot.writeFieldStop();
      oprot.writeStructEnd();
    }

  }

  private static class OffsetIndexTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
    public OffsetIndexTupleScheme getScheme() {
      return new OffsetIndexTupleScheme();
    }
  }

  private static class OffsetIndexTupleScheme extends org.apache.thrift.scheme.TupleScheme<OffsetIndex> {

    @Override
    public void write(org.apache.thrift.protocol.TProtocol prot, OffsetIndex struct) throws org.apache.thrift.TException {
      org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
      {
        oprot.writeI32(struct.page_locations.size());
        for (PageLocation _iter88 : struct.page_locations)
        {
          _iter88.write(oprot);
        }
      }
      java.util.BitSet optionals = new java.util.BitSet();
      if (struct.isSetUnencodedByteArrayDataBytes()) {
        optionals.set(0);
      }
      oprot.writeBitSet(optionals, 1);
      if (struct.isSetUnencodedByteArrayDataBytes()) {
        {
          oprot.writeI32(struct.unencoded_byte_array_data_bytes.size());
          for (long _iter89 : struct.unencoded_byte_array_data_bytes)
          {
            oprot.writeI64(_iter89);
          }
        }
      }
    }

    @Override
    public void read(org.apache.thrift.protocol.TProtocol prot, OffsetIndex struct) throws org.apache.thrift.TException {
      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
      {
        org.apache.thrift.protocol.TList _list90 = iprot.readListBegin(org.apache.thrift.protocol.TType.STRUCT);
        struct.page_locations = new java.util.ArrayList<PageLocation>(_list90.size);
        @org.apache.thrift.annotation.Nullable PageLocation _elem91;
        for (int _i92 = 0; _i92 < _list90.size; ++_i92)
        {
          _elem91 = new PageLocation();
          _elem91.read(iprot);
          struct.page_locations.add(_elem91);
        }
      }
      struct.setPageLocationsIsSet(true);
      java.util.BitSet incoming = iprot.readBitSet(1);
      if (incoming.get(0)) {
        {
          org.apache.thrift.protocol.TList _list93 = iprot.readListBegin(org.apache.thrift.protocol.TType.I64);
          struct.unencoded_byte_array_data_bytes = new java.util.ArrayList<java.lang.Long>(_list93.size);
          long _elem94;
          for (int _i95 = 0; _i95 < _list93.size; ++_i95)
          {
            _elem94 = iprot.readI64();
            struct.unencoded_byte_array_data_bytes.add(_elem94);
          }
        }
        struct.setUnencodedByteArrayDataBytesIsSet(true);
      }
    }
  }

  private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
    return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
  }
}