@Override public HColumnFamily<K, N> next() { if ( !hasNext() ) { throw new NoSuchElementException("No more rows left on this HColumnFamily"); } rowIndex++; K key = _keys.get(rowIndex); applyToRow(key, rows.get(keySerializer.toByteBuffer(key))); return this; }
private void maybeExecuteSlice(N columnName) { if ( columnNames == null ) { columnNames = new HashSet<N>(); } if ( columns == null ) { columns = new HashMap<N, HColumn<N,ByteBuffer>>(); } if ( columns.get(columnName) == null ) { columnNames.add(columnName); activeSlicePredicate.setColumnNames(columnNames); if ( _keys.size() == 1 ) { doExecuteSlice(); } else { doExecuteMultigetSlice(); } } }
/** * Extract a value for the specified name and serializer */ @Override public <V> V getValue(N name, Serializer<V> valueSerializer) { return extractColumnValue(name, valueSerializer); }
@Test public void testToggleMultiget() { Mutator<String> mutator = HFactory.createMutator(keyspace, StringSerializer.get()); mutator.addInsertion("patricioe", "Standard1", HFactory.createStringColumn("email", "patricioe@datastax.com")); mutator.addInsertion("patricioe", "Standard1", HFactory.createColumn("int", 2, StringSerializer.get(), IntegerSerializer.get())); mutator.addInsertion("patricioe", "Standard1", HFactory.createColumn("long", 2L, StringSerializer.get(), LongSerializer.get())); timeUUID = TimeUUIDUtils.getTimeUUID(System.currentTimeMillis()); mutator.addInsertion("patricioe", "Standard1", HFactory.createColumn("uuid", timeUUID, StringSerializer.get(), UUIDSerializer.get())); mutator.execute(); HColumnFamilyImpl<String, String> columnFamily = new HColumnFamilyImpl<String,String>(keyspace, "Standard1",StringSerializer.get(), StringSerializer.get()); columnFamily.addKey("zznate").addKey("patricioe").setCount(10); assertEquals("nate@datastax.com",columnFamily.getString("email")); assertTrue(columnFamily.hasNext()); columnFamily.next(); assertEquals("patricioe@datastax.com",columnFamily.getString("email")); assertFalse(columnFamily.hasNext()); try { columnFamily.next(); fail(); } catch (NoSuchElementException nsee) { assertNotNull(nsee); } } }
@Test public void testColumnFamilyReadahead() { HColumnFamily<String, String> columnFamily = new HColumnFamilyImpl<String,String>(keyspace, "Standard1",StringSerializer.get(), StringSerializer.get()); columnFamily.addKey("zznate").setCount(10); assertEquals(4,columnFamily.getColumns().size()); assertEquals(1,columnFamily.getInt("int")); assertEquals("nate@datastax.com",columnFamily.getString("email")); assertEquals(1L, columnFamily.getLong("long")); assertEquals(timeUUID, columnFamily.getUUID("uuid")); }
@Override public Collection<HColumn<N, ByteBuffer>> getColumns() { if ( columns == null ) columns = new HashMap<N, HColumn<N,ByteBuffer>>(); if ( !hasValues ) doExecuteSlice(); return columns.values(); }
private <V> V extractColumnValue(N columnName, Serializer<V> valueSerializer) { maybeExecuteSlice(columnName); return columns.get(columnName) != null && columns.get(columnName).getValue() != null ? valueSerializer.fromByteBuffer(columns.get(columnName).getValue()) : null; }
private void doExecuteMultigetSlice() { keyspace.doExecuteOperation(new Operation<Column>(OperationType.READ) { @Override public Column execute(Cassandra.Client cassandra) throws HectorException { try { if ( queryLogger.isDebugEnabled() ) { queryLogger.debug("---------\nColumnFamily multiget: {} slicePredicate: {}", columnFamilyName, activeSlicePredicate.toString()); } rows = cassandra.multiget_slice(keySerializer.toBytesList(_keys), columnParent, activeSlicePredicate.toThrift(), ThriftConverter.consistencyLevel(consistencyLevelPolicy.get(operationType))); applyResultStatus(execTime, getCassandraHost()); if ( queryLogger.isDebugEnabled() ) { queryLogger.debug("Execution took {} microseconds on host {}\n----------", lastExecutionTime, lastHostUsed); } } catch (Exception e) { throw exceptionsTranslator.translate(e); } hasValues = true; return null; } }); applyToRow(_keys.get(0), rows.get(keySerializer.toByteBuffer(_keys.get(0)))); }
@Test public void testColumnFamilySetup() { HColumnFamily<String, String> columnFamily = new HColumnFamilyImpl<String,String>(keyspace, "Standard1",StringSerializer.get(), StringSerializer.get()); columnFamily.addKey("zznate"); // columnFamily.loadSlice(15); columnFamily.addKey().loadSlice() ~ def. 100 assertEquals(1,columnFamily.getInt("int")); assertEquals("nate@datastax.com",columnFamily.getString("email")); assertEquals(1L, columnFamily.getLong("long")); assertEquals(timeUUID, columnFamily.getUUID("uuid")); }
@Override public Collection<HColumn<N, ByteBuffer>> getColumns() { if ( columns == null ) columns = new HashMap<N, HColumn<N,ByteBuffer>>(); if ( !hasValues ) doExecuteSlice(); return columns.values(); }
private <V> V extractColumnValue(N columnName, Serializer<V> valueSerializer) { maybeExecuteSlice(columnName); return columns.get(columnName) != null && columns.get(columnName).getValue() != null ? valueSerializer.fromByteBuffer(columns.get(columnName).getValue()) : null; }
private void doExecuteMultigetSlice() { keyspace.doExecuteOperation(new Operation<Column>(OperationType.READ) { @Override public Column execute(Cassandra.Client cassandra) throws HectorException { try { if ( queryLogger.isDebugEnabled() ) { queryLogger.debug("---------\nColumnFamily multiget: {} slicePredicate: {}", columnFamilyName, activeSlicePredicate.toString()); } rows = cassandra.multiget_slice(keySerializer.toBytesList(_keys), columnParent, activeSlicePredicate.toThrift(), ThriftConverter.consistencyLevel(consistencyLevelPolicy.get(operationType))); applyResultStatus(execTime, getCassandraHost()); if ( queryLogger.isDebugEnabled() ) { queryLogger.debug("Execution took {} microseconds on host {}\n----------", lastExecutionTime, lastHostUsed); } } catch (Exception e) { throw exceptionsTranslator.translate(e); } hasValues = true; return null; } }); applyToRow(_keys.get(0), rows.get(keySerializer.toByteBuffer(_keys.get(0)))); }
@Override public Date getDate(N name) { return extractColumnValue(name, DateSerializer.get()); }
@Override public HColumnFamily<K, N> next() { if ( !hasNext() ) { throw new NoSuchElementException("No more rows left on this HColumnFamily"); } rowIndex++; K key = _keys.get(rowIndex); applyToRow(key, rows.get(keySerializer.toByteBuffer(key))); return this; }
private void maybeExecuteSlice(N columnName) { if ( columnNames == null ) { columnNames = new HashSet<N>(); } if ( columns == null ) { columns = new HashMap<N, HColumn<N,ByteBuffer>>(); } if ( columns.get(columnName) == null ) { columnNames.add(columnName); activeSlicePredicate.setColumnNames(columnNames); if ( _keys.size() == 1 ) { doExecuteSlice(); } else { doExecuteMultigetSlice(); } } }
@Test public void testClearAndRecall() { HColumnFamily<String, String> columnFamily = new HColumnFamilyImpl<String,String>(keyspace, "Standard1",StringSerializer.get(), StringSerializer.get()); columnFamily.addKey("zznate").setCount(10); assertEquals(4,columnFamily.getColumns().size()); assertEquals(1,columnFamily.getInt("int")); assertEquals("nate@datastax.com",columnFamily.getString("email")); assertEquals(1L, columnFamily.getLong("long")); assertEquals(timeUUID, columnFamily.getUUID("uuid")); columnFamily.clear(); assertNull(columnFamily.getUUID("uuid")); assertEquals(4,columnFamily.getColumns().size()); assertEquals(timeUUID, columnFamily.getUUID("uuid")); }
@Override public Collection<HColumn<N, ByteBuffer>> getColumns() { if ( columns == null ) columns = new HashMap<N, HColumn<N,ByteBuffer>>(); if ( !hasValues ) doExecuteSlice(); return columns.values(); }
private <V> V extractColumnValue(N columnName, Serializer<V> valueSerializer) { maybeExecuteSlice(columnName); return columns.get(columnName) != null && columns.get(columnName).getValue() != null ? valueSerializer.fromByteBuffer(columns.get(columnName).getValue()) : null; }
private void doExecuteMultigetSlice() { keyspace.doExecuteOperation(new Operation<Column>(OperationType.READ) { @Override public Column execute(Cassandra.Client cassandra) throws HectorException { try { if ( queryLogger.isDebugEnabled() ) { queryLogger.debug("---------\nColumnFamily multiget: {} slicePredicate: {}", columnFamilyName, activeSlicePredicate.toString()); } rows = cassandra.multiget_slice(keySerializer.toBytesList(_keys), columnParent, activeSlicePredicate.toThrift(), ThriftConverter.consistencyLevel(consistencyLevelPolicy.get(operationType))); applyResultStatus(execTime, getCassandraHost()); if ( queryLogger.isDebugEnabled() ) { queryLogger.debug("Execution took {} microseconds on host {}\n----------", lastExecutionTime, lastHostUsed); } } catch (Exception e) { throw exceptionsTranslator.translate(e); } hasValues = true; return null; } }); applyToRow(_keys.get(0), rows.get(keySerializer.toByteBuffer(_keys.get(0)))); }
@Override public double getDouble(N name) { return extractColumnValue(name, DoubleSerializer.get()); }