User: vg      
Date: 05/02/16 07:58:22

Modified:
 /dba/dbaccess/source/core/dataaccess/
  databasecontext.cxx

Log:
 INTEGRATION: CWS hsqldb2 (1.25.22); FILE MERGED
 2005/01/28 12:19:38 oj 1.25.22.2: #i39922# fix for storeAsURL and merges from 
dba23
 2005/01/19 07:06:47 oj 1.25.22.1: #i39922# merge from dba22 and fixes in 
datasource for embedded storage

File Changes:

Directory: /dba/dbaccess/source/core/dataaccess/
================================================

File [changed]: databasecontext.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/dbaccess/source/core/dataaccess/databasecontext.cxx?r1=1.27&r2=1.28
Delta lines:  +61 -32
---------------------
--- databasecontext.cxx 2 Feb 2005 13:59:09 -0000       1.27
+++ databasecontext.cxx 16 Feb 2005 15:58:18 -0000      1.28
@@ -150,6 +150,9 @@
 #ifndef INCLUDED_SVTOOLS_PATHOPTIONS_HXX
 #include <svtools/pathoptions.hxx>
 #endif
+#ifndef SVTOOLS_FILENOTATION_HXX
+#include <svtools/filenotation.hxx>
+#endif
 
 using namespace ::com::sun::star::sdbc;
 using namespace ::com::sun::star::sdb;
@@ -168,6 +171,8 @@
 using ::com::sun::star::task::InteractionClassification_ERROR;
 using ::com::sun::star::ucb::IOErrorCode_NO_FILE;
 using ::com::sun::star::ucb::InteractiveIOException;
+using ::com::sun::star::ucb::IOErrorCode_NOT_EXISTING;
+using ::com::sun::star::ucb::IOErrorCode_NOT_EXISTING_PATH;
 
 //==========================================================================
 
@@ -377,14 +382,37 @@
        }
        catch(InteractiveIOException e)
        {
-               throw WrappedTargetException( _sURL, 
Reference<XNamingService>(this), makeAny( e ) );
+        if  (   ( e.Code == IOErrorCode_NO_FILE )
+            ||  ( e.Code == IOErrorCode_NOT_EXISTING )
+            ||  ( e.Code == IOErrorCode_NOT_EXISTING_PATH )
+            )
+        {
+            // #i40463# #i39187#
+            String sErrorMessage( DBACORE_RESSTRING( 
RID_STR_FILE_DOES_NOT_EXIST ) );
+            ::svt::OFileNotation aTransformer( _sURL );
+                   sErrorMessage.SearchAndReplaceAscii( "$file$", 
aTransformer.get( ::svt::OFileNotation::N_SYSTEM ) );
+
+            SQLException aError;
+            aError.Message = sErrorMessage;
+
+            throw WrappedTargetException( _sURL, Reference< XNamingService >( 
this ), makeAny( aError ) );
+        }
+               throw WrappedTargetException( _sURL, Reference< XNamingService 
>( this ), makeAny( e ) );
        }
        catch(Exception e)
        {
                throw WrappedTargetException( _sURL, 
Reference<XNamingService>(this), makeAny( e ) );
        }
 
-       Reference< XInterface > xExistent = *(new ODatabaseSource(*this, 
_rName, m_xServiceManager,this));
+       Reference< XInterface > xExistent = getObject(_sURL);
+       if ( xExistent.is() ) // we found a object registered under the URL
+       {
+               m_aDatabaseObjects.erase(_sURL);
+               registerPrivate(_rName,xExistent);
+       }
+       else
+       {
+               xExistent = *(new ODatabaseSource(*this, _rName, 
m_xServiceManager,this));
 
        Sequence< PropertyValue > aArgs(1);
        aArgs[0].Name = 
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FileName"));
@@ -417,6 +445,7 @@
                else
                        DBG_ERROR("ODatabaseContext::getRegisteredObject: 
missing an interface!");
        }
+       }
        return xExistent;
 }
 




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to