package cn.edu.ruc.kafka.resultset; import kafka.javaapi.PartitionMetadata; import java.sql.SQLException; import java.util.List; /** * @author Bian Haoqiong * @version 0.0.1 */ public class PartitionMetadataResultSet extends ResultSet { private List<PartitionMetadata> partsMetadata = null; private ResultSetMetaData resultSetMetaData = null; private int index = -1; public PartitionMetadataResultSet (List<PartitionMetadata> partsMetadata, ResultSetMetaData resultSetMetaData) { this.partsMetadata = partsMetadata; this.resultSetMetaData = resultSetMetaData; this.index = -1; } @Override public boolean next() throws SQLException { index++; if (index < this.partsMetadata.size()) { return true; } return false; } @Override public void close() throws SQLException { this.partsMetadata.clear(); } @Override public ResultSetMetaData getMetaData() throws SQLException { return this.resultSetMetaData; } @Override public Object getObject(int columnIndex) throws SQLException { if (this.index < 0 || this.index >= this.partsMetadata.size()) { throw new SQLException("invalid row index: " + this.index); } if (this.resultSetMetaData.getColumnName(columnIndex).equalsIgnoreCase("leader")) { return this.partsMetadata.get(this.index).leader(); } throw new SQLException("invalid column index: " + columnIndex); } @Override public Object getObject(String columnLabel) throws SQLException { if (this.index < 0 || this.index >= this.partsMetadata.size()) { throw new SQLException("invalid row index: " + this.index); } if (columnLabel.equalsIgnoreCase("leader")) { return this.partsMetadata.get(this.index).leader(); } throw new SQLException("invalid column label: " + columnLabel); } @Override public int getInt(int columnIndex) throws SQLException { if (this.index < 0 || this.index >= this.partsMetadata.size()) { throw new SQLException("invalid row index: " + this.index); } if (this.resultSetMetaData.getColumnName(columnIndex).equalsIgnoreCase("partitionId")) { return this.partsMetadata.get(this.index).partitionId(); } else if (this.resultSetMetaData.getColumnName(columnIndex).equalsIgnoreCase("sizeInBytes")) { return this.partsMetadata.get(this.index).sizeInBytes(); } throw new SQLException("invalid column index: " + columnIndex); } @Override public int getInt(String columnLabel) throws SQLException { if (this.index < 0 || this.index >= this.partsMetadata.size()) { throw new SQLException("invalid row index: " + this.index); } if (columnLabel.equalsIgnoreCase("partitionId")) { return this.partsMetadata.get(this.index).partitionId(); } else if (columnLabel.equalsIgnoreCase("sizeInBytes")) { return this.partsMetadata.get(this.index).sizeInBytes(); } throw new SQLException("invalid column label: " + columnLabel); } }