com.scalar.database.storage.cassandra.ScannerImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of scalardb Show documentation
Show all versions of scalardb Show documentation
A universal transaction manager that achieves database-agnostic transactions and distributed transactions that span multiple databases
package com.scalar.database.storage.cassandra;
import static com.google.common.base.Preconditions.checkNotNull;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.TableMetadata;
import com.scalar.database.api.Result;
import com.scalar.database.api.Scanner;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Optional;
import javax.annotation.Nonnull;
import javax.annotation.concurrent.NotThreadSafe;
@NotThreadSafe
public final class ScannerImpl implements Scanner {
private final ResultSet resultSet;
private final TableMetadata metadata;
public ScannerImpl(ResultSet resultSet, TableMetadata metadata) {
this.resultSet = checkNotNull(resultSet);
this.metadata = checkNotNull(metadata);
}
@Override
@Nonnull
public Optional one() {
Row row = resultSet.one();
if (row == null) {
return Optional.empty();
}
return Optional.of(new ResultImpl(row, metadata));
}
@Override
@Nonnull
public List all() {
List results = new ArrayList<>();
resultSet.forEach(r -> results.add(new ResultImpl(r, metadata)));
return results;
}
@Override
public Iterator iterator() {
return new ScannerIterator(resultSet, metadata);
}
}