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

com.google.cloud.bigquery.BigtableOptions Maven / Gradle / Ivy

There is a newer version: 2.44.0
Show newest version
/*
 * Copyright 2018 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.google.cloud.bigquery;

import com.google.common.base.MoreObjects;
import com.google.common.collect.Lists;
import java.util.List;
import java.util.Objects;

public class BigtableOptions extends FormatOptions {

  private static final long serialVersionUID = 1L;

  private final Boolean ignoreUnspecifiedColumnFamilies;
  private final Boolean readRowkeyAsString;
  private final List columnFamilies;

  public Boolean getIgnoreUnspecifiedColumnFamilies() {
    return ignoreUnspecifiedColumnFamilies;
  }

  public Boolean getReadRowkeyAsString() {
    return readRowkeyAsString;
  }

  public List getColumnFamilies() {
    return columnFamilies;
  }

  /** A builder for {@code BigtableOptions} objects. */
  public static final class Builder {

    private Boolean ignoreUnspecifiedColumnFamilies;
    private Boolean readRowkeyAsString;
    private List columnFamilies;

    private Builder() {}

    private Builder(BigtableOptions bigtableOptions) {
      this.ignoreUnspecifiedColumnFamilies = bigtableOptions.ignoreUnspecifiedColumnFamilies;
      this.readRowkeyAsString = bigtableOptions.readRowkeyAsString;
      this.columnFamilies = bigtableOptions.columnFamilies;
    }

    /**
     * If field is true, then the column families that are not specified in columnFamilies list are
     * not exposed in the table schema. Otherwise, they are read with BYTES type values. The default
     * value is false.
     */
    public Builder setIgnoreUnspecifiedColumnFamilies(Boolean ignoreUnspecifiedColumnFamilies) {
      this.ignoreUnspecifiedColumnFamilies = ignoreUnspecifiedColumnFamilies;
      return this;
    }

    /**
     * If readRowkeyAsString is true, then the rowkey column families will be read and converted to
     * string. Otherwise they are read with BYTES type values and users need to manually cast them
     * with CAST if necessary. The default value is false.
     */
    public Builder setReadRowkeyAsString(Boolean readRowkeyAsString) {
      this.readRowkeyAsString = readRowkeyAsString;
      return this;
    }

    /**
     * List of column families to expose in the table schema along with their types.
     *
     * 

This list restricts the column families that can be referenced in queries and specifies * their value types. You can use this list to do type conversions - see the 'type' field for * more details. If you leave this list empty, all column families are present in the table * schema and their values are read as BYTES. During a query only the column families referenced * in that query are read from Bigtable. */ public Builder setColumnFamilies(List columnFamilies) { this.columnFamilies = columnFamilies; return this; } public BigtableOptions build() { return new BigtableOptions(this); } } /** Returns a builder for the {@link BigtableOptions} object. */ public Builder toBuilder() { return new Builder(this); } BigtableOptions(Builder builder) { super(FormatOptions.BIGTABLE); ignoreUnspecifiedColumnFamilies = builder.ignoreUnspecifiedColumnFamilies; readRowkeyAsString = builder.readRowkeyAsString; columnFamilies = builder.columnFamilies; } @Override public String toString() { return MoreObjects.toStringHelper(this) .add("ignoreUnspecifiedColumnFamilies", ignoreUnspecifiedColumnFamilies) .add("readRowkeyAsString", readRowkeyAsString) .add("columnFamilies", columnFamilies) .toString(); } @Override public final int hashCode() { return Objects.hash(ignoreUnspecifiedColumnFamilies, readRowkeyAsString, columnFamilies); } @Override public final boolean equals(Object obj) { if (obj == this) { return true; } if (obj == null || !obj.getClass().equals(BigtableOptions.class)) { return false; } BigtableOptions other = (BigtableOptions) obj; return ignoreUnspecifiedColumnFamilies == other.ignoreUnspecifiedColumnFamilies && readRowkeyAsString == other.readRowkeyAsString && Objects.equals(columnFamilies, other.columnFamilies); } /** Returns a builder for a {@link BigtableOptions} object. */ public static Builder newBuilder() { return new Builder(); } static BigtableOptions fromPb(com.google.api.services.bigquery.model.BigtableOptions options) { Builder builder = newBuilder(); builder.setIgnoreUnspecifiedColumnFamilies(options.getIgnoreUnspecifiedColumnFamilies()); builder.setReadRowkeyAsString(options.getReadRowkeyAsString()); if (options.getColumnFamilies() != null) { builder.setColumnFamilies( Lists.transform(options.getColumnFamilies(), BigtableColumnFamily.FROM_PB_FUNCTION)); } return builder.build(); } com.google.api.services.bigquery.model.BigtableOptions toPb() { com.google.api.services.bigquery.model.BigtableOptions options = new com.google.api.services.bigquery.model.BigtableOptions() .setIgnoreUnspecifiedColumnFamilies(ignoreUnspecifiedColumnFamilies) .setReadRowkeyAsString(readRowkeyAsString); if (columnFamilies != null) { options.setColumnFamilies( Lists.transform(columnFamilies, BigtableColumnFamily.TO_PB_FUNCTION)); } return options; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy