From: Blas R. S. <br...@us...> - 2002-05-30 19:03:16
|
Update of /cvsroot/firebird/client-java/src/org/firebirdsql/jdbc In directory usw-pr-cvs1:/tmp/cvs-serv16662/src/org/firebirdsql/jdbc Modified Files: FBPreparedStatement.java FBField.java FBStringField.java Log Message: setCharacterStream Index: FBPreparedStatement.java =================================================================== RCS file: /cvsroot/firebird/client-java/src/org/firebirdsql/jdbc/FBPreparedStatement.java,v retrieving revision 1.19 retrieving revision 1.20 diff -U3 -r1.19 -r1.20 --- FBPreparedStatement.java 20 May 2002 11:30:51 -0000 1.19 +++ FBPreparedStatement.java 30 May 2002 19:03:13 -0000 1.20 @@ -32,6 +32,7 @@ import java.io.ByteArrayInputStream; import java.io.InputStream; +import java.io.Reader; import java.math.BigDecimal; import java.net.URL; import java.sql.Array; @@ -191,6 +192,13 @@ parameterWasSet(parameterIndex); } + public void setTextStream(int parameterIndex, Reader reader, + int length) throws SQLException + { + getField(parameterIndex).setCharacterStream(reader, length); + parameterWasSet(parameterIndex); + } + public void setBytes(int parameterIndex, byte[] x) throws SQLException { getField(parameterIndex).setBytes(x); parameterWasSet(parameterIndex); @@ -534,7 +542,7 @@ public void setCharacterStream(int parameterIndex, java.io.Reader reader, int length) throws SQLException { - throw new SQLException("not yet implemented"); + setCharacterStream(parameterIndex, reader, length); } Index: FBField.java =================================================================== RCS file: /cvsroot/firebird/client-java/src/org/firebirdsql/jdbc/FBField.java,v retrieving revision 1.10 retrieving revision 1.11 diff -U3 -r1.10 -r1.11 --- FBField.java 20 May 2002 11:30:51 -0000 1.10 +++ FBField.java 30 May 2002 19:03:13 -0000 1.11 @@ -39,6 +39,7 @@ import java.math.BigDecimal; import java.io.InputStream; +import java.io.Reader; abstract class FBField { static String BYTE_CONVERSION_ERROR = @@ -79,6 +80,8 @@ "Error converting to unicode stream."; static String BINARY_STREAM_CONVERSION_ERROR = "Error converting to binary stream."; + static String CHARACTER_STREAM_CONVERSION_ERROR = + "Error converting to character stream."; static String BYTES_CONVERSION_ERROR = "Error converting to array of bytes."; @@ -631,6 +634,10 @@ throw (SQLException)createException( BINARY_STREAM_CONVERSION_ERROR).fillInStackTrace(); } + void setCharacterStream(Reader in, int length) throws SQLException { + throw (SQLException)createException( + ASCII_STREAM_CONVERSION_ERROR).fillInStackTrace(); + } void setBytes(byte[] value) throws SQLException { throw (SQLException)createException( BYTES_CONVERSION_ERROR).fillInStackTrace(); @@ -651,4 +658,4 @@ throw (SQLException)createException( BLOB_CONVERSION_ERROR).fillInStackTrace(); } -} \ No newline at end of file +} Index: FBStringField.java =================================================================== RCS file: /cvsroot/firebird/client-java/src/org/firebirdsql/jdbc/FBStringField.java,v retrieving revision 1.5 retrieving revision 1.6 diff -U3 -r1.5 -r1.6 --- FBStringField.java 25 May 2002 01:42:09 -0000 1.5 +++ FBStringField.java 30 May 2002 19:03:13 -0000 1.6 @@ -38,6 +38,8 @@ import java.text.ParseException; import java.io.InputStream; +import java.io.Reader; +import java.io.StringWriter; import java.io.IOException; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -306,6 +308,26 @@ catch (IOException ioex) { throw (SQLException) createException( BINARY_STREAM_CONVERSION_ERROR).fillInStackTrace(); + } + } + void setCharacterStream(Reader in, int length) throws SQLException { + if (in == null) { + setNull(true); + return; + } + + try { + StringWriter out = new StringWriter(); + char[] buff = new char[4096]; + int counter = 0; + while ((counter = in.read(buff)) != -1) + out.write(buff, 0, counter); + String outString = out.toString(); + setString(outString.substring(0, length)); + } + catch (IOException ioex) { + throw (SQLException) createException( + CHARACTER_STREAM_CONVERSION_ERROR).fillInStackTrace(); } } void setBytes(byte[] value) throws SQLException { |