// Chromis POS - The New Face of Open Source POS
// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
//
// Chromis POS is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Chromis POS is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see <http://www.gnu.org/licenses/>.
package uk.chromis.data.loader;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import uk.chromis.basic.BasicException;
import java.math.*;
/**
*
*
*/
public abstract class JDBCSentence extends BaseSentence {
// Conexion
// protected Connection m_c;
/**
*
*/
protected Session m_s;
/**
* Creates a new instance of BaseSentence
*
* @param s
*/
public JDBCSentence(Session s) {
super();
m_s = s;
}
/**
*
*/
protected static final class JDBCDataResultSet implements DataResultSet {
private ResultSet m_rs;
private SerializerRead m_serread;
// private int m_iColumnCount;
/**
*
* @param rs
* @param serread
*/
public JDBCDataResultSet(ResultSet rs, SerializerRead serread) {
m_rs = rs;
m_serread = serread;
// m_iColumnCount = -1;
}
/**
*
* @param columnIndex
* @return
* @throws BasicException
*/
public Integer getInt(int columnIndex) throws BasicException {
try {
int iValue = m_rs.getInt(columnIndex);
return m_rs.wasNull() ? null : new Integer(iValue);
} catch (SQLException eSQL) {
throw new BasicException(eSQL);
}
}
/**
*
* @param columnIndex
* @return
* @throws BasicException
*/
public String getString(int columnIndex) throws BasicException {
try {
return m_rs.getString(columnIndex);
} catch (SQLException eSQL) {
throw new BasicException(eSQL);
}
}
/**
*
* @param columnIndex
* @return
* @throws BasicException
*/
public Double getDouble(int columnIndex) throws BasicException {
try {
double dValue = m_rs.getDouble(columnIndex);
return m_rs.wasNull() ? null : new Double(dValue);
} catch (SQLException eSQL) {
throw new BasicException(eSQL);
}
}
/**
*
* @param columnIndex
* @return
* @throws BasicException
*/
public Boolean getBoolean(int columnIndex) throws BasicException {
try {
boolean bValue = m_rs.getBoolean(columnIndex);
return m_rs.wasNull() ? null : new Boolean(bValue);
} catch (SQLException eSQL) {
throw new BasicException(eSQL);
}
}
/**
*
* @param columnIndex
* @return
* @throws BasicException
*/
public java.util.Date getTimestamp(int columnIndex) throws BasicException {
try {
java.sql.Timestamp ts = m_rs.getTimestamp(columnIndex);
return ts == null ? null : new java.util.Date(ts.getTime());
} catch (SQLException eSQL) {
throw new BasicException(eSQL);
}
}
/**
*
* @param columnIndex
* @return
* @throws BasicException
*/
public byte[] getBytes(int columnIndex) throws BasicException {
try {
return m_rs.getBytes(columnIndex);
} catch (SQLException eSQL) {
throw new BasicException(eSQL);
}
}
/**
*
* @param columnIndex
* @return
* @throws BasicException
*/
public Object getObject(int columnIndex) throws BasicException {
try {
return m_rs.getObject(columnIndex);
} catch (SQLException eSQL) {
throw new BasicException(eSQL);
}
}
/**
*
* @return @throws BasicException
*/
public DataField[] getDataField() throws BasicException {
try {
ResultSetMetaData md = m_rs.getMetaData();
DataField[] df = new DataField[md.getColumnCount()];
for (int i = 0; i < df.length; i++) {
df[i] = new DataField();
df[i].Name = md.getColumnName(i + 1);
df[i].Size = md.getColumnDisplaySize(i + 1);
df[i].Type = md.getColumnType(i + 1);
}
return df;
} catch (SQLException eSQL) {
throw new BasicException(eSQL);
}
}
/**
*
* @return @throws BasicException
*/
@Override
public Object getCurrent() throws BasicException {
return m_serread.readValues(this);
}
/**
*
* @return @throws BasicException
*/
@Override
public boolean next() throws BasicException {
try {
return m_rs.next();
} catch (SQLException eSQL) {
throw new BasicException(eSQL);
}
}
/**
*
* @throws BasicException
*/
@Override
public void close() throws BasicException {
try {
m_rs.close();
} catch (SQLException eSQL) {
throw new BasicException(eSQL);
}
}
/**
*
* @return @throws BasicException
*/
@Override
public int updateCount() throws BasicException {
return -1; // es decir somos datos.
}
@Override
public BigDecimal getBigDecimal(int columnIndex) throws BasicException {
try {
BigDecimal bdValue = m_rs.getBigDecimal(columnIndex);
return m_rs.wasNull() ? null : bdValue;
} catch (SQLException eSQL) {
throw new BasicException(eSQL);
}
}
}
}