Skip to content

Commit eea0b87

Browse files
authored
Merge pull request #405 from will-moore/fileset_lazy_loading
FilesetWrapper lazy loads Images and UsedFiles
2 parents 65bdd13 + 5ad53eb commit eea0b87

File tree

1 file changed

+25
-16
lines changed

1 file changed

+25
-16
lines changed

src/omero/gateway/__init__.py

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7546,32 +7546,41 @@ class _FilesetWrapper (BlitzObjectWrapper):
75467546

75477547
OMERO_CLASS = 'Fileset'
75487548

7549-
@classmethod
7550-
def _getQueryString(cls, opts=None):
7551-
"""
7552-
Used for building queries in generic methods such as
7553-
getObjects("Fileset").
7554-
Returns a tuple of (query, clauses, params).
7555-
7556-
:param opts: Dictionary of optional parameters.
7557-
NB: No options supported for this class.
7558-
:return: Tuple of string, list, ParametersI
7559-
"""
7560-
query = "select obj from Fileset obj "\
7561-
"left outer join fetch obj.images as image "\
7562-
"left outer join fetch obj.usedFiles as usedFile " \
7563-
"join fetch usedFile.originalFile"
7564-
return query, [], omero.sys.ParametersI()
7549+
def _loadImages(self):
7550+
""" Load the Images linked to this Fileset """
7551+
params = omero.sys.ParametersI()
7552+
params.addId(self.getId())
7553+
query_svc = self._conn.getQueryService()
7554+
query = "select image from Image as image where image.fileset.id=:id"
7555+
self._obj._imagesSeq = query_svc.findAllByQuery(query, params,
7556+
self._conn.SERVICE_OPTS)
7557+
self._obj._imagesLoaded = True
75657558

75667559
def copyImages(self):
75677560
""" Returns a list of :class:`ImageWrapper` linked to this Fileset """
7561+
if not self._obj._imagesLoaded:
7562+
self._loadImages()
7563+
75687564
return [ImageWrapper(self._conn, i) for i in self._obj.copyImages()]
75697565

7566+
def _loadUsedFiles(self):
7567+
""" Load the UsedFiles linked to this Fileset """
7568+
params = omero.sys.ParametersI()
7569+
params.addId(self.getId())
7570+
query_svc = self._conn.getQueryService()
7571+
query = "select fse from FilesetEntry as fse join fetch fse.originalFile where fse.fileset.id=:id"
7572+
self._obj._usedFilesSeq = query_svc.findAllByQuery(query, params,
7573+
self._conn.SERVICE_OPTS)
7574+
self._obj._usedFilesLoaded = True
7575+
75707576
def listFiles(self):
75717577
"""
75727578
Returns a list of :class:`OriginalFileWrapper` linked to this Fileset
75737579
via Fileset Entries
75747580
"""
7581+
if not self._obj._usedFilesLoaded:
7582+
self._loadUsedFiles()
7583+
75757584
return [OriginalFileWrapper(self._conn, f.originalFile)
75767585
for f in self._obj.copyUsedFiles()]
75777586

0 commit comments

Comments
 (0)