commit-gnue
[Top][All Lists]
Advanced

[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
 
 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]