[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnue] r7466 - in trunk/gnue-common/src/datasources: . drivers/Base
From: |
reinhard |
Subject: |
[gnue] r7466 - in trunk/gnue-common/src/datasources: . drivers/Base |
Date: |
Fri, 22 Apr 2005 17:56:40 -0500 (CDT) |
Author: reinhard
Date: 2005-04-22 17:56:39 -0500 (Fri, 22 Apr 2005)
New Revision: 7466
Modified:
trunk/gnue-common/src/datasources/GDataSource.py
trunk/gnue-common/src/datasources/drivers/Base/DataObject.py
Log:
Moved createResultSet implementation from DataObject to GDataSource.
Modified: trunk/gnue-common/src/datasources/GDataSource.py
===================================================================
--- trunk/gnue-common/src/datasources/GDataSource.py 2005-04-22 22:56:00 UTC
(rev 7465)
+++ trunk/gnue-common/src/datasources/GDataSource.py 2005-04-22 22:56:39 UTC
(rev 7466)
@@ -55,6 +55,7 @@
self.type = "object"
self.connection = None # Connection name
+ self.table = None # Table name
self._connections = None
self._connection = None # GConnection object
self._dataObject = None
@@ -107,7 +108,7 @@
# ---------------------------------------------------------------------------
def __trigger_createResultSet (self, conditions = {}, readOnly = False):
- self.createResultSet (conditions, readOnly)
+ return self.createResultSet (conditions, readOnly)
# ---------------------------------------------------------------------------
@@ -162,17 +163,6 @@
# ---------------------------------------------------------------------------
- # Hack to hide the DataObject behind the DataSource
- # ---------------------------------------------------------------------------
-
- def __getattr__(self, attr):
- if self._dataObject and attr[1] != '_' and hasattr(self._dataObject,attr):
- return getattr(self._dataObject,attr)
- else:
- raise AttributeError, attr
-
-
- # ---------------------------------------------------------------------------
# Initialize object after parsing from XML
# ---------------------------------------------------------------------------
@@ -353,17 +343,6 @@
u_("Datasource %s is not sql-based, but has a <sql> definition.") \
% self.name
-
- # Copy all attributes from XML to the dataObject
- tagAttributes = getXMLelements()['datasource']['Attributes']
- for attribute in tagAttributes.keys():
- if self.__dict__.has_key(attribute):
- dataObject.__dict__[attribute] = self.__dict__[attribute]
- else:
- try:
- dataObject.__dict__[attribute] = tagAttributes[attribute]['Default']
- except KeyError:
- pass
self._dataObject = dataObject
@@ -474,20 +453,34 @@
# ---------------------------------------------------------------------------
- # Create a result set
+ # Create and activate a new result set
# ---------------------------------------------------------------------------
def createResultSet (self, conditions = {}, readOnly = False,
masterRecord = None):
+ """
+ Execute a query on the backend and create a result set.
- resultSet = self._dataObject.createResultSet (conditions,
- readOnly = readOnly, masterRecord = masterRecord)
+ The result set generated by the query will become the active result set of
+ this datasource.
+
+ @param conditions: Conditions to be applied additionally to the static
+ condition of the datasource (defined with setCondition or with
+ <conditions> XML tags).
+ @param readOnly: True if the result set should be read only, which means
+ any attempt to change the result set will raise an exception.
+ @param masterRecord: Master RecordSet object for the ResultSet to be
+ generated if the datasource is a detail datasource.
+ @return: The new active ResultSet object.
+ """
+
+ resultSet = self.__createResultSet (conditions, readOnly, masterRecord)
self._activateResultSet (resultSet)
return resultSet
# ---------------------------------------------------------------------------
- # Requery the result set
+ # Requery an existing result set
# ---------------------------------------------------------------------------
def _requeryResultSet (self, masterRecord, resultSet):
@@ -510,8 +503,7 @@
merged.
"""
- newResultSet = self._dataObject.createResultSet (
- masterRecord = masterRecord)
+ newResultSet = self.__createResultSet (masterRecord = masterRecord)
resultSet.merge (newResultSet)
newResultSet.close ()
@@ -522,18 +514,85 @@
# ---------------------------------------------------------------------------
- # Create an empty result set
+ # Create a result set
# ---------------------------------------------------------------------------
- def createEmptyResultSet (self, readOnly = False, masterRecord = None):
+ def __createResultSet (self, conditions = {}, readOnly = False,
+ masterRecord = None):
- resultSet = self._dataObject.createEmptyResultSet (readOnly,
- masterRecord = masterRecord)
+ cond = GConditions.combineConditions (conditions, self._staticCondition)
+
+ # Add condition from master record
+ mastercond = {}
+ for (masterfield, detailfield) in zip (
+ self._masterPkFields, self._masterFkFields):
+ mastercond [detailfield] = masterRecord.getField (masterfield)
+
+ cond = GConditions.combineConditions (cond, mastercond)
+
+ resultset = self.__newResultSet (readOnly, masterRecord)
+
+ if self.type == 'object':
+ resultset.query ('object',
+ table = self.table,
+ fieldnames = self._fieldReferences.keys (),
+ condition = cond,
+ sortorder = self.sorting and self.sorting or [],
+ distinct = self.distinct)
+
+ elif self.type == 'static':
+ resultset.query ('static', data = self._staticSet.data)
+
+ elif self.type == 'sql':
+ resultset.query ('sql', sql = self._rawSQL.getChildrenAsContent ())
+
+ return resultset
+
+
+ # ---------------------------------------------------------------------------
+ # Create and activate an empty result set
+ # ---------------------------------------------------------------------------
+
+ def createEmptyResultSet (self, masterRecord = None):
+ """
+ Create an empty result set.
+
+ The result set generated will become the active result set of this
+ datasource.
+
+ @param masterRecord: Master RecordSet object for the ResultSet to be
+ generated if the datasource is a detail datasource (this will become
+ important once new records are inserted in this result set).
+ @return: The new active (empty) ResultSet object.
+ """
+
+ resultSet = self.__newResultSet (False, masterRecord)
self._activateResultSet (resultSet)
return resultSet
# ---------------------------------------------------------------------------
+ # Create a new ResultSet object instance
+ # ---------------------------------------------------------------------------
+
+ def __newResultSet (self, readOnly, masterRecord):
+
+ return self._dataObject._resultSetClass (
+ defaultData = self._defaultData,
+ connection = self._connection,
+ tablename = self.table,
+ rowidField = self._rowidField,
+ primarykeyFields = self._primarykeyFields,
+ boundFields = self._fieldReferences.keys (),
+ readonly = readOnly,
+ masterRecord = masterRecord,
+ masterPkFields = self._masterPkFields,
+ masterFkFields = self._masterFkFields,
+ detailDataSources = self._detailDataSources,
+ dataSource = self)
+
+
+ # ---------------------------------------------------------------------------
# Activate a result set
# ---------------------------------------------------------------------------
Modified: trunk/gnue-common/src/datasources/drivers/Base/DataObject.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/Base/DataObject.py
2005-04-22 22:56:00 UTC (rev 7465)
+++ trunk/gnue-common/src/datasources/drivers/Base/DataObject.py
2005-04-22 22:56:39 UTC (rev 7466)
@@ -23,75 +23,11 @@
__all__ = ['DataObject']
-from gnue.common.apps import GDebug
-from gnue.common.datasources import GConditions, Exceptions
-import string
-
from ResultSet import ResultSet
-###########################################################
-#
-#
-#
-###########################################################
class DataObject:
_resultSetClass = ResultSet
def __init__(self, connection, dataSource):
-
self._connection = connection
- self.__dataSource = dataSource
-
-
- def createResultSet (self, conditions ={}, readOnly=0, masterRecord=None):
-
- cond = GConditions.combineConditions (conditions,
self.__dataSource._staticCondition)
-
- # Add condition from master record
- mastercond = {}
- for (masterfield, detailfield) in zip (
- self.__dataSource._masterPkFields, self.__dataSource._masterFkFields):
- mastercond [detailfield] = masterRecord.getField (masterfield)
-
- cond = GConditions.combineConditions (cond, mastercond)
-
- resultset = self.__createResultSet (readOnly, masterRecord)
-
- if self.__dataSource.type == 'object':
- resultset.query ('object',
- table = self.__dataSource.table,
- fieldnames = self.__dataSource._fieldReferences.keys (),
- condition = cond,
- sortorder = self.__dataSource.sorting and
self.__dataSource.sorting or [],
- distinct = self.__dataSource.distinct)
-
- elif self.__dataSource.type == 'static':
- resultset.query ('static', data = self.__dataSource._staticSet.data)
-
- elif self.__dataSource.type == 'sql':
- resultset.query ('sql', sql =
self.__dataSource._rawSQL.getChildrenAsContent ())
-
- return resultset
-
-
- def createEmptyResultSet(self, readOnly=0, masterRecord=None):
-
- return self.__createResultSet (readOnly, masterRecord)
-
-
- def __createResultSet (self, readOnly = False, masterRecord = None):
-
- return self._resultSetClass (
- defaultData = self.__dataSource._defaultData,
- connection = self.__dataSource._connection,
- tablename = self.__dataSource.table,
- rowidField = self.__dataSource._rowidField,
- primarykeyFields = self.__dataSource._primarykeyFields,
- boundFields = self.__dataSource._fieldReferences.keys (),
- readonly = readOnly,
- masterRecord = masterRecord,
- masterPkFields = self.__dataSource._masterPkFields,
- masterFkFields = self.__dataSource._masterFkFields,
- detailDataSources = self.__dataSource._detailDataSources,
- dataSource = self.__dataSource)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue] r7466 - in trunk/gnue-common/src/datasources: . drivers/Base,
reinhard <=