/*
* Copyright 2015 JBoss Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.apiman.gateway.engine.impl;
import io.apiman.gateway.engine.components.jdbc.IJdbcResultSet;
import java.math.BigDecimal;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.joda.time.DateTime;
/**
* A simple/default implementation of a {@link IJdbcResultSet}.
*
* @author eric.wittmann@redhat.com
*/
public class DefaultJdbcResultSet implements IJdbcResultSet {
private ResultSet resultSet;
private List<String> columnNames;
/**
* Constructor.
* @param resultSet the result set
*/
public DefaultJdbcResultSet(ResultSet resultSet) throws Exception {
this.resultSet = resultSet;
columnNames = new ArrayList<>();
ResultSetMetaData metaData = resultSet.getMetaData();
int cols = metaData.getColumnCount();
for (int i = 1; i <= cols; i++) {
columnNames.add(metaData.getColumnLabel(i));
}
}
/**
* @see io.apiman.gateway.engine.components.jdbc.IJdbcResultSet#getColumnNames()
*/
@Override
public List<String> getColumnNames() {
return columnNames;
}
/**
* @see io.apiman.gateway.engine.components.jdbc.IJdbcResultSet#getNumColumns()
*/
@Override
public int getNumColumns() {
return columnNames.size();
}
/**
* @see io.apiman.gateway.engine.components.jdbc.IJdbcResultSet#getRow()
*/
@Override
public int getRow() {
try {
return resultSet.getRow();
} catch (SQLException e) {
return -1;
}
}
/**
* @see io.apiman.gateway.engine.components.jdbc.IJdbcResultSet#next()
*/
@Override
public boolean next() {
try {
return resultSet.next();
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
/**
* @see io.apiman.gateway.engine.components.jdbc.IJdbcResultSet#hasNext()
*/
@Override
public boolean hasNext() {
try {
return !resultSet.isLast();
} catch (SQLException e) {
return true;
}
}
/**
* @see io.apiman.gateway.engine.components.jdbc.IJdbcResultSet#getString(int)
*/
@Override
public String getString(int index) throws IndexOutOfBoundsException {
try {
return resultSet.getString(index);
} catch (SQLException e) {
return null;
}
}
/**
* @see io.apiman.gateway.engine.components.jdbc.IJdbcResultSet#getShort(int)
*/
@Override
public Short getShort(int index) throws IndexOutOfBoundsException {
try {
return resultSet.getShort(index);
} catch (SQLException e) {
return null;
}
}
/**
* @see io.apiman.gateway.engine.components.jdbc.IJdbcResultSet#getInteger(int)
*/
@Override
public Integer getInteger(int index) {
try {
return resultSet.getInt(index);
} catch (SQLException e) {
return null;
}
}
/**
* @see io.apiman.gateway.engine.components.jdbc.IJdbcResultSet#getLong(int)
*/
@Override
public Long getLong(int index) {
try {
return resultSet.getLong(index);
} catch (SQLException e) {
return null;
}
}
/**
* @see io.apiman.gateway.engine.components.jdbc.IJdbcResultSet#getDouble(int)
*/
@Override
public Double getDouble(int index) {
try {
return resultSet.getDouble(index);
} catch (SQLException e) {
return null;
}
}
/**
* @see io.apiman.gateway.engine.components.jdbc.IJdbcResultSet#getBigDecimal(int)
*/
@Override
public BigDecimal getBigDecimal(int index) {
try {
return resultSet.getBigDecimal(index);
} catch (SQLException e) {
return null;
}
}
/**
* @see io.apiman.gateway.engine.components.jdbc.IJdbcResultSet#getBoolean(int)
*/
@Override
public Boolean getBoolean(int index) {
try {
return resultSet.getBoolean(index);
} catch (SQLException e) {
return null;
}
}
/**
* @see io.apiman.gateway.engine.components.jdbc.IJdbcResultSet#getBytes(int)
*/
@Override
public byte[] getBytes(int index) {
try {
return resultSet.getBytes(index);
} catch (SQLException e) {
return null;
}
}
/**
* @see io.apiman.gateway.engine.components.jdbc.IJdbcResultSet#getDateTime(int)
*/
@Override
public DateTime getDateTime(int index) {
try {
Date date = resultSet.getDate(index);
return new DateTime(date);
} catch (SQLException e) {
return null;
}
}
/**
* @see io.apiman.gateway.engine.components.jdbc.IJdbcResultSet#close()
*/
@Override
public void close() {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}