package im.xiaoyao.presto.ethereum; import com.facebook.presto.spi.ColumnHandle; import com.facebook.presto.spi.ConnectorSession; import com.facebook.presto.spi.ConnectorSplit; import com.facebook.presto.spi.RecordSet; import com.facebook.presto.spi.connector.ConnectorRecordSetProvider; import com.facebook.presto.spi.connector.ConnectorTransactionHandle; import com.google.common.collect.ImmutableList; import org.web3j.protocol.Web3j; import javax.inject.Inject; import java.util.List; import static im.xiaoyao.presto.ethereum.EthereumHandleResolver.convertColumnHandle; import static im.xiaoyao.presto.ethereum.EthereumHandleResolver.convertSplit; public class EthereumRecordSetProvider implements ConnectorRecordSetProvider { private final Web3j web3j; @Inject public EthereumRecordSetProvider(EthereumWeb3jProvider web3jProvider) { this.web3j = web3jProvider.getWeb3j(); } @Override public RecordSet getRecordSet( ConnectorTransactionHandle transaction, ConnectorSession session, ConnectorSplit split, List<? extends ColumnHandle> columns ) { EthereumSplit ethereumSplit = convertSplit(split); ImmutableList.Builder<EthereumColumnHandle> handleBuilder = ImmutableList.builder(); for (ColumnHandle handle : columns) { EthereumColumnHandle columnHandle = convertColumnHandle(handle); handleBuilder.add(columnHandle); } return new EthereumRecordSet(web3j, handleBuilder.build(), ethereumSplit); } }