All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.hstream.HRecord Maven / Gradle / Ivy

package io.hstream;

import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.google.protobuf.Struct;
import com.google.protobuf.util.JsonFormat;
import java.util.Set;
import java.util.function.Predicate;

/** A data structure like json object. */
public class HRecord {

  private Struct delegate;

  public static HRecordBuilder newBuilder() {
    return new HRecordBuilder();
  }

  public HRecord(Struct delegate) {
    this.delegate = delegate;
  }

  public Struct getDelegate() {
    return delegate;
  }

  public String toString() {
    return delegate.toString();
  }

  public String toJsonString() {
    try {
      return JsonFormat.printer().print(delegate);
    } catch (InvalidProtocolBufferException e) {
      throw new HStreamDBClientException(e);
    }
  }

  public String toCompactJsonString() {
    try {
      return JsonFormat.printer().omittingInsignificantWhitespace().print(delegate);
    } catch (InvalidProtocolBufferException e) {
      throw new HStreamDBClientException(e);
    }
  }

  public Set getKeySet() {
    return delegate.getFieldsMap().keySet();
  }

  public boolean contains(String key) {
    return delegate.containsFields(key);
  }

  public HRecord filterWithKeys(Predicate p) {
    var builder = Struct.newBuilder();
    delegate
        .getFieldsMap()
        .forEach(
            (k, v) -> {
              if (p.test(k)) {
                builder.putFields(k, v);
              }
            });
    return new HRecord(builder.build());
  }

  public boolean getBoolean(String name) {
    return delegate.getFieldsOrThrow(name).getBoolValue();
  }

  public int getInt(String name) {
    return (int) delegate.getFieldsOrThrow(name).getNumberValue();
  }

  public long getLong(String name) {
    return (long) delegate.getFieldsOrThrow(name).getNumberValue();
  }

  public double getDouble(String name) {
    return (double) delegate.getFieldsOrThrow(name).getNumberValue();
  }

  public String getString(String name) {
    return delegate.getFieldsOrThrow(name).getStringValue();
  }

  public HArray getHArray(String name) {
    return new HArray(delegate.getFieldsOrThrow(name).getListValue());
  }

  public HRecord getHRecord(String name) {
    return new HRecord(delegate.getFieldsOrThrow(name).getStructValue());
  }

  public ByteString toByteString() {
    return delegate.toByteString();
  }

  public byte[] toByteArray() {
    return delegate.toByteArray();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy