User: rt Date: 05/03/30 03:51:36 Modified: /dba/connectivity/source/drivers/hsqldb/ HStorageAccess.cxx
Log: INTEGRATION: CWS dba28 (1.4.22); FILE MERGED 2005/03/30 11:26:32 fs 1.4.22.5: RESYNC: (1.4-1.5); FILE MERGED 2005/03/24 08:01:24 fs 1.4.22.4: #i10000# 2005/03/23 15:34:02 fs 1.4.22.3: #i10000# 2005/03/23 14:57:50 fs 1.4.22.2: #i45314# logging facilities 2005/03/21 12:53:32 fs 1.4.22.1: copying the changes from CWS dba26 herein, since they're needed to fix i45314 File Changes: Directory: /dba/connectivity/source/drivers/hsqldb/ =================================================== File [changed]: HStorageAccess.cxx Url: http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/hsqldb/HStorageAccess.cxx?r1=1.5&r2=1.6 Delta lines: +210 -149 ----------------------- --- HStorageAccess.cxx 23 Mar 2005 09:40:48 -0000 1.5 +++ HStorageAccess.cxx 30 Mar 2005 11:51:33 -0000 1.6 @@ -58,7 +58,7 @@ * * ************************************************************************/ -#include "hsqldb/HStorageAccess.h" +#include "hsqldb/HStorageAccess.hxx" #ifndef _COMPHELPER_PROCESSFACTORY_HXX_ #include <comphelper/processfactory.hxx> @@ -75,6 +75,10 @@ #include "hsqldb/HStorageMap.hxx" #include "hsqldb/StorageNativeInputStream.h" +#ifndef CONNECTIVITY_HSQLDB_ACCESSLOG_HXX +#include "accesslog.hxx" +#endif + using namespace ::com::sun::star::container; using namespace ::com::sun::star::uno; @@ -97,10 +101,8 @@ { #if OSL_DEBUG_LEVEL > 1 { - ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name); - sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data")); - ::rtl::OString sName = ::rtl::OUStringToOString(sOrgName,RTL_TEXTENCODING_ASCII_US); - getStreams()[sOrgName] = fopen( sName.getStr(), "a+" ); + OperationLogFile( env, name, "data" ).logOperation( "openStream" ); + LogFile( env, name, "data" ).create(); } #endif @@ -123,13 +125,17 @@ xFlush->flush(); } catch(Exception&) - {} + { + OSL_ENSURE( false, "NativeStorageAccess::close: caught an exception while flushing!" ); + } #if OSL_DEBUG_LEVEL > 1 { - ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name); - sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data")); - fclose( getStreams()[sOrgName] ); - getStreams().erase(sOrgName); + OperationLogFile aOpLog( env, name, "data" ); + aOpLog.logOperation( "close" ); + aOpLog.close(); + + LogFile aDataLog( env, name, "data" ); + aDataLog.close(); } #endif @@ -144,9 +150,19 @@ JNIEXPORT jlong JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_getFilePointer (JNIEnv * env, jobject obj_this,jstring name, jstring key) { +#if OSL_DEBUG_LEVEL > 1 + OperationLogFile aOpLog( env, name, "data" ); + aOpLog.logOperation( "getFilePointer" ); +#endif + ::boost::shared_ptr<StreamHelper> pHelper = StorageContainer::getRegisteredStream(env,name,key); OSL_ENSURE(pHelper.get(),"No stream helper!"); - return pHelper.get() ? pHelper->getSeek()->getPosition() : jlong(0); + + jlong nReturn = pHelper.get() ? pHelper->getSeek()->getPosition() : jlong(0); +#if OSL_DEBUG_LEVEL > 1 + aOpLog.logReturn( nReturn ); +#endif + return nReturn; } // ----------------------------------------------------------------------------- @@ -158,19 +174,24 @@ JNIEXPORT jlong JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_length (JNIEnv * env, jobject obj_this,jstring name, jstring key) { +#if OSL_DEBUG_LEVEL > 1 + OperationLogFile aOpLog( env, name, "data" ); + aOpLog.logOperation( "length" ); +#endif + ::boost::shared_ptr<StreamHelper> pHelper = StorageContainer::getRegisteredStream(env,name,key); OSL_ENSURE(pHelper.get(),"No stream helper!"); - return pHelper.get() ? pHelper->getSeek()->getLength() :jlong(0); + + jlong nReturn = pHelper.get() ? pHelper->getSeek()->getLength() :jlong(0); +#if OSL_DEBUG_LEVEL > 1 + aOpLog.logReturn( nReturn ); +#endif + return nReturn; } + // ----------------------------------------------------------------------------- -/* - * Class: com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess - * Method: read - * Signature: (Ljava/lang/String;Ljava/lang/String;)I - */ -JNIEXPORT jint JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_read__Ljava_lang_String_2Ljava_lang_String_2 - (JNIEnv * env, jobject obj_this,jstring name, jstring key) +jint read_from_storage_stream( JNIEnv * env, jobject obj_this, jstring name, jstring key, DataLogFile* logger ) { ::boost::shared_ptr<StreamHelper> pHelper = StorageContainer::getRegisteredStream(env,name,key); Reference< XInputStream> xIn = pHelper.get() ? pHelper->getInputStream() : Reference< XInputStream>(); @@ -200,27 +221,39 @@ tmpInt = 256 +tmpInt; #if OSL_DEBUG_LEVEL > 1 - ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name); - if ( getStreams().find(sOrgName + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data"))) != getStreams().end() ) - sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data")); - else - sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".input")); - fputc(tmpInt,getStreams()[sOrgName]); + if ( logger ) + logger->write( tmpInt ); #endif return(tmpInt); } } return -1; } + // ----------------------------------------------------------------------------- /* * Class: com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess * Method: read - * Signature: (Ljava/lang/String;Ljava/lang/String;[BII)I + * Signature: (Ljava/lang/String;Ljava/lang/String;)I */ -JNIEXPORT jint JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_read__Ljava_lang_String_2Ljava_lang_String_2_3BII - (JNIEnv * env, jobject obj_this,jstring name, jstring key, jbyteArray buffer, jint off, jint len) +JNIEXPORT jint JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_read__Ljava_lang_String_2Ljava_lang_String_2 + (JNIEnv* env, jobject obj_this, jstring name, jstring key) +{ +#if OSL_DEBUG_LEVEL > 1 + OperationLogFile aOpLog( env, name, "data" ); + aOpLog.logOperation( "read" ); + + DataLogFile aDataLog( env, name, "data" ); + return read_from_storage_stream( env, obj_this, name, key, &aDataLog ); +#else + return read_from_storage_stream( env, obj_this, name, key ); +#endif +} + +// ----------------------------------------------------------------------------- + +jint read_from_storage_stream_into_buffer( JNIEnv * env, jobject obj_this,jstring name, jstring key, jbyteArray buffer, jint off, jint len, DataLogFile* logger ) { ::boost::shared_ptr<StreamHelper> pHelper = StorageContainer::getRegisteredStream(env,name,key); Reference< XInputStream> xIn = pHelper.get() ? pHelper->getInputStream() : Reference< XInputStream>(); @@ -253,12 +286,8 @@ env->SetByteArrayRegion(buffer,off,nBytesRead,&aData[0]); #if OSL_DEBUG_LEVEL > 1 - ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name); - if ( getStreams().find(sOrgName + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data"))) != getStreams().end() ) - sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data")); - else - sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".input")); - fwrite(&aData[0],sizeof(sal_Int8),nBytesRead,getStreams()[sOrgName]); + if ( logger ) + logger->write( aData.getConstArray(), nBytesRead ); #endif return nBytesRead; } @@ -271,12 +300,38 @@ /* * Class: com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess + * Method: read + * Signature: (Ljava/lang/String;Ljava/lang/String;[BII)I + */ +JNIEXPORT jint JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_read__Ljava_lang_String_2Ljava_lang_String_2_3BII + (JNIEnv * env, jobject obj_this,jstring name, jstring key, jbyteArray buffer, jint off, jint len) +{ +#if OSL_DEBUG_LEVEL > 1 + OperationLogFile aOpLog( env, name, "data" ); + aOpLog.logOperation( "read( byte[], int, int )" ); + + DataLogFile aDataLog( env, name, "data" ); + return read_from_storage_stream_into_buffer( env, obj_this, name, key, buffer, off, len, &aDataLog ); +#else + return read_from_storage_stream_into_buffer( env, obj_this, name, key, buffer, off, len ); +#endif +} + +// ----------------------------------------------------------------------------- + +/* + * Class: com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess * Method: readInt * Signature: (Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_readInt (JNIEnv * env, jobject obj_this,jstring name, jstring key) { +#if OSL_DEBUG_LEVEL > 1 + OperationLogFile aOpLog( env, name, "data" ); + aOpLog.logOperation( "readInt" ); +#endif + ::boost::shared_ptr<StreamHelper> pHelper = StorageContainer::getRegisteredStream(env,name,key); Reference< XInputStream> xIn = pHelper.get() ? pHelper->getInputStream() : Reference< XInputStream>(); OSL_ENSURE(xIn.is(),"Input stream is NULL!"); @@ -318,12 +373,10 @@ } jint nRet = ((ch[0] << 24) + (ch[1] << 16) + (ch[2] << 8) + (ch[3] << 0)); #if OSL_DEBUG_LEVEL > 1 - ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name); - if ( getStreams().find(sOrgName + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data"))) != getStreams().end() ) - sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data")); - else - sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".input")); - fputc(nRet,getStreams()[sOrgName]); + DataLogFile aDataLog( env, name, "data" ); + aDataLog.write( nRet ); + + aOpLog.logReturn( nRet ); #endif return nRet; } @@ -342,27 +395,28 @@ JNIEXPORT void JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_seek (JNIEnv * env, jobject obj_this,jstring name, jstring key, jlong position) { +#if OSL_DEBUG_LEVEL > 1 + OperationLogFile aOpLog( env, name, "data" ); + aOpLog.logOperation( "seek", position ); +#endif + ::boost::shared_ptr<StreamHelper> pHelper = StorageContainer::getRegisteredStream(env,name,key); Reference< XSeekable> xSeek = pHelper.get() ? pHelper->getSeek() : Reference< XSeekable>(); OSL_ENSURE(xSeek.is(),"No Seekable stream!"); if ( xSeek.is() ) { + #if OSL_DEBUG_LEVEL > 1 + DataLogFile aDataLog( env, name, "data" ); + #endif + ::sal_Int64 nLen = xSeek->getLength(); if ( nLen < position) { static ::sal_Int64 BUFFER_SIZE = 9192; -#if OSL_DEBUG_LEVEL > 1 - { - ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name); - if ( getStreams().find(sOrgName + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data"))) != getStreams().end() ) - sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data")); - else - sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".output")); - int errr = fseek(getStreams()[sOrgName],nLen,SEEK_SET); - } -#endif - + #if OSL_DEBUG_LEVEL > 1 + aDataLog.seek( nLen ); + #endif xSeek->seek(nLen); Reference< XOutputStream> xOut = pHelper->getOutputStream(); OSL_ENSURE(xOut.is(),"No output stream!"); @@ -384,39 +438,23 @@ Sequence< ::sal_Int8 > aData(n); memset(aData.getArray(),0,n); xOut->writeBytes(aData); -#if OSL_DEBUG_LEVEL > 1 - ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name); - if ( getStreams().find(sOrgName + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data"))) != getStreams().end() ) - sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data")); - else - sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".output")); - fwrite(&aData[0],sizeof(sal_Int8),n,getStreams()[sOrgName]); -#endif + #if OSL_DEBUG_LEVEL > 1 + aDataLog.write( aData.getConstArray(), n ); + #endif } } xSeek->seek(position); OSL_ENSURE(xSeek->getPosition() == position,"Wrong position after seeking the stream"); -#if OSL_DEBUG_LEVEL > 1 - ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name); - if ( getStreams().find(sOrgName + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data"))) != getStreams().end() ) - sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data")); - else - sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".output")); - int errr = fseek(getStreams()[sOrgName],position,SEEK_SET); - OSL_ENSURE(xSeek->getPosition() == ftell(getStreams()[sOrgName]),"Wrong position after seeking the stream"); -#endif + #if OSL_DEBUG_LEVEL > 1 + aDataLog.seek( position ); + OSL_ENSURE( xSeek->getPosition() == aDataLog.tell(), "Wrong position after seeking the stream" ); + #endif } } // ----------------------------------------------------------------------------- -/* - * Class: com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess - * Method: write - * Signature: (Ljava/lang/String;Ljava/lang/String;[BII)V - */ -JNIEXPORT void JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_write - (JNIEnv * env, jobject obj_this,jstring name, jstring key, jbyteArray buffer, jint off, jint len) +void write_to_storage_stream_from_buffer( JNIEnv* env, jobject obj_this, jstring name, jstring key, jbyteArray buffer, jint off, jint len, DataLogFile* logger ) { ::boost::shared_ptr<StreamHelper> pHelper = StorageContainer::getRegisteredStream(env,name,key); Reference< XOutputStream> xOut = pHelper.get() ? pHelper->getOutputStream() : Reference< XOutputStream>(); @@ -439,20 +477,12 @@ OSL_ENSURE(buf,"buf is NULL"); if ( buf ) { -#if OSL_DEBUG_LEVEL > 1 - ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name); - sal_Bool bCheck; - if ( bCheck = (getStreams().find(sOrgName + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data"))) != getStreams().end()) ) - sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data")); - else - sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".output")); -#endif - Sequence< ::sal_Int8 > aData(buf + off,len); xOut->writeBytes(aData); env->ReleaseByteArrayElements(buffer, buf, JNI_ABORT); #if OSL_DEBUG_LEVEL > 1 - fwrite(&aData[off],sizeof(sal_Int8),len,getStreams()[sOrgName]); + if ( logger ) + logger->write( aData.getConstArray(), len ); #endif } } @@ -465,19 +495,34 @@ } catch(Exception& e) { - OSL_ENSURE(0,"Exception catched! : write [BII)V"); + OSL_ENSURE(0,"Exception caught! : write [BII)V"); StorageContainer::throwJavaException(e,env); } } + // ----------------------------------------------------------------------------- /* * Class: com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess - * Method: writeInt - * Signature: (Ljava/lang/String;Ljava/lang/String;I)V + * Method: write + * Signature: (Ljava/lang/String;Ljava/lang/String;[BII)V */ -JNIEXPORT void JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_writeInt - (JNIEnv * env, jobject obj_this,jstring name, jstring key, jint v) +JNIEXPORT void JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_write + (JNIEnv * env, jobject obj_this,jstring name, jstring key, jbyteArray buffer, jint off, jint len) +{ +#if OSL_DEBUG_LEVEL > 1 + OperationLogFile aOpLog( env, name, "data" ); + aOpLog.logOperation( "write( byte[], int, int )" ); + + DataLogFile aDataLog( env, name, "data" ); + write_to_storage_stream_from_buffer( env, obj_this, name, key, buffer, off, len, &aDataLog ); +#else + write_to_storage_stream_from_buffer( env, obj_this, name, key, buffer, off, len ); +#endif +} +// ----------------------------------------------------------------------------- + +void write_to_storage_stream( JNIEnv* env, jobject obj_this, jstring name, jstring key, jint v, DataLogFile* logger ) { ::boost::shared_ptr<StreamHelper> pHelper = StorageContainer::getRegisteredStream(env,name,key); Reference< XOutputStream> xOut = pHelper.get() ? pHelper->getOutputStream() : Reference< XOutputStream>(); @@ -494,13 +539,8 @@ xOut->writeBytes(oneByte); #if OSL_DEBUG_LEVEL > 1 - ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name); - if ( getStreams().find(sOrgName + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data"))) != getStreams().end() ) - sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data")); - else - sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".output")); - - fwrite(&oneByte[0],sizeof(sal_Int8),4,getStreams()[sOrgName]); + if ( logger ) + logger->write( oneByte.getConstArray(), 4 ); #endif } else @@ -515,4 +555,25 @@ OSL_ENSURE(0,"Exception catched! : writeBytes(aData);"); StorageContainer::throwJavaException(e,env); } +} + +// ----------------------------------------------------------------------------- + +/* + * Class: com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess + * Method: writeInt + * Signature: (Ljava/lang/String;Ljava/lang/String;I)V + */ +JNIEXPORT void JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_writeInt + (JNIEnv * env, jobject obj_this,jstring name, jstring key, jint v) +{ +#if OSL_DEBUG_LEVEL > 1 + OperationLogFile aOpLog( env, name, "data" ); + aOpLog.logOperation( "writeInt" ); + + DataLogFile aDataLog( env, name, "data" ); + write_to_storage_stream( env, obj_this, name, key, v, &aDataLog ); +#else + write_to_storage_stream( env, obj_this, name, key, v ); +#endif } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
