package org.es.jdbc.api; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Types; public class ElasticResultSetMetaData implements ResultSetMetaData { protected static final String JSON_DATA_COL_NAME = "__INDEX_DOCS__"; @Override public int getColumnCount() throws SQLException { return 1; } @Override public boolean isAutoIncrement(int column) throws SQLException { return true; } @Override public boolean isCaseSensitive(int column) throws SQLException { return true; } @Override public boolean isSearchable(int column) throws SQLException { return false; } @Override public boolean isCurrency(int column) throws SQLException { return false; } @Override public int isNullable(int column) throws SQLException { return columnNoNulls; } @Override public boolean isSigned(int column) throws SQLException { return false; } @Override public int getColumnDisplaySize(int column) throws SQLException { return 0; } @Override public String getColumnLabel(int column) throws SQLException { return JSON_DATA_COL_NAME; } @Override public String getColumnName(int column) throws SQLException { return JSON_DATA_COL_NAME; } @Override public String getSchemaName(int column) throws SQLException { return null; } @Override public int getPrecision(int column) throws SQLException { return 0; } @Override public int getScale(int column) throws SQLException { return 0; } @Override public String getTableName(int column) throws SQLException { return null; } @Override public String getCatalogName(int column) throws SQLException { return null; } @Override public int getColumnType(int column) throws SQLException { return Types.VARCHAR; } @Override public String getColumnTypeName(int column) throws SQLException { return "String"; } @Override public boolean isReadOnly(int column) throws SQLException { return true; } @Override public boolean isWritable(int column) throws SQLException { return false; } @Override public boolean isDefinitelyWritable(int column) throws SQLException { return false; } @Override public String getColumnClassName(int column) throws SQLException { return String.class.toString(); } @Override @SuppressWarnings("unchecked") public final T unwrap(final Class iface) throws SQLException { if (isWrapperFor(iface)) { return (T) this; } throw new SQLException(String.format("[%s] cannot be unwrapped as [%s]", getClass().getName(), iface.getName())); } @Override public final boolean isWrapperFor(final Class iface) throws SQLException { return iface.isInstance(this); } }