/* * Copyright (c) 2004, PostgreSQL Global Development Group * See the LICENSE file in the project root for more information. */ package org.postgresql.jdbc; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.nio.charset.Charset; import java.sql.Clob; import java.sql.SQLException; public class PgClob extends AbstractBlobClob implements java.sql.Clob { public PgClob(org.postgresql.core.BaseConnection conn, long oid) throws java.sql.SQLException { super(conn, oid); } public synchronized Reader getCharacterStream(long pos, long length) throws SQLException { checkFreed(); throw org.postgresql.Driver.notImplemented(this.getClass(), "getCharacterStream(long, long)"); } public synchronized int setString(long pos, String str) throws SQLException { checkFreed(); throw org.postgresql.Driver.notImplemented(this.getClass(), "setString(long,str)"); } public synchronized int setString(long pos, String str, int offset, int len) throws SQLException { checkFreed(); throw org.postgresql.Driver.notImplemented(this.getClass(), "setString(long,String,int,int)"); } public synchronized java.io.OutputStream setAsciiStream(long pos) throws SQLException { checkFreed(); throw org.postgresql.Driver.notImplemented(this.getClass(), "setAsciiStream(long)"); } public synchronized java.io.Writer setCharacterStream(long pos) throws SQLException { checkFreed(); throw org.postgresql.Driver.notImplemented(this.getClass(), "setCharacteStream(long)"); } public synchronized InputStream getAsciiStream() throws SQLException { return getBinaryStream(); } public synchronized Reader getCharacterStream() throws SQLException { Charset connectionCharset = Charset.forName(conn.getEncoding().name()); return new InputStreamReader(getBinaryStream(), connectionCharset); } public synchronized String getSubString(long i, int j) throws SQLException { assertPosition(i, j); getLo(false).seek((int) i - 1); return new String(getLo(false).read(j)); } /** * For now, this is not implemented. */ public synchronized long position(String pattern, long start) throws SQLException { checkFreed(); throw org.postgresql.Driver.notImplemented(this.getClass(), "position(String,long)"); } /** * This should be simply passing the byte value of the pattern Blob */ public synchronized long position(Clob pattern, long start) throws SQLException { checkFreed(); throw org.postgresql.Driver.notImplemented(this.getClass(), "position(Clob,start)"); } }