Skip to content

Commit fe83bf7

Browse files
committed
git subrepo pull uno
subrepo: subdir: "uno" merged: "da522e84" upstream: origin: "https://github.com/prrvchr/uno.git" branch: "main" commit: "da522e84" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "2f68596"
1 parent 286558b commit fe83bf7

File tree

11 files changed

+126
-90
lines changed

11 files changed

+126
-90
lines changed

uno/.gitrepo

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
[subrepo]
77
remote = https://github.com/prrvchr/uno.git
88
branch = main
9-
commit = 054dd6184ac4d60fbfeca2e76424fac1e1cbd60e
10-
parent = d1cce8673cda89e6c657afa36dfd73c005eca6b7
9+
commit = da522e840a7080b2c2ef590783e7e3d15b894c1b
10+
parent = 286558bfdee9f9ca68164288aa6cf658bb15638d
1111
method = merge
1212
cmdver = 0.4.3

uno/lib/uno/ucb/contentprovider.py

Lines changed: 15 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -43,38 +43,23 @@
4343
from com.sun.star.ucb import IllegalIdentifierException
4444

4545
from .ucp import Identifier
46+
from .ucp import getDataSourceUrl
4647
from .ucp import getExceptionMessage
4748

48-
from .database import DataBase
49-
5049
from .datasource import DataSource
5150

52-
from .unotool import checkVersion
53-
from .unotool import getExtensionVersion
5451
from .unotool import getUrlTransformer
5552
from .unotool import parseUrl
5653

57-
from .dbtool import getConnectionUrl
58-
5954
from .logger import getLogger
6055

61-
from .oauth2 import getOAuth2Version
62-
from .oauth2 import g_extension as g_oauth2ext
63-
from .oauth2 import g_version as g_oauth2ver
64-
6556
from .jdbcdriver import g_extension as g_jdbcext
66-
from .jdbcdriver import g_identifier as g_jdbcid
67-
from .jdbcdriver import g_version as g_jdbcver
6857

69-
from .dbconfig import g_folder
7058
from .dbconfig import g_version
7159

7260
from .configuration import g_extension
7361
from .configuration import g_identifier
7462
from .configuration import g_defaultlog
75-
from .configuration import g_scheme
76-
77-
from .ucp import g_ucbseparator
7863

7964
import traceback
8065

@@ -109,8 +94,11 @@ def createContentIdentifier(self, url):
10994
# XContentProvider
11095
def queryContent(self, identifier):
11196
try:
97+
print("ContentProvider.queryContent() 1")
11298
url = self._getPresentationUrl(identifier.getContentIdentifier())
99+
print("ContentProvider.queryContent() 2")
113100
content = self._datasource.queryContent(self, self._authority, url)
101+
print("ContentProvider.queryContent() 3")
114102
self._logger.logprb(INFO, self._cls, 'queryContent', 231, url)
115103
return content
116104
except IllegalIdentifierException as e:
@@ -145,42 +133,24 @@ def getSupportedServiceNames(self):
145133
# Private methods
146134
def _getDataSource(self):
147135
mtd = '_getDataSource'
148-
oauth2 = getOAuth2Version(self._ctx)
149-
driver = getExtensionVersion(self._ctx, g_jdbcid)
150-
if oauth2 is None:
151-
msg = self._getExceptionMessage(mtd, 221, g_oauth2ext, g_oauth2ext, g_extension)
152-
raise IllegalIdentifierException(msg, self)
153-
elif not checkVersion(oauth2, g_oauth2ver):
154-
msg = self._getExceptionMessage(mtd, 223, g_oauth2ext, oauth2, g_oauth2ext, g_oauth2ver)
155-
raise IllegalIdentifierException(msg, self)
156-
elif driver is None:
157-
msg = self._getExceptionMessage(mtd, 221, g_jdbcext, g_jdbcext, g_extension)
136+
url = getDataSourceUrl(self._ctx, self, self._logger, self._cls, mtd)
137+
try:
138+
datasource = DataSource(self._ctx, self._logger, url)
139+
except SQLException as e:
140+
msg = self._getExceptionMessage(mtd, 225, g_extension, url, e.Message)
158141
raise IllegalIdentifierException(msg, self)
159-
elif not checkVersion(driver, g_jdbcver):
160-
msg = self._getExceptionMessage(mtd, 223, g_jdbcext, driver, g_jdbcext, g_jdbcver)
142+
if not datasource.isUptoDate():
143+
msg = self._getExceptionMessage(mtd, 227, g_jdbcext, datasource.getDataBaseVersion(), g_version)
161144
raise IllegalIdentifierException(msg, self)
162-
else:
163-
path = g_folder + g_ucbseparator + g_scheme
164-
url = getConnectionUrl(self._ctx, path)
165-
try:
166-
database = DataBase(self._ctx, self._logger, url)
167-
except SQLException as e:
168-
msg = self._getExceptionMessage(mtd, 225, g_extension, url, e.Message)
169-
raise IllegalIdentifierException(msg, self)
170-
else:
171-
if not database.isUptoDate():
172-
msg = self._getExceptionMessage(mtd, 227, g_jdbcext, database.Version, g_version)
173-
raise IllegalIdentifierException(msg, self)
174-
else:
175-
return DataSource(self._ctx, self._logger, database)
176-
return None
145+
return datasource
177146

178147
def _getPresentationUrl(self, url):
179-
# FIXME: Sometimes the url can end with a dot or a slash, it must be deleted
180-
url = url.rstrip('/.')
148+
# FIXME: Sometimes the url can end with a dot, it must be removed
149+
url = url.removesuffix('.')
181150
uri = parseUrl(self._transformer, url)
182151
if uri is not None:
183152
url = self._transformer.getPresentation(uri, True)
153+
print("ContentProvider._getPresentationUrl() url: %s" % url)
184154
return url
185155

186156
def _getExceptionMessage(self, mtd, code, extension, *args):

uno/lib/uno/ucb/database.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,17 +65,24 @@
6565
class DataBase():
6666
def __init__(self, ctx, logger, url, user='', pwd=''):
6767
self._ctx = ctx
68-
self._logger = logger
68+
cls, mtd = 'DataBase', '__init__'
69+
logger.logprb(INFO, cls, mtd, 401)
6970
self._url = url
7071
odb = url + '.odb'
7172
new = not getSimpleFile(ctx).exists(odb)
7273
connection = getDataBaseConnection(ctx, url, user, pwd, new)
7374
version = connection.getMetaData().getDriverVersion()
74-
if new and checkVersion(version, g_version):
75-
createDataBase(ctx, logger, connection, odb, version)
75+
if new:
76+
if checkVersion(version, g_version):
77+
logger.logprb(INFO, cls, mtd, 402, version)
78+
createDataBase(ctx, connection, odb)
79+
logger.logprb(INFO, cls, mtd, 403)
80+
else:
81+
logger.logprb(SEVERE, cls, mtd, 404, version, g_version)
7682
self._statement = connection.createStatement()
7783
self._version = version
78-
self._logger.logprb(INFO, 'DataBase', '__init__', 401)
84+
self._logger = logger
85+
logger.logprb(INFO, cls, mtd, 405)
7986

8087
@property
8188
def Url(self):
@@ -467,7 +474,7 @@ def _mergeItem(self, call, item):
467474
mx = 2 ** 32 / 2 -1
468475
if size > mx:
469476
size = min(size, mx)
470-
self._logger.logprb(SEVERE, 'DataBase', '_mergeItem', 402, size, item.get('Size'))
477+
self._logger.logprb(SEVERE, 'DataBase', '_mergeItem', 451, size, item.get('Size'))
471478
call.setLong(10, size)
472479
call.setString(11, item.get('Link'))
473480
call.setBoolean(12, item.get('Trashed'))

uno/lib/uno/ucb/datasource.py

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@
3232

3333
from com.sun.star.ucb import IllegalIdentifierException
3434

35-
from .oauth2 import getOAuth2UserName
35+
from .database import DataBase
36+
37+
from .oauth20 import getOAuth2UserName
3638

3739
from .unotool import getUriFactory
3840

@@ -53,20 +55,36 @@
5355

5456

5557
class DataSource():
56-
def __init__(self, ctx, logger, database):
58+
def __init__(self, ctx, logger, url):
59+
cls, mtd = 'DataSource', '__init__'
60+
logger.logprb(INFO, cls, mtd, 301)
5761
self._ctx = ctx
5862
self._default = ''
5963
self._users = {}
60-
self._logger = logger
61-
self.Error = None
6264
self._sync = Event()
6365
self._lock = Lock()
6466
self._urifactory = getUriFactory(ctx)
65-
self._provider = Provider(ctx, logger)
66-
self.Replicator = Replicator(ctx, database.Url, self._provider, self._users, self._sync, self._lock)
67-
self.DataBase = database
67+
database = DataBase(ctx, logger, url)
68+
provider = Provider(ctx, logger)
69+
self._replicator = Replicator(ctx, url, provider, self._users, self._sync, self._lock)
70+
self._database = database
71+
self._provider = provider
72+
self._logger = logger
6873
database.addCloseListener(CloseListener(self))
69-
self._logger.logprb(INFO, 'DataSource', '__init__', 301)
74+
logger.logprb(INFO, cls, mtd, 302)
75+
76+
@property
77+
def DataBase(self):
78+
return self._database
79+
@property
80+
def Replicator(self):
81+
return self._replicator
82+
83+
def isUptoDate(self):
84+
return self.DataBase.isUptoDate()
85+
86+
def getDataBaseVersion(self):
87+
return self.DataBase.Version
7088

7189
# called from XCloseListener
7290
def dispose(self):
@@ -137,7 +155,10 @@ def _getUser(self, source, authority, url):
137155
return user, uri
138156

139157
def _getUserName(self, source, url):
140-
name = getOAuth2UserName(self._ctx, self, self._provider.Scheme)
158+
try:
159+
name = getOAuth2UserName(self._ctx, source, self._provider.Scheme)
160+
except Exception as e:
161+
print("DataSource._getUserName() ERROR: %s - %s" % (e, traceback.format_exc()))
141162
if not name:
142163
msg = self._getExceptionMessage('_getUserName', 331, url)
143164
raise IllegalIdentifierException(msg, source)

uno/lib/uno/ucb/dbinit.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,7 @@ def getDataBaseConnection(ctx, url, user, pwd, new, infos=None):
8282
infos = getDriverInfos(ctx, url, g_drvinfos)
8383
return getDataSourceConnection(ctx, url, user, pwd, new, infos)
8484

85-
def createDataBase(ctx, logger, connection, odb, version):
86-
logger.logprb(INFO, 'DataBase', '_createDataBase', 411, version)
85+
def createDataBase(ctx, connection, odb):
8786
# XXX Creation order are very important here...
8887
tables = connection.getTables()
8988
statement = connection.createStatement()
@@ -102,7 +101,6 @@ def createDataBase(ctx, logger, connection, odb, version):
102101
executeQueries(ctx, statement, _getProcedures(), 'create%s', g_queries)
103102
statement.close()
104103
connection.getParent().DatabaseDocument.storeAsURL(odb, ())
105-
logger.logprb(INFO, 'DataBase', '_createDataBase', 412)
106104

107105
def _createTables(connection, statement, tables):
108106
infos = getConnectionInfos(connection, 'AutoIncrementCreation', 'RowVersionCreation')

uno/lib/uno/ucb/ucp/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,6 @@
4040

4141
from .user import User
4242

43+
from .contenthelper import getDataSourceUrl
4344
from .contenthelper import getExceptionMessage
4445

uno/lib/uno/ucb/ucp/contenthelper.py

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,20 +39,57 @@
3939
from com.sun.star.ucb.ContentAction import DELETED
4040
from com.sun.star.ucb.ContentAction import EXCHANGED
4141

42+
from com.sun.star.ucb import IllegalIdentifierException
4243
from com.sun.star.ucb import InteractiveAugmentedIOException
4344

4445
from com.sun.star.ucb.ConnectionMode import ONLINE
4546
from com.sun.star.ucb.ConnectionMode import OFFLINE
4647

4748
from com.sun.star.sdb import ParametersRequest
4849

50+
from ..dbtool import getConnectionUrl
51+
52+
from ..unotool import checkVersion
4953
from ..unotool import createMessageBox
5054
from ..unotool import createService
55+
from ..unotool import getExtensionVersion
5156
from ..unotool import getParentWindow
5257
from ..unotool import getProperty
5358
from ..unotool import getPropertyValue
5459
from ..unotool import getNamedValueSet
5560

61+
from ..oauth20 import getOAuth2Version
62+
from ..oauth20 import g_extension as g_oauth2ext
63+
from ..oauth20 import g_version as g_oauth2ver
64+
65+
from ..jdbcdriver import g_extension as g_jdbcext
66+
from ..jdbcdriver import g_identifier as g_jdbcid
67+
from ..jdbcdriver import g_version as g_jdbcver
68+
69+
from ..dbconfig import g_folder
70+
71+
from ..configuration import g_extension
72+
from ..configuration import g_scheme
73+
74+
from .configuration import g_ucbseparator
75+
76+
77+
def getDataSourceUrl(ctx, source, logger, cls, mtd):
78+
oauth2 = getOAuth2Version(ctx)
79+
driver = getExtensionVersion(ctx, g_jdbcid)
80+
if oauth2 is None:
81+
msg = getExceptionMessage(ctx, logger, cls, mtd, 221, g_oauth2ext, g_oauth2ext, g_extension)
82+
raise IllegalIdentifierException(msg, source)
83+
if not checkVersion(oauth2, g_oauth2ver):
84+
msg = getExceptionMessage(ctx, logger, cls, mtd, 223, g_oauth2ext, oauth2, g_oauth2ext, g_oauth2ver)
85+
raise IllegalIdentifierException(msg, source)
86+
if driver is None:
87+
msg = getExceptionMessage(ctx, logger, cls, mtd, 221, g_jdbcext, g_jdbcext, g_extension)
88+
raise IllegalIdentifierException(msg, source)
89+
if not checkVersion(driver, g_jdbcver):
90+
msg = getExceptionMessage(ctx, logger, cls, mtd, 223, g_jdbcext, driver, g_jdbcext, g_jdbcver)
91+
raise IllegalIdentifierException(msg, source)
92+
return getConnectionUrl(ctx, g_folder + g_ucbseparator + g_scheme)
5693

5794
def propertyChange(source, name, oldvalue, newvalue):
5895
if name in source.propertiesListener:
@@ -177,7 +214,7 @@ def executeContentCommand(content, name, argument, environment):
177214

178215
def getExceptionMessage(ctx, logger, cls, method, code, extension, *args):
179216
title = logger.resolveString(code, extension)
180-
message = logger.resolveString(code +1, *args)
217+
message = logger.resolveString(code + 1, *args)
181218
logger.logp(SEVERE, cls, method, message)
182219
msgbox = createMessageBox(getParentWindow(ctx), message, title, 'error', 1)
183220
msgbox.execute()

uno/lib/uno/ucb/ucp/contentlib.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@
4242

4343
from .identifier import Identifier
4444

45-
from ..oauth2 import g_oauth2
46-
4745
from ..unolib import PropertySet
4846

4947
from ..unotool import getProperty

uno/lib/uno/ucb/ucp/user.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@
4040

4141
from com.sun.star.ucb import IllegalIdentifierException
4242

43-
from ..oauth2 import getRequest
44-
from ..oauth2 import g_oauth2
43+
from ..oauth20 import getRequest
44+
from ..oauth20 import g_service
4545

4646
from ..dbtool import currentDateTimeInTZ
4747
from ..dbtool import currentUnoDateTime
@@ -99,7 +99,7 @@ def __init__(self, ctx, source, logger, database, provider, sync, name, password
9999
if request is None:
100100
# If we have a Null value here then it means that the user has abandoned
101101
# the OAuth2 Wizard, there is nothing more to do except throw an exception
102-
msg = self._getExceptionMessage(mtd, 501, g_oauth2)
102+
msg = self._getExceptionMessage(mtd, 501, g_service)
103103
raise IllegalIdentifierException(msg, source)
104104
user = self.Provider.getUser(source, request, name)
105105
metadata = database.insertUser(user)
@@ -178,8 +178,10 @@ def getContentByParent(self, authority, itemid, path):
178178

179179
# method called from DataSource.queryContent()
180180
def getContent(self, authority, uri):
181-
isroot = uri.getPathSegmentCount() == 0
182-
return self._getContent(authority, uri.getPath(), isroot)
181+
path = uri.getPath()
182+
print("User.getContent() Count: %s - Path: %s" % (uri.getPathSegmentCount(), uri.getPath()))
183+
isroot = path == g_ucbseparator or uri.getPathSegmentCount() == 0
184+
return self._getContent(authority, path.removesuffix('/'), isroot)
183185

184186
def setLock(self):
185187
if self._lock is not None:

uno/resource/ucb/ContentProvider_en_US.properties

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@
4040
241=Identifiers <{}> - <{}> ... seem to be the same
4141
242=Identifiers <{}> - <{}> ... doesn't seem to be the same
4242
43-
4443
300=DataSource.__init__()
45-
301=DataSource: Loading completed
44+
301=The data source is loading...
45+
302=Data source successfully loaded.
4646
4747
310=DataSource.queryContent()
4848
311=Error: Unable to load content with an incomplete Identifier <{}>
@@ -64,13 +64,14 @@
6464
6565
6666
400=DataBase.__init__()
67-
401=DataBase: Loading completed.
68-
402=DataBase._mergeItem() size <{}> os name <{}>
69-
70-
410=DataBase.createDataBase()
71-
411=Try to create the database with HsqlDB version <{}>.
72-
412=Successful database creation.
73-
413=Unable to create database: installed HsqlDB version <{}> is lower than minimum supported version <{}>.
67+
401=The database is loading...
68+
402=Try to create the database with HsqlDB version <{}>.
69+
403=Database creation successful.
70+
404=Unable to create database: installed HsqlDB version <{}> is lower than minimum supported version <{}>.
71+
405=Database successfully loaded.
72+
73+
450=DataBase._mergeItem()
74+
451=DataBase._mergeItem() size <{}> os name <{}>
7475
7576
7677
500=User.__init__()

0 commit comments

Comments
 (0)