# -*- coding: iso-8859-1 -*-
#-----------------------------------------------------------------------------
# Modeling Framework: an Object-Relational Bridge for python
#
# Copyright (c) 2001-2004 Sbastien Bigaret <sbigaret@users.sourceforge.net>
# All rights reserved.
#
# This file is part of the Modeling Framework.
#
# This code is distributed under a "3-clause BSD"-style license;
# see the LICENSE file for details.
#-----------------------------------------------------------------------------
"""
FetchSpecification
CVS Information
$Id: FetchSpecification.py 941 2004-09-21 18:03:27Z sbigaret $
"""
__version__='$Revision: 941 $'[11:-2]
from interfaces.FetchSpecification import IFetchSpecification
from ClassDescription import classDescriptionForName
from utils import toBoolean
class FetchSpecification:
"See interfaces.FetchSpecification for documentation"
__implements__ = (IFetchSpecification,)
def __init__(self, entityName, qualifier=None, sortOrderings=(),
distinctFlag=0, deepFlag=0, hints={}):
"""
Initializes the FetchSpecification
:raises ValueError: if no class description can be found for the supplied
entityName. In most cases, if not all, this means either that there is a
typo. in entityName, or that the corresponding model has not been
properly loaded.
"""
if not entityName:
raise ValueError, 'entityName should be supplied'
cd=classDescriptionForName(entityName)
if not cd:
raise ValueError, 'Unable to find a ClassDescription for entityName: %s. Is the corresponding model loaded?'%entityName
self._entityName=entityName
self.setQualifier(qualifier)
self.setSortOrderings(sortOrderings)
self.setUsesDistinct(distinctFlag)
self.setIsDeep(deepFlag)
self._fetchLimit=0
#self._sortOrderings=()
self._refreshesRefreshedObject=0
self._locksObjects=0
self._rawRows=0
def distinctFlag(self):
return self._usesDistinct
def entityName(self):
return self._entityName
def fetchesRawRows(self):
return self._rawRows
def fetchLimit(self):
return self._fetchLimit
def isDeep(self):
return self._isDeep
def locksObjects(self):
return self._locksObjects
def qualifier(self):
return self._qualifier
def refreshesRefetchedObjects(self):
return self._refreshesRefreshedObject
def setEntityName(self, entityName):
self._entityName=entityName
def setFetchesRawRows(self, aBool):
self._rawRows=not not aBool
def setFetchLimit(self, limit):
assert(limit>=0)
self._fetchLimit=limit
def setIsDeep(self, deepFlag):
self._isDeep=toBoolean(deepFlag)
def setLocksObject(self, lockFlag):
if lockFlag:
self._locksObjects=1
else:
self._locksObjects=0
def setQualifier(self, aQualifier):
if aQualifier is not None:
aQualifier.validateKeysWithRootClassDescription(classDescriptionForName(self._entityName))
self._qualifier=aQualifier
def setRefreshesRefetchedObjects(self, aBool):
self._refreshesRefetchedObjects=toBoolean(aBool)
def setSortOrderings(self, sortOrderings):
self._sortOrderings=sortOrderings
def setUsesDistinct(self, distinctFlag):
self._usesDistinct=toBoolean(distinctFlag)
def sortOrderings(self):
return self._sortOrderings
def usesDistinct(self):
return self._usesDistinct
|