public void repair(IColumn column) { Collection<IColumn> columns = column.getSubColumns(); for (IColumn subColumn : columns) { IColumn columnInternal = columns_.get(subColumn.name()); if (columnInternal == null) columns_.put(subColumn.name(), subColumn); else columnInternal.repair(subColumn); } }
public String name(String key) { IColumn column = columns_.get(key); if (column instanceof SuperColumn) throw new UnsupportedOperationException("A super column cannot hold other super columns."); if (column != null) return column.name(); return null; }
public byte[] value(String key) { IColumn column = columns_.get(key); if (column instanceof SuperColumn) throw new UnsupportedOperationException("A super column cannot hold other super columns."); if (column != null) return column.value(); throw new IllegalArgumentException("Value was requested for a column that does not exist."); }
public void addColumn(String name, IColumn column) { if (column instanceof SuperColumn) throw new UnsupportedOperationException("A super column cannot hold other super columns."); IColumn oldColumn = columns_.get(name); if (oldColumn == null) { columns_.put(name, column); size_.addAndGet(column.size()); } else { if (oldColumn.timestamp() <= column.timestamp()) { columns_.put(name, column); int delta = (-1) * oldColumn.size(); /* subtract the size of the oldColumn */ size_.addAndGet(delta); /* add the size of the new column */ size_.addAndGet(column.size()); } } }
public byte[] digest() { Set<IColumn> columns = columns_.getSortedColumns(); byte[] xorHash = new byte[0]; if (name_ == null) return xorHash; xorHash = name_.getBytes(); for (IColumn column : columns) { xorHash = FBUtilities.xor(xorHash, column.digest()); } return xorHash; }
public IColumn diff(IColumn column) { IColumn columnDiff = new SuperColumn(column.name()); Collection<IColumn> columns = column.getSubColumns(); for (IColumn subColumn : columns) { IColumn columnInternal = columns_.get(subColumn.name()); if (columnInternal == null) { columnDiff.addColumn(subColumn.name(), subColumn); } else { IColumn subColumnDiff = columnInternal.diff(subColumn); if (subColumnDiff != null) { columnDiff.addColumn(subColumn.name(), subColumnDiff); } } } if (columnDiff.getSubColumns().size() != 0) return columnDiff; else return null; }
/* * Go through each sub column if it exists then as it to resolve itself if the * column does not exist then create it. */ public boolean putColumn(IColumn column) { if (!(column instanceof SuperColumn)) throw new UnsupportedOperationException("Only Super column objects should be put here"); if (!name_.equals(column.name())) throw new IllegalArgumentException( "The name should match the name of the current column or super column"); Collection<IColumn> columns = column.getSubColumns(); for (IColumn subColumn : columns) { IColumn columnInternal = columns_.get(subColumn.name()); if (columnInternal == null) { addColumn(subColumn.name(), subColumn); } else { columnInternal.putColumn(subColumn); } } return false; }
public IColumn getSubColumn(String name) { return columns_.get(name); }
public Collection<IColumn> getSubColumns() { return columns_.getSortedColumns(); }
int getColumnCount() { return columns_.size(); }
public void delete() { columns_.clear(); isMarkedForDelete_.set(true); }
public int getObjectCount() { return 1 + columns_.size(); }
protected void remove(String columnName) { columns_.remove(columnName); }