[Pljava-dev] How to read LargeObject with pljava?

From: olegvvasylenko at gmail(dot)com (Oleg Vasylenko)
To:
Subject: [Pljava-dev] How to read LargeObject with pljava?
Date: 2009-06-13 08:53:19
Message-ID: 4A3368FF.7090406@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pljava-dev

Hi everybody!

Have some code to read LargeObject from db and create digest message for
the it content. The code generate an error attemtting to read a portion
of LO.

Could anybody give an example how to read LO from database?

I'm using jre1.6.0.13, pljava1.4.0, postgresql8.3.7.

Thanks.

import java.io.FileOutputStream;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Logger;
import org.postgresql.largeobject.LargeObject;
import org.postgresql.largeobject.LargeObjectManager;

public class ServerDigestCreator {

public static String
anotherCreateStrDigest(org.postgresql.pljava.internal.Oid lObjectId)
throws SQLException,NoSuchAlgorithmException
{
String digest = null;
java.sql.Savepoint sp = null;
if(lObjectId==null) return null;
java.sql.Connection aConnection =
DriverManager.getConnection("jdbc:default:connection");
try{

sp = aConnection.setSavepoint();
org.postgresql.pljava.internal.LargeObject lo =
org.postgresql.pljava.internal.LargeObject.open(lObjectId,
org.postgresql.pljava.internal.LargeObject.INV_READ);

MessageDigest aDigest = MessageDigest.getInstance("md5");

if(lo==null) {
aConnection.releaseSavepoint(sp);
return digest;
}
byte buf[] = new byte[2048];
int s=0;

while((s = lo.read(buf))!=0)
<---------------------- Error occurs here
=============================================================
aDigest.update(buf);

byte[] digestByteArray = aDigest.digest();
BigInteger tempBI = new BigInteger(digestByteArray);
digest = tempBI.toString();
lo.close();

aConnection.releaseSavepoint(sp);
}
catch(SQLException ex)
{
if(sp!=null)
aConnection.rollback(sp);
Logger.getAnonymousLogger().info("ERROR: " + ex.getMessage()
+ "\n");
throw new SQLException(ex.getMessage());
}

return digest;
}

Browse pljava-dev by date

  From Date Subject
Next Message Oleg Vasylenko 2009-06-13 09:43:17 [Pljava-dev] How to read LargeObject with pljava?
Previous Message Thomas Hallgren 2009-05-27 06:07:00 [Pljava-dev] threads left running after function end