summaryrefslogtreecommitdiff
path: root/connectivity/source/drivers/hsqldb/HStorageAccess.cxx
diff options
context:
space:
mode:
authorRĂ¼diger Timm <rt@openoffice.org>2005-03-30 10:51:33 +0000
committerRĂ¼diger Timm <rt@openoffice.org>2005-03-30 10:51:33 +0000
commitf4ec4c7e71e37b9963050d2162f417d42e87187e (patch)
treea89bdbe0833648574c9de6a0ea1be3749048b44e /connectivity/source/drivers/hsqldb/HStorageAccess.cxx
parent82c627ffe7d33e8364c6fa39fa6b6908f9a930fd (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.cxx259
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
+}