[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnue] r7401 - in trunk/gnue-common/src/datasources: . drivers/Base
From: |
reinhard |
Subject: |
[gnue] r7401 - in trunk/gnue-common/src/datasources: . drivers/Base |
Date: |
Mon, 18 Apr 2005 13:14:34 -0500 (CDT) |
Author: reinhard
Date: 2005-04-18 13:14:33 -0500 (Mon, 18 Apr 2005)
New Revision: 7401
Modified:
trunk/gnue-common/src/datasources/GDataSource.py
trunk/gnue-common/src/datasources/drivers/Base/DataObject.py
trunk/gnue-common/src/datasources/drivers/Base/RecordSet.py
Log:
Moved requeryResultSet functionality into GDataObject, changed
RecordSet._cachedDetailResultSets dictionary to hold datasources as keys
instead of dataobjects.
Modified: trunk/gnue-common/src/datasources/GDataSource.py
===================================================================
--- trunk/gnue-common/src/datasources/GDataSource.py 2005-04-18 17:16:29 UTC
(rev 7400)
+++ trunk/gnue-common/src/datasources/GDataSource.py 2005-04-18 18:14:33 UTC
(rev 7401)
@@ -437,6 +437,14 @@
# ---------------------------------------------------------------------------
+ # Add a detail dataobject for this (master) datasource
+ # ---------------------------------------------------------------------------
+
+ def addDetailDataObject (self, dataObject, handler=None):
+ self._dataObject.addDetailDataObject(dataObject, handler)
+
+
+ # ---------------------------------------------------------------------------
# Register a listener for changes of the ResultSet
# ---------------------------------------------------------------------------
@@ -470,14 +478,6 @@
# ---------------------------------------------------------------------------
- # Add a detail dataobject for this (master) datasource
- # ---------------------------------------------------------------------------
-
- def addDetailDataObject (self, dataObject, handler=None):
- self._dataObject.addDetailDataObject(dataObject, handler)
-
-
- # ---------------------------------------------------------------------------
# Create a result set
# ---------------------------------------------------------------------------
@@ -488,6 +488,36 @@
# ---------------------------------------------------------------------------
+ # Requery the result set
+ # ---------------------------------------------------------------------------
+
+ def _requeryResultSet (self, masterRecord, resultSet):
+ """
+ Requery data for an existing result set from the backend.
+
+ This function queries the data for an existing result set again from the
+ backend and merges everything that has changed meanwhile into the existing
+ result set.
+
+ The RecordSet object uses this function to update all it's detail result
+ sets after its changes have been posted to the database.
+
+ The resultSet is passed as a parameter and need not be the current result
+ set of the datasource.
+
+ @param masterRecordSet: The master record for which the detail should be
+ requeried.
+ @param resultSet: The existing result set into which the changes should be
+ merged.
+ """
+
+ newResultSet = self._dataObject.createResultSet (
+ masterRecordSet = masterRecord)
+ resultSet.merge (newResultSet)
+ newResultSet.close ()
+
+
+ # ---------------------------------------------------------------------------
# Create an empty result set
# ---------------------------------------------------------------------------
Modified: trunk/gnue-common/src/datasources/drivers/Base/DataObject.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/Base/DataObject.py
2005-04-18 17:16:29 UTC (rev 7400)
+++ trunk/gnue-common/src/datasources/drivers/Base/DataObject.py
2005-04-18 18:14:33 UTC (rev 7401)
@@ -166,9 +166,9 @@
# If a detail result set has already been created for a particular
# master record set, then just return/reuse this old set (after all,
# it may contain uncommitted changes)
- if (not master.current._cachedDetailResultSets.has_key(self)) or \
+ if (not master.current._cachedDetailResultSets.has_key(self.__dataSource))
or \
( not int(gConfig('CacheDetailRecords')) and \
- not master.current._cachedDetailResultSets[self].isPending() ):
+ not
master.current._cachedDetailResultSets[self.__dataSource].isPending() ):
# If all are set to None then this will prevent the details
# from being queried. This happens are startup with blank master
# datasources.
@@ -183,6 +183,6 @@
else:
resultset = self.createEmptyResultSet (masterRecordSet =
master.current)
- master.current.addDetailResultSet(resultset)
+ master.current.addDetailResultSet(self.__dataSource, resultset)
- return master.current._cachedDetailResultSets[self]
+ return master.current._cachedDetailResultSets[self.__dataSource]
Modified: trunk/gnue-common/src/datasources/drivers/Base/RecordSet.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/Base/RecordSet.py 2005-04-18
17:16:29 UTC (rev 7400)
+++ trunk/gnue-common/src/datasources/drivers/Base/RecordSet.py 2005-04-18
18:14:33 UTC (rev 7401)
@@ -469,10 +469,8 @@
self.__requery (self.__boundFields)
# Now, requery detail resultsets
- for (dataObject, resultSet) in self._cachedDetailResultSets.items ():
- newResultSet = dataObject.createResultSet (masterRecordSet = self)
- resultSet.merge (newResultSet)
- newResultSet.close ()
+ for (dataSource, resultSet) in self._cachedDetailResultSets.items ():
+ dataSource._requeryResultSet (self, resultSet)
# ---------------------------------------------------------------------------
@@ -503,14 +501,14 @@
# Sets the ResultSet associated with this master record
# ---------------------------------------------------------------------------
- def addDetailResultSet(self, resultSet):
+ def addDetailResultSet(self, dataSource, resultSet):
"""
Add a result set to the list of detail result sets for this record.
@param resultSet: the ResultSet object to add
"""
- self._cachedDetailResultSets [resultSet._dataObject] = resultSet
- for field in resultSet._dataObject._masterfields:
+ self._cachedDetailResultSets [dataSource] = resultSet
+ for field in dataSource._dataObject._masterfields:
self.__detailLinkFlags [field] = True
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue] r7401 - in trunk/gnue-common/src/datasources: . drivers/Base,
reinhard <=