How to read LargeObject with pljava?

View: New views
1 Messages — Rating Filter:   Alert me  

How to read LargeObject with pljava?

by Oleg Vasylenko-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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;
    }


_______________________________________________
Pljava-dev mailing list
Pljava-dev@...
http://pgfoundry.org/mailman/listinfo/pljava-dev