commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnue] r7376 - trunk/gnue-common/src/datasources/drivers/Base


From: reinhard
Subject: [gnue] r7376 - trunk/gnue-common/src/datasources/drivers/Base
Date: Fri, 15 Apr 2005 08:57:20 -0500 (CDT)

Author: reinhard
Date: 2005-04-15 08:57:20 -0500 (Fri, 15 Apr 2005)
New Revision: 7376

Modified:
   trunk/gnue-common/src/datasources/drivers/Base/DataObject.py
   trunk/gnue-common/src/datasources/drivers/Base/RecordSet.py
   trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py
Log:
Added some private variables to ResultSet class.


Modified: trunk/gnue-common/src/datasources/drivers/Base/DataObject.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/Base/DataObject.py        
2005-04-15 13:19:46 UTC (rev 7375)
+++ trunk/gnue-common/src/datasources/drivers/Base/DataObject.py        
2005-04-15 13:57:20 UTC (rev 7376)
@@ -83,10 +83,7 @@
 
     cond = GConditions.combineConditions (cond, mastercond)
 
-    resultset = self._resultSetClass (dataObject      = self,
-                                      defaultData     = self._defaultData,
-                                      readonly        = readOnly,
-                                      masterRecordSet = masterRecordSet)
+    resultset =  self.__createResultSet (readOnly, masterRecordSet)
 
     if self._dataSource.type == 'object':
       resultset.query ('object',
@@ -107,12 +104,24 @@
 
   def createEmptyResultSet(self, readOnly=0, masterRecordSet=None):
 
-    return self._resultSetClass (dataObject      = self,
-                                 defaultData     = self._defaultData,
-                                 readonly        = readOnly,
-                                 masterRecordSet = masterRecordSet)
+    return self.__createResultSet (readOnly, masterRecordSet)
 
 
+  def __createResultSet (self, readOnly = False, masterRecord = None):
+
+    return self._resultSetClass (
+        dataObject       = self,
+        defaultData      = self._dataSource._defaultData,
+        connection       = self._dataSource._connection,
+        rowidField       = self._dataSource._rowidField,
+        primarykeyFields = self._dataSource._primarykeyFields,
+        tablename        = self._dataSource.table,
+        boundFields      = self._dataSource._fieldReferences.keys (),
+        readonly         = readOnly,
+        masterRecord     = masterRecord,
+        dataSource       = self._dataSource)
+
+
   # Add a detail data object.  This dataobject will create a new resultset
   # everytime this dataobject changes (new record, etc).  The optional
   # handler will be called after the detail dataobject is notified.  The

Modified: trunk/gnue-common/src/datasources/drivers/Base/RecordSet.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/Base/RecordSet.py 2005-04-15 
13:19:46 UTC (rev 7375)
+++ trunk/gnue-common/src/datasources/drivers/Base/RecordSet.py 2005-04-15 
13:57:20 UTC (rev 7376)
@@ -22,7 +22,6 @@
 # $Id$
 
 import string
-import weakref
 
 from gnue.common.apps import errors
 from gnue.common.datasources import Exceptions
@@ -39,18 +38,18 @@
   # ---------------------------------------------------------------------------
 
   def __init__ (self,
-      initialData = {},
-      defaultData = {},
-      connection = None,
-      tablename = '',
-      boundFields = [],
-      readonly = False,
-      masterRecord = None,
-      masterKeyFields = [],
-      masterLinkFields = [],
-      rowidField = None,
+      initialData      = {},
+      defaultData      = {},
+      connection       = None,
+      tablename        = '',
+      rowidField       = None,
       primarykeyFields = [],
-      dataSource = None):
+      boundFields      = [],
+      readonly         = False,
+      masterRecord     = None,
+      masterKeyFields  = [],
+      masterLinkFields = [],
+      dataSource       = None):
     """
     Create a new RecordSet instance.
 
@@ -61,6 +60,10 @@
     @param connection: GConnection object the RecordSet object can use to post
       changes.
     @param tablename: Table name.
+    @param rowidField: Field name of the field containing a unique row id
+      generated by the backend, if available.
+    @param primaryKeyFields: List of field names that make up a unique key, if
+      available.
     @param boundFields: List of fields to be included when posting changes to
       the backend. All fields not in this list are considered unbound fields
       and are not persistent.
@@ -72,28 +75,21 @@
       masterLinkFields in this record.
     @param masterLinkFields: Fields in this record matching the masterKeyFields
       of the master record.
-    @param rowidField: Field name of the field containing a unique row id
-      generated by the backend, if available.
-    @param primaryKeyFields: List of field names that make up a unique key, if
-      available.
-    @param dataSource: GDataSource instance to notify of data events.
+    @param dataSource: weak reference to a GDataSource instance to notify of
+      data events.
     """
 
     self.__connection       = connection
     self.__tablename        = tablename
+    self.__rowidField       = rowidField
+    self.__primarykeyFields = primarykeyFields
     self.__boundFields      = boundFields
     self.__readonly         = readonly
     self.__masterRecord     = masterRecord
     self.__masterKeyFields  = masterKeyFields
     self.__masterLinkFields = masterLinkFields
-    self.__rowidField       = rowidField
-    self.__primarykeyFields = primarykeyFields
+    self.__dataSource       = dataSource        # this is already a weakref!
 
-    if dataSource is not None:
-      self.__dataSource     = weakref.proxy (dataSource)
-    else:
-      self.__dataSource     = None
-
     # Record status
     # New records:      'empty' -(setField)-> 'inserted' -(delete)-> 'void'
     # Existing records: 'clean' -(setField)-> 'modified' -(delete)-> 'deleted'

Modified: trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py 2005-04-15 
13:19:46 UTC (rev 7375)
+++ trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py 2005-04-15 
13:57:20 UTC (rev 7376)
@@ -24,6 +24,7 @@
 __all__ = ['ResultSet']
 
 import string
+import weakref
 
 from gnue.common.datasources import Exceptions
 
@@ -39,24 +40,37 @@
   # Constructor
   # ---------------------------------------------------------------------------
 
-  def __init__ (self, dataObject, defaultData = {}, readonly = False,
-                masterRecordSet = None):
-     self._dataObject = dataObject
-     self.__defaultData = defaultData
-     self.__readonly = readonly
-     self._masterRecordSet = masterRecordSet
+  def __init__ (self, dataObject,
+      defaultData      = {},
+      connection       = None,
+      tablename        = None,
+      rowidField       = None,
+      primarykeyFields = [],
+      boundFields      = [],
+      readonly         = False,
+      masterRecord     = None,
+      dataSource       = None):
+
+     self._dataObject        = dataObject
+     self.__defaultData      = defaultData
+     self.__connection       = connection
+     self.__tablename        = tablename
+     self.__rowidField       = rowidField
+     self.__primarykeyFields = primarykeyFields
+     self.__boundFields      = boundFields
+     self.__readonly         = readonly
+     self.__masterRecord     = masterRecord
+
+     if dataSource is not None:
+       self.__dataSource = weakref.proxy (dataSource)
+     else:
+       self.__dataSource = None
+
      self._cachedRecords = []
      self._currentRecord = -1
      self._recordCount = 0
      self._postingRecord = None
 
-     if self._dataObject._dataSource:
-       self.__rowidField       = self._dataObject._dataSource._rowidField
-       self.__primarykeyFields = self._dataObject._dataSource._primarykeyFields
-     else:
-       self.__rowidField       = None
-       self.__primarykeyFields = []
-
      # Objects to get informed about record navigation events
      self.__listeners = []
 
@@ -85,10 +99,9 @@
     if not hasattr (self, queryfunc):
       raise Exceptions.ObjectTypeNotAvailableError, type
 
-    getattr (self, queryfunc) (self._dataObject._dataSource._connection,
-                               **kwargs)
+    getattr (self, queryfunc) (self.__connection, **kwargs)
 
-    self.__generator = self._fetch (self._dataObject.cache)
+    self.__generator = self._fetch (self.__dataSource.cache)
 
     # (TODO: could be delayed to first call of getRecordCount)
     self._recordCount = self._count ()
@@ -154,16 +167,16 @@
     record = RecordSet (
         initialData      = initialData,
         defaultData      = __defaultData,
-        connection       = self._dataObject._dataSource._connection,
-        tablename        = self._dataObject.table,
-        boundFields      = self._dataObject._fieldReferences.keys (),
+        connection       = self.__connection,
+        tablename        = self.__tablename,
+        rowidField       = self.__rowidField,
+        primarykeyFields = self.__primarykeyFields,
+        boundFields      = self.__boundFields,
         readonly         = self.__readonly,
-        masterRecord     = self._masterRecordSet,
+        masterRecord     = self.__masterRecord,
         masterKeyFields  = self._dataObject._masterfields,
         masterLinkFields = self._dataObject._detailfields,
-        rowidField       = self.__rowidField,
-        primarykeyFields = self.__primarykeyFields,
-        dataSource       = self._dataObject._dataSource)
+        dataSource       = self.__dataSource)
 
     if position is None:
       self._cachedRecords.append (record)
@@ -188,7 +201,10 @@
       return False
 
     record = self.__createRecord (initialData = row)
-    self._dataObject._dataSource._onRecordLoaded (record)
+
+    if self.__dataSource is not None:
+      self.__dataSource._onRecordLoaded (record)
+
     return True
 
 
@@ -495,7 +511,7 @@
       postingRecordset = self._postingRecord
 
       if (self._postingRecord.isEmpty () or self._postingRecord.isDeleted ()) \
-          and self._dataObject._dataSource._connection is not None:
+          and self.__connection is not None:
         # Adjust the current record if a preceding record or the current record
         # is deleted
         self.__removeRecord (recordPosition)
@@ -563,10 +579,8 @@
     while self.__cacheNextRecord ():
       pass
 
-    boundFields = self._dataObject._fieldReferences.keys ()
+    newData = otherResultSet.getDictArray (keyFields, self.__boundFields)
 
-    newData = otherResultSet.getDictArray (keyFields, boundFields)
-
     for (index, record) in enumerate (self._cachedRecords [:]):
       if record.isEmpty ():
         # keep empty record in old ResultSet
@@ -600,8 +614,10 @@
     for row in l:
       if row:
         record = self.__createRecord (initialData = row)
-        self._dataObject._dataSource._onRecordLoaded (record)
 
+        if self.__dataSource is not None:
+          self.__dataSource._onRecordLoaded (record)
+
     # Move to record 0 if all preceding records were deleted
     # (or set to -1 if all records were deleted)
     if self._currentRecord < 0:
@@ -615,7 +631,8 @@
 
     # Finally, tell everyone who wants to know that we have become a "new
     # ResultSet" (i.e. the complete data should be redisplayed).
-    self._dataObject._dataSource.notifyResultSetListeners ()
+    if self.__dataSource is not None:
+      self.__dataSource.notifyResultSetListeners ()
 
 
   # ---------------------------------------------------------------------------
@@ -632,10 +649,9 @@
 
     self.__generator = None
 
-    if self._dataObject._dataSource and \
-        self._dataObject._dataSource._currentResultSet == self:
-      self._dataObject._dataSource.close ()
-      self._dataObject = None
+    if self.__dataSource and self.__dataSource._currentResultSet == self:
+      self.__dataSource.close ()
+    self._dataObject = None
 
     self.__listeners    = []
 
@@ -727,9 +743,8 @@
   # ---------------------------------------------------------------------------
 
   def __repr__ (self):
-    do = self._dataObject
-    if hasattr (do, 'table'):
-      return "<ResultSet for %s>" % do.table
+    if self.__tablename:
+      return "<ResultSet for %s>" % self.__tablename
     else:
       return "<Unbound/Static ResultSet>"
 





reply via email to

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