/*
* Copyright © 2014 Cask Data, Inc.
*
* 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 co.cask.cdap.api.dataset.table;
import co.cask.cdap.api.common.Bytes;
import java.util.Map;
import java.util.TreeMap;
/**
* Writes the specified value(s) in one or more columns of a row -- this overrides existing values.
*/
public class Put {
/** row to write to. */
private final byte[] row;
/** map of column to value to write. */
private final Map<byte[], byte[]> values;
/**
* @return Row to write to.
*/
public byte[] getRow() {
return row;
}
/**
* @return Map of column to value to write.
*/
public Map<byte[], byte[]> getValues() {
return values;
}
// key as byte[]
/**
* Write to a row.
* @param row Row to write to.
*/
public Put(byte[] row) {
this.row = row;
this.values = new TreeMap<>(Bytes.BYTES_COMPARATOR);
}
/**
* Write at least one value in a column of a row.
* @param row Row to write to.
* @param column Column to write to.
* @param value Value to write.
*/
public Put(byte[] row, byte[] column, byte[] value) {
this(row);
add(column, value);
}
/**
* Write a value to a column.
* @param column Column to write to.
* @param value Value to write.
* @return Instance of this {@link co.cask.cdap.api.dataset.table.Put}.
*/
public Put add(byte[] column, byte[] value) {
values.put(column, value);
return this;
}
/**
* Write at least one value in a column of a row.
* @param row Row to write to.
* @param column Column to write to.
* @param value Value to write.
*/
public Put(byte[] row, byte[] column, String value) {
this(row);
add(column, value);
}
/**
* Write a value to a column.
* @param column Column to write to.
* @param value Value to write.
* @return Instance of this {@link co.cask.cdap.api.dataset.table.Put}.
*/
public Put add(byte[] column, String value) {
return add(column, Bytes.toBytes(value));
}
/**
* Write at least one value in a column of row.
* @param row Row to write to.
* @param column Column to write to.
* @param value Value to write.
*/
public Put(byte[] row, byte[] column, boolean value) {
this(row);
add(column, value);
}
/**
* Write a value to a column.
* @param column Column to write to.
* @param value Value to write.
* @return Instance of this {@link co.cask.cdap.api.dataset.table.Put}.
*/
public Put add(byte[] column, boolean value) {
return add(column, Bytes.toBytes(value));
}
/**
* Write at least one value in a column of a row.
* @param row Row to write to.
* @param column Column to write to.
* @param value Value to write.
*/
public Put(byte[] row, byte[] column, short value) {
this(row);
add(column, value);
}
/**
* Write a value to a column.
* @param column Column to write to.
* @param value Value to write.
* @return Instance of this {@link co.cask.cdap.api.dataset.table.Put}.
*/
public Put add(byte[] column, short value) {
return add(column, Bytes.toBytes(value));
}
/**
* Write at least one value in a column of a row.
* @param row Row to write to.
* @param column Column to write to.
* @param value Value to write.
*/
public Put(byte[] row, byte[] column, int value) {
this(row);
add(column, value);
}
/**
* Write a value to a column.
* @param column Column to write to.
* @param value Value to write.
* @return Instance of this {@link co.cask.cdap.api.dataset.table.Put}.
*/
public Put add(byte[] column, int value) {
return add(column, Bytes.toBytes(value));
}
/**
* Write at least one value in a column of a row.
* @param row Row to write to.
* @param column Column to write to.
* @param value Value to write.
*/
public Put(byte[] row, byte[] column, long value) {
this(row);
add(column, value);
}
/**
* Write a value to a column.
* @param column Column to write to.
* @param value Value to write.
* @return Instance of this {@link co.cask.cdap.api.dataset.table.Put}.
*/
public Put add(byte[] column, long value) {
return add(column, Bytes.toBytes(value));
}
/**
* Write at least one value in a column of a row.
* @param row Row to write to.
* @param column Column to write to.
* @param value Value to write.
*/
public Put(byte[] row, byte[] column, float value) {
this(row);
add(column, value);
}
/**
* Write a value to a column.
* @param column Column to write to.
* @param value Value to write.
* @return Instance of this {@link co.cask.cdap.api.dataset.table.Put}.
*/
public Put add(byte[] column, float value) {
return add(column, Bytes.toBytes(value));
}
/**
* Write at least one value in a column of a row.
* @param row Row to write to.
* @param column Column to write to.
* @param value Value to write.
*/
public Put(byte[] row, byte[] column, double value) {
this(row);
add(column, value);
}
/**
* Write a value to a column.
* @param column column to write to
* @param value value to write
* @return instance of this {@link co.cask.cdap.api.dataset.table.Put}
*/
public Put add(byte[] column, double value) {
return add(column, Bytes.toBytes(value));
}
// key & column as String
/**
* Write to a row.
* @param row row to write to
*/
public Put(String row) {
this(Bytes.toBytes(row));
}
/**
* Write at least one value in a column of a row.
* @param row row to write to
* @param column column to write to
* @param value value to write
*/
public Put(String row, String column, byte[] value) {
this(Bytes.toBytes(row));
add(column, value);
}
/**
* Write a value to a column.
* @param column column to write to
* @param value value to write
* @return instance of this {@link co.cask.cdap.api.dataset.table.Put}
*/
public Put add(String column, byte[] value) {
return add(Bytes.toBytes(column), value);
}
/**
* Write at least one value in a column of a row.
* @param row row to write to
* @param column column to write to
* @param value value to write
*/
public Put(String row, String column, String value) {
this(Bytes.toBytes(row));
add(column, value);
}
/**
* Write a value to a column.
* @param column column to write to
* @param value value to write
* @return instance of this {@link co.cask.cdap.api.dataset.table.Put}
*/
public Put add(String column, String value) {
return add(Bytes.toBytes(column), Bytes.toBytes(value));
}
/**
* Write at least one value in a column of a row.
* @param row row to write to
* @param column column to write to
* @param value value to write
*/
public Put(String row, String column, boolean value) {
this(Bytes.toBytes(row));
add(column, value);
}
/**
* Write a value to a column.
* @param column column to write to
* @param value value to write
* @return instance of this {@link co.cask.cdap.api.dataset.table.Put}
*/
public Put add(String column, boolean value) {
return add(Bytes.toBytes(column), Bytes.toBytes(value));
}
/**
* Write at least one value in a column of a row.
* @param row row to write to
* @param column column to write to
* @param value value to write
*/
public Put(String row, String column, short value) {
this(Bytes.toBytes(row));
add(column, value);
}
/**
* Write a value to a column.
* @param column column to write to
* @param value value to write
* @return instance of this {@link co.cask.cdap.api.dataset.table.Put}
*/
public Put add(String column, short value) {
return add(Bytes.toBytes(column), Bytes.toBytes(value));
}
/**
* Write at least one value in a column of a row.
* @param row row to write to
* @param column column to write to
* @param value value to write
*/
public Put(String row, String column, int value) {
this(Bytes.toBytes(row));
add(column, value);
}
/**
* Write a value to a column.
* @param column column to write to
* @param value value to write
* @return instance of this {@link co.cask.cdap.api.dataset.table.Put}
*/
public Put add(String column, int value) {
return add(Bytes.toBytes(column), Bytes.toBytes(value));
}
/**
* Write at least one value in a column of a row.
* @param row row to write to
* @param column column to write to
* @param value value to write
*/
public Put(String row, String column, long value) {
this(Bytes.toBytes(row));
add(column, value);
}
/**
* Write a value to a column.
* @param column column to write to
* @param value value to write
* @return instance of this {@link co.cask.cdap.api.dataset.table.Put}
*/
public Put add(String column, long value) {
return add(Bytes.toBytes(column), Bytes.toBytes(value));
}
/**
* Write at least one value in a column of a row.
* @param row row to write to
* @param column column to write to
* @param value value to write
*/
public Put(String row, String column, float value) {
this(Bytes.toBytes(row));
add(column, value);
}
/**
* Write a value to a column.
* @param column column to write to
* @param value value to write
* @return instance of this {@link co.cask.cdap.api.dataset.table.Put}
*/
public Put add(String column, float value) {
return add(Bytes.toBytes(column), Bytes.toBytes(value));
}
/**
* Write at least one value in a column of row.
* @param row row to write to
* @param column column to write to
* @param value value to write
*/
public Put(String row, String column, double value) {
this(Bytes.toBytes(row));
add(column, value);
}
/**
* Write a value to a column.
* @param column column to write to
* @param value value to write
* @return instance of this {@link co.cask.cdap.api.dataset.table.Put}
*/
public Put add(String column, double value) {
return add(Bytes.toBytes(column), Bytes.toBytes(value));
}
}