File asciiFile = (File) value;
asciiStream = new BufferedInputStream(new FileInputStream(asciiFile));
length = (int) asciiFile.length();
clob = new ClobHelper(asciiStream, length);
} else if (value instanceof Part) {
Part anyFile = (Part) value;
asciiStream = new BufferedInputStream(anyFile.getInputStream());
length = (int) anyFile.getSize();
clob = new ClobHelper(asciiStream, length);
} else if (value instanceof JDBCxlobHelper) {
asciiStream = ((JDBCxlobHelper) value).inputStream;
length = ((JDBCxlobHelper) value).length;
clob = new ClobHelper(asciiStream, length);
} else if (value instanceof Source) {
asciiStream = ((Source) value).getInputStream();
length = (int)((Source) value).getContentLength();
clob = new ClobHelper(asciiStream, length);
} else {
String asciiText = (String) value;
asciiStream = new ByteArrayInputStream(asciiText.getBytes());
length = asciiText.length();
clob = new ClobHelper(asciiStream, length);
}
statement.setClob(position, clob);
break;
case Types.CHAR:
// simple large object, e.g. Informix's TEXT
//System.out.println("CHAR");
if (value instanceof File) {
File asciiFile = (File) value;
asciiStream = new BufferedInputStream(new FileInputStream(asciiFile));
length = (int) asciiFile.length();
} else if (value instanceof JDBCxlobHelper) {
asciiStream = ((JDBCxlobHelper) value).inputStream;
length = ((JDBCxlobHelper) value).length;
} else if (value instanceof Source) {
asciiStream = ((Source) value).getInputStream();
length = (int)((Source) value).getContentLength();
} else if (value instanceof Part) {
Part anyFile = (Part) value;
asciiStream = new BufferedInputStream(anyFile.getInputStream());
length = (int) anyFile.getSize();
clob = new ClobHelper(asciiStream, length);
} else {
String asciiText = (String) value;
asciiStream = new BufferedInputStream(new ByteArrayInputStream(asciiText.getBytes()));
length = asciiText.length();
}
statement.setAsciiStream(position, asciiStream, length);
break;
case Types.BIGINT:
//System.out.println("BIGINT");
BigDecimal bd = null;
if (value instanceof BigDecimal) {
bd = (BigDecimal) value;
} else if (value instanceof Number) {
bd = BigDecimal.valueOf(((Number)value).longValue());
} else {
bd = new BigDecimal((String) value);
}
statement.setBigDecimal(position, bd);
break;
case Types.TINYINT:
//System.out.println("TINYINT");
Byte b = null;
if (value instanceof Byte) {
b = (Byte) value;
} else if (value instanceof Number) {
b = new Byte(((Number) value).byteValue());
} else {
b = new Byte((String) value);
}
statement.setByte(position, b.byteValue());
break;
case Types.DATE:
//System.out.println("DATE");
Date d = null;
if (value instanceof Date) {
d = (Date) value;
} else if (value instanceof java.util.Date) {
d = new Date(((java.util.Date) value).getTime());
} else if (value instanceof Calendar) {
d = new Date(((Calendar) value).getTime().getTime());
} else {
d = Date.valueOf(String.valueOf(value));
}
statement.setDate(position, d);
break;
case Types.DOUBLE:
//System.out.println("DOUBLE");
double db;
if (value instanceof Number) {
db = (((Number) value).doubleValue());
} else {
db = Double.parseDouble(String.valueOf(value));
}
statement.setDouble(position, db);
break;
case Types.FLOAT:
//System.out.println("FLOAT");
float f;
if (value instanceof Number) {
f = (((Number) value).floatValue());
} else {
f = Float.parseFloat(String.valueOf(value));
}
statement.setFloat(position, f);
break;
case Types.NUMERIC:
//System.out.println("NUMERIC");
long l;
if (value instanceof Number) {
l = (((Number) value).longValue());
} else {
l = Long.parseLong(String.valueOf(value));
}
statement.setLong(position, l);
break;
case Types.SMALLINT:
//System.out.println("SMALLINT");
Short s = null;
if (value instanceof Short) {
s = (Short) value;
} else if (value instanceof Number) {
s = new Short(((Number) value).shortValue());
} else {
s = new Short((String) value);
}
statement.setShort(position, s.shortValue());
break;
case Types.TIME:
//System.out.println("TIME");
Time t = null;
if (value instanceof Time) {
t = (Time) value;
} else if (value instanceof java.util.Date){
t = new Time(((java.util.Date) value).getTime());
} else {
t = Time.valueOf(value.toString());
}
statement.setTime(position, t);
break;
case Types.TIMESTAMP:
//System.out.println("TIMESTAMP");
Timestamp ts = null;
if (value instanceof Time) {
ts = (Timestamp) value;
} else if (value instanceof java.util.Date) {
ts = new Timestamp(((java.util.Date) value).getTime());
} else {
ts = Timestamp.valueOf(value.toString());
}
statement.setTimestamp(position, ts);
break;
case Types.ARRAY:
//System.out.println("ARRAY");
statement.setArray(position, (Array) value); // no way to convert string to array
break;
case Types.STRUCT:
//System.out.println("STRUCT");
case Types.OTHER:
//System.out.println("OTHER");
statement.setObject(position, value);
break;
case Types.LONGVARBINARY:
//System.out.println("LONGVARBINARY");
statement.setTimestamp(position, new Timestamp((new java.util.Date()).getTime()));
break;
case Types.VARCHAR:
//System.out.println("VARCHAR");
statement.setString(position, (String) value);
break;
case Types.BLOB:
//System.out.println("BLOB");
if (value instanceof JDBCxlobHelper) {
statement.setBinaryStream(position, ((JDBCxlobHelper)value).inputStream, ((JDBCxlobHelper)value).length);
} else if (value instanceof Source){
statement.setBinaryStream(position, ((Source)value).getInputStream(), (int)((Source)value).getContentLength());
} else {
Blob blob = null;
if (value instanceof Blob) {
blob = (Blob) value;
} else if( value instanceof File) {
file = (File)value;
blob = new BlobHelper(new FileInputStream(file), (int) file.length());
} else if (value instanceof String) {
file = new File((String)value);
blob = new BlobHelper(new FileInputStream(file), (int) file.length());
} else if (value instanceof Part) {
Part anyFile = (Part) value;
blob = new BlobHelper(new BufferedInputStream(anyFile.getInputStream()), anyFile.getSize());
} else {
throw new SQLException("Invalid type for blob: "+value.getClass().getName());
}
//InputStream input = new BufferedInputStream(new FileInputStream(file));
statement.setBlob(position, blob);