private <A> long insert2(A obj, Serializer<A> serializer, byte[] insertBuffer, OpenByteArrayOutputStream insertBAO, SerializerOutput insertOut) throws IOException { insertBAO.reset(insertBuffer); serializer.serialize(insertOut, obj); if(compress){ byte[] data = compress(insertBAO.getBuf(),insertBAO.size()); insertBAO.reset(insertBuffer); insertBAO.write(data); } long physRowId = _physMgr.insert( insertBAO.getBuf(), 0, insertBAO.size() ); long recid = _logicMgr.insert( physRowId ); if ( DEBUG ) { System.out.println( "BaseRecordManager.insert() recid " + recid + " length " + insertBAO.size() ) ; } return compressRecid(recid); }
private <A> void update2(long logRecid, A obj, Serializer<A> serializer,byte[] insertBuffer, OpenByteArrayOutputStream insertBAO, SerializerOutput insertOut) throws IOException { logRecid = decompressRecid(logRecid); long physRecid = _logicMgr.fetch( logRecid ); if(physRecid == 0) throw new IOException("Can not update, recid does not exist: "+logRecid); insertBAO.reset(insertBuffer); serializer.serialize(insertOut, obj ); if(compress){ byte[] data = compress(insertBAO.getBuf(),insertBAO.size()); insertBAO.reset(insertBuffer); insertBAO.write(data); } if ( DEBUG ) { System.out.println( "BaseRecordManager.update() recid " + logRecid + " length " + insertBAO.size() ) ; } long newRecid = _physMgr.update( physRecid, insertBAO.getBuf(), 0, insertBAO.size() ); _logicMgr.update( logRecid, newRecid ); }