4040
4141from .documenthandler import DocumentHandler
4242
43+ from .unotool import checkVersion
4344from .unotool import createService
4445from .unotool import getConfiguration
46+ from .unotool import getExtensionVersion
4547from .unotool import getPropertyValueSet
4648
4749from .logger import getLogger
4850
51+ from .jdbcdriver import g_extension as g_jdbcext
52+ from .jdbcdriver import g_identifier as g_jdbcid
53+ from .jdbcdriver import g_version as g_jdbcver
54+
55+ from .configuration import g_dbname
56+ from .configuration import g_extension
4957from .configuration import g_identifier
5058from .configuration import g_defaultlog
5159from .configuration import g_basename
@@ -78,43 +86,39 @@ def connect(self, url, infos):
7886 try :
7987 newinfos , document , storage , location = self ._getConnectionInfo (infos )
8088 if storage is None or location is None :
81- code = self ._logger .resolveString (111 )
82- msg = self ._logger .resolveString (112 , url )
83- raise self ._getException (code , 1001 , msg , self )
84- driver = self ._getDriver ()
89+ self ._logException (112 , url , ' ' )
90+ raise self ._getException (1001 , None , 111 , url , '\n ' )
8591 handler = self ._getDocumentHandler (location )
8692 path = handler .getConnectionUrl (document , storage , location )
8793 print ("driver.connect() Path: %s" % path )
8894 self ._logger .logprb (INFO , 'Driver' , 'connect()' , 113 , location )
89- connection = driver .connect (path , newinfos )
95+ connection = self . _getDriver () .connect (path , newinfos )
9096 version = connection .getMetaData ().getDriverVersion ()
91- self ._logger .logprb (INFO , 'Driver' , 'connect()' , 114 , version , g_user )
97+ self ._logger .logprb (INFO , 'Driver' , 'connect()' , 114 , g_dbname , version , g_user )
9298 return connection
9399 except SQLException as e :
94- self ._logger .logp (SEVERE , 'Driver' , 'connect()' , e .Message )
95100 raise e
96101 except Exception as e :
97- self ._logger .logprb (SEVERE , 'Driver' , 'connect()' , 117 , e , traceback .format_exc ())
102+ self ._logger .logprb (SEVERE , 'Driver' , 'connect()' , 115 , str ( e ) , traceback .format_exc ())
98103 raise e
99104
100105 def acceptsURL (self , url ):
101106 accept = url .startswith (g_url )
102- self ._logger .logprb (INFO , 'Driver' , 'acceptsURL()' , 121 , url , accept )
107+ self ._logger .logprb (INFO , 'Driver' , 'acceptsURL()' , 131 , url , accept )
103108 return accept
104109
105110 def getPropertyInfo (self , url , infos ):
106111 try :
107- self ._logger .logprb (INFO , 'Driver' , 'getPropertyInfo()' , 131 , url )
108- driver = self ._getDriver ()
109- drvinfo = driver .getPropertyInfo (g_protocol , infos )
112+ self ._logger .logprb (INFO , 'Driver' , 'getPropertyInfo()' , 141 , url )
113+ drvinfo = self ._getDriver ().getPropertyInfo (g_protocol , infos )
110114 for info in drvinfo :
111- self ._logger .logprb (INFO , 'Driver' , 'getPropertyInfo()' , 132 , info .Name , info .Value )
115+ self ._logger .logprb (INFO , 'Driver' , 'getPropertyInfo()' , 142 , info .Name , info .Value )
112116 return drvinfo
113117 except SQLException as e :
114118 self ._logger .logp (SEVERE , 'Driver' , 'getPropertyInfo()' , e .Message )
115119 raise e
116120 except Exception as e :
117- self ._logger .logprb (SEVERE , 'Driver' , 'getPropertyInfo()' , 133 , e , traceback .format_exc ())
121+ self ._logger .logprb (SEVERE , 'Driver' , 'getPropertyInfo()' , 143 , e , traceback .format_exc ())
118122 raise e
119123
120124 def getMajorVersion (self ):
@@ -135,12 +139,15 @@ def _getDriver(self):
135139 # FIXME: If jdbcDriverOOo is not installed,
136140 # FIXME: we need to throw SQLException
137141 if self ._driver is None :
138- driver = createService (self ._ctx , self ._service )
139- if driver is None :
140- code = self ._logger .resolveString (181 )
141- msg = self ._logger .resolveString (182 , self ._service )
142- raise self ._getException (code , 1001 , msg , self )
143- self ._driver = driver
142+ version = getExtensionVersion (self ._ctx , g_jdbcid )
143+ if version is None :
144+ self ._logException (122 , g_jdbcext , ' ' , g_extension )
145+ raise self ._getException (1001 , None , 121 , g_jdbcext , '\n ' , g_extension )
146+ elif not checkVersion (version , g_jdbcver ):
147+ self ._logException (124 , version , g_jdbcext , ' ' , g_jdbcver )
148+ raise self ._getException (1001 , None , 123 , version , g_jdbcext , '\n ' , g_jdbcver )
149+ else :
150+ self ._driver = createService (self ._ctx , self ._service )
144151 return self ._driver
145152
146153 def _getConnectionInfo (self , infos ):
@@ -177,12 +184,15 @@ def _getDocumentHandler(self, location):
177184 self ._handlers .append (handler )
178185 return handler
179186
180- def _getException (self , state , code , message , context = None , exception = None ):
187+ def _logException (self , resource , * args ):
188+ self ._logger .logprb (SEVERE , 'Driver' , 'connect()' , resource , * args )
189+
190+ def _getException (self , code , exception , resource , * args ):
181191 error = SQLException ()
182- error .SQLState = state
183192 error .ErrorCode = code
184193 error .NextException = exception
185- error .Message = message
186- error .Context = context
194+ error .SQLState = self ._logger .resolveString (resource )
195+ error .Message = self ._logger .resolveString (resource + 1 , * args )
196+ error .Context = self
187197 return error
188198
0 commit comments