@Override public Void insert( Utf8 keyspace, Utf8 key, ColumnPath cp, ByteBuffer value, long timestamp, ConsistencyLevel consistencyLevel) throws AvroRemoteException, InvalidRequestException, UnavailableException, TimedOutException { if (logger.isDebugEnabled()) logger.debug("insert"); // FIXME: This is repetitive. byte[] column, super_column; column = cp.column == null ? null : cp.column.array(); super_column = cp.super_column == null ? null : cp.super_column.array(); String column_family = cp.column_family.toString(); String keyspace_string = keyspace.toString(); AvroValidation.validateKey(keyspace_string); AvroValidation.validateColumnPath(keyspace_string, cp); RowMutation rm = new RowMutation(keyspace_string, key.toString()); try { rm.add(new QueryPath(column_family, super_column, column), value.array(), timestamp); } catch (MarshalException e) { throw newInvalidRequestException(e.getMessage()); } doInsert(consistencyLevel, rm); return null; }
private Map<String, ColumnOrSuperColumn> multigetInternal( String keyspace, List<String> keys, ColumnPath cp, ConsistencyLevel level) throws InvalidRequestException, UnavailableException, TimedOutException { AvroValidation.validateColumnPath(keyspace, cp); // FIXME: This is repetitive. byte[] column, super_column; column = cp.column == null ? null : cp.column.array(); super_column = cp.super_column == null ? null : cp.super_column.array(); QueryPath path = new QueryPath(cp.column_family.toString(), column == null ? null : super_column); List<byte[]> nameAsList = Arrays.asList(column == null ? super_column : column); List<ReadCommand> commands = new ArrayList<ReadCommand>(); for (String key : keys) { AvroValidation.validateKey(key); commands.add(new SliceByNamesReadCommand(keyspace, key, path, nameAsList)); } Map<String, ColumnOrSuperColumn> columnFamiliesMap = new HashMap<String, ColumnOrSuperColumn>(); Map<String, Collection<IColumn>> columnsMap = multigetColumns(commands, level); for (ReadCommand command : commands) { ColumnOrSuperColumn columnorsupercolumn; Collection<IColumn> columns = columnsMap.get(command.key); if (columns == null) { columnorsupercolumn = new ColumnOrSuperColumn(); } else { assert columns.size() == 1; IColumn col = columns.iterator().next(); if (col.isMarkedForDelete()) { columnorsupercolumn = new ColumnOrSuperColumn(); } else { columnorsupercolumn = col instanceof org.apache.cassandra.db.Column ? newColumnOrSuperColumn(newColumn(col.name(), col.value(), col.timestamp())) : newColumnOrSuperColumn( newSuperColumn(col.name(), avronateSubColumns(col.getSubColumns()))); } } columnFamiliesMap.put(command.key, columnorsupercolumn); } return columnFamiliesMap; }
@Override public Void batch_insert( Utf8 keyspace, Utf8 key, Map<Utf8, GenericArray<ColumnOrSuperColumn>> cfmap, ConsistencyLevel consistency) throws AvroRemoteException, InvalidRequestException, UnavailableException, TimedOutException { if (logger.isDebugEnabled()) logger.debug("batch_insert"); String keyString = key.toString(); String keyspaceString = keyspace.toString(); AvroValidation.validateKey(keyString); for (Utf8 cfName : cfmap.keySet()) { for (ColumnOrSuperColumn cosc : cfmap.get(cfName)) AvroValidation.validateColumnOrSuperColumn(keyspaceString, cfName.toString(), cosc); } doInsert(consistency, getRowMutation(keyspaceString, keyString, cfmap)); return null; }