commit-gnue
[Top][All Lists]
Advanced

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

gnue/common/src GDataObjects.py


From: James Thompson
Subject: gnue/common/src GDataObjects.py
Date: Fri, 12 Apr 2002 00:46:05 -0400

CVSROOT:        /cvsroot/gnue
Module name:    gnue
Changes by:     James Thompson <address@hidden> 02/04/12 00:46:03

Modified files:
        common/src     : GDataObjects.py 

Log message:
        Fixed post() skipping the record following a deleted record
        Performance updates

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/common/src/GDataObjects.py.diff?tr1=1.45&tr2=1.46&r1=text&r2=text

Patches:
Index: gnue/common/src/GDataObjects.py
diff -c gnue/common/src/GDataObjects.py:1.45 
gnue/common/src/GDataObjects.py:1.46
*** gnue/common/src/GDataObjects.py:1.45        Thu Apr  4 18:02:31 2002
--- gnue/common/src/GDataObjects.py     Fri Apr 12 00:46:03 2002
***************
*** 419,431 ****
  
    # Returns 1=DataObject has uncommitted changes
    def isPending(self):
-     isPending = 0
      for rec in (self._cachedRecords):
!       isPending = isPending or rec.isPending()
!       if isPending:
!         break
!     return isPending
! 
  
  
    # Returns 1=DataObject has uncommitted changes
--- 419,428 ----
  
    # Returns 1=DataObject has uncommitted changes
    def isPending(self):
      for rec in (self._cachedRecords):
!       if rec.isPending():
!         return 1
!     return 0
  
  
    # Returns 1=DataObject has uncommitted changes
***************
*** 439,471 ****
      # post our changes
      self._update_cursor = self._dataObject._dataConnection.cursor()
  
!     i = 0
!     for record in self._cachedRecords:
!       # Flip the flag for 'default' values to true so that hidden
!       # default fields are included in insert statements
!       for field in self._dataObject._defaultValues.keys():
!         if record.isPending():
!           record.setField(field, record.getField(field))
! 
!       for field in foreign_keys.keys():
!         record._fields[field] = foreign_keys[field]
!         # Some DBs will throw an exception if you update a Primary Key
!         # (even if you are updating to the same value)
!         if record._insertFlag:
!           record._modifiedFlags[field] = 1
! 
        delete = record._emptyFlag or record._deleteFlag
!       record.post()
  
!       # Adjust the current record if a preceding record is deleted
!       if delete and i <= self._currentRecord:
!         self._currentRecord -= 1
  
!       if delete:
!         self._cachedRecords.pop(i)
!         self._recordCount -= 1
        else:
!         i += 1
  
      # Move to record 0 if all preceding records were deleted
      # (or set to -1 if all records were deleted)
--- 436,470 ----
      # post our changes
      self._update_cursor = self._dataObject._dataConnection.cursor()
  
!     recordPosition = 0
!     while recordPosition < len(self._cachedRecords):
!       record = self._cachedRecords[recordPosition]
!       
        delete = record._emptyFlag or record._deleteFlag
!       if not delete:
!         # Flip the flag for 'default' values to true so that hidden
!         # default fields are included in insert statements
!         if record.isPending():
!           for field in self._dataObject._defaultValues.keys():
!             record._modifiedFlags[field] = 1
  
!         for field in foreign_keys.keys():
!           record._fields[field] = foreign_keys[field]
!           # Some DBs will throw an exception if you update a Primary Key
!           # (even if you are updating to the same value)
!           if record._insertFlag:
!             record._modifiedFlags[field] = 1
  
!         recordPosition += 1
        else:
!         # Adjust the current record if a preceding record
!         # or the current record is deleted
!         if recordPosition <= self._currentRecord:
!           self._currentRecord -= 1
!         self._cachedRecords.pop(recordPosition)
!         self._recordCount -= 1
! 
!       record.post()
  
      # Move to record 0 if all preceding records were deleted
      # (or set to -1 if all records were deleted)
***************
*** 474,498 ****
          self._currentRecord = 0
        else:
          self._currentRecord = -1
!     if self._currentRecord >= self._recordCount:
!       self._currentRecord = self._recordCount - 1
! 
! 
  
    def notifyDetailObjects(self):
      GDebug.printMesg(5,'Master record changed; Notifying Detail Objects')
      for detail in self._dataObject._detailObjects:
!        rs = detail[0]._masterRecordChanged(self)
!        if detail[1]:
!          detail[1].masterResultSetChanged(self, rs)
  
  
    # Returns 1=Field is bound to a database field
    def isFieldBound(self, fieldName):
!     try:
!       return self._dataObject._fieldReferences.has_key(fieldName)
!     except:
!       GDebug.printMesg(0,'I should never run')
        return 
self._dataObject._fieldReferences.has_key(string.lower(fieldName))
  
  
--- 473,497 ----
          self._currentRecord = 0
        else:
          self._currentRecord = -1
! # TODO: I don't think we need this anymore
! #    if self._currentRecord >= self._recordCount:
! #      self._currentRecord = self._recordCount - 1
  
    def notifyDetailObjects(self):
      GDebug.printMesg(5,'Master record changed; Notifying Detail Objects')
      for detail in self._dataObject._detailObjects:
!       if detail[1]:
!         detail[1].masterResultSetChanged(self,
!                                          detail[0]._masterRecordChanged(self))
  
  
    # Returns 1=Field is bound to a database field
    def isFieldBound(self, fieldName):
!     if self._dataObject._fieldReferences.has_key(fieldName):
!       return 1
!     else:
!       #TODO: the string.lower() line should never be called but is left
!       #TODO: here untill the cod
        return 
self._dataObject._fieldReferences.has_key(string.lower(fieldName))
  
  
***************
*** 535,548 ****
        self._insertFlag = 0
        self._emptyFlag = 0
        self._fields = {}
!       for key in initialData.keys():
!        self._fields[key] = initialData[key]
      else:
        self._insertFlag = 1
        self._emptyFlag = 1
        self._fields = {}
!       for key in defaultData.keys():
!        self._fields[key] = defaultData[key]
  
  
    # Returns 1=Record has uncommitted changes
--- 534,545 ----
        self._insertFlag = 0
        self._emptyFlag = 0
        self._fields = {}
!       self._fields.update(initialData)
      else:
        self._insertFlag = 1
        self._emptyFlag = 1
        self._fields = {}
!       self._fields.update(defaultData)
  
  
    # Returns 1=Record has uncommitted changes
***************
*** 614,624 ****
          self._emptyFlag = 0
          if self._parent.isFieldBound(field):
            self._updateFlag = 1
!           if self._modifiedFlags.has_key(fn):
!             flag = self._modifiedFlags[fn] + 1
!           else:
!             flag = 1
!           self._modifiedFlags[fn] = flag
  
            try:
              self._parent._dataObject._dataSource._onModification(self)
--- 611,617 ----
          self._emptyFlag = 0
          if self._parent.isFieldBound(field):
            self._updateFlag = 1
!           self._modifiedFlags[fn] = 1
  
            try:
              self._parent._dataObject._dataSource._onModification(self)
***************
*** 628,637 ****
  
    # Returns 1=Field has been modified
    def isFieldModified(self, fieldName):
!     try:
!       return self._modifiedFlags.has_key (fieldName)
!     except KeyError:
!       GDebug.printMesg(0,'I should never run')
        return self._modifiedFlags.has_key (string.lower(fieldName))
  
  
--- 621,631 ----
  
    # Returns 1=Field has been modified
    def isFieldModified(self, fieldName):
!     if self._modifiedFlags.has_key (fieldName):
!       return 1
!     else:
!       #TODO: the string.lower() line should never be called but is left here
!       #TODO: until the code is clean
        return self._modifiedFlags.has_key (string.lower(fieldName))
  
  



reply via email to

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