diff options
author | RĂ¼diger Timm <rt@openoffice.org> | 2005-03-30 10:51:33 +0000 |
---|---|---|
committer | RĂ¼diger Timm <rt@openoffice.org> | 2005-03-30 10:51:33 +0000 |
commit | f4ec4c7e71e37b9963050d2162f417d42e87187e (patch) | |
tree | a89bdbe0833648574c9de6a0ea1be3749048b44e /connectivity/source/drivers/hsqldb/HStorageAccess.cxx | |
parent | 82c627ffe7d33e8364c6fa39fa6b6908f9a930fd (diff) |
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
Diffstat (limited to 'connectivity/source/drivers/hsqldb/HStorageAccess.cxx')
-rw-r--r-- | connectivity/source/drivers/hsqldb/HStorageAccess.cxx | 259 |
1 files changed, 160 insertions, 99 deletions
diff --git a/connectivity/source/drivers/hsqldb/HStorageAccess.cxx b/connectivity/source/drivers/hsqldb/HStorageAccess.cxx index df8531ee73d9..9b1d77b140ef 100644 --- a/connectivity/source/drivers/hsqldb/HStorageAccess.cxx +++ b/connectivity/source/drivers/hsqldb/HStorageAccess.cxx @@ -2,9 +2,9 @@ * * $RCSfile: HStorageAccess.cxx,v $ * - * $Revision: 1.5 $ + * $Revision: 1.6 $ * - * last change: $Author: vg $ $Date: 2005-03-23 09:40:48 $ + * last change: $Author: rt $ $Date: 2005-03-30 11:51:33 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -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 @@ JNIEXPORT void JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_o { #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 @@ JNIEXPORT void JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_c 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 void JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_c 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_ 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 @@ JNIEXPORT jint JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_r 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 @@ JNIEXPORT jint JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_r 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 @@ JNIEXPORT jint JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_r /* * 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 @@ JNIEXPORT jint JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_r } 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 jint JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_r 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 @@ JNIEXPORT void JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_s 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 @@ JNIEXPORT void JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_w 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 @@ JNIEXPORT void JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_w } 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 @@ JNIEXPORT void JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_w 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 @@ -516,3 +556,24 @@ JNIEXPORT void JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_w 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 +} |