commit-gnue
[Top][All Lists]
Advanced

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

gnue/gnuef/src/drivers geas/DBdriver.py odbc/.c...


From: Jade Meskill
Subject: gnue/gnuef/src/drivers geas/DBdriver.py odbc/.c...
Date: Fri, 22 Dec 2000 10:44:50 -0800

CVSROOT:        /home/cvs
Module name:    gnue
Changes by:     Jade Meskill <address@hidden>   00/12/22 10:44:50

Modified files:
        gnuef/src/drivers/geas: DBdriver.py 
Added files:
        gnuef/src/drivers/odbc: .cvsignore DBdriver.py __init__.py 

Log message:
        Added ODBC driver (has been tested only with MyODBC so far)
        Updated geas driver to keep objects in memory (still not tested)

CVSWeb URLs:
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/drivers/geas/DBdriver.py.diff?r1=1.10&r2=1.11
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/drivers/odbc/.cvsignore.diff?r1=NONE&r2=1.1
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/drivers/odbc/DBdriver.py.diff?r1=NONE&r2=1.1
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/drivers/odbc/__init__.py.diff?r1=NONE&r2=1.1

Patches:
Index: gnue/gnuef/src/drivers/geas/DBdriver.py
diff -u gnue/gnuef/src/drivers/geas/DBdriver.py:1.10 
gnue/gnuef/src/drivers/geas/DBdriver.py:1.11
--- gnue/gnuef/src/drivers/geas/DBdriver.py:1.10        Sun Nov 19 22:55:10 2000
+++ gnue/gnuef/src/drivers/geas/DBdriver.py     Fri Dec 22 10:44:49 2000
@@ -1,7 +1,7 @@
 #
 # GEAS database driver
 #
-# $Id: DBdriver.py,v 1.10 2000/11/20 06:55:10 jmeskill Exp $
+# $Id: DBdriver.py,v 1.11 2000/12/22 18:44:49 jmeskill Exp $
 #
 
 import sys
@@ -32,6 +32,8 @@
         self.ior = None
         self.factory = None
         self.uniqueKey = "objectID"
+        self.fieldlist = []
+        self.objlist = {}
 
     def connect(self, host, dbname, user, passwd):
         # find the object server base object
@@ -86,6 +88,7 @@
 
     def query(self, table, mask = None, order_by=None):
         (objectID, mask) = self.filterMask(mask)
+        self.objlist = {}
         rs = []
         
         if mask or objectID:
@@ -109,14 +112,8 @@
 
         if self.data:
             for obj in self.data.objects:
-                r = {}
-                fields = self.getFieldList(table)
-
-                # add objectID into field list
-                r[self.uniqueKey] = obj.objectID
-                for f in fields.keys():
-                    r[f] = obj.getField(f)
-
+                self.objlist[obj.objectID] = obj
+                r = self.buildMask(obj)
                 rs.append(r)
 
         return rs
@@ -137,36 +134,38 @@
 
         mask["objectID"] = obj.objectID
 
+        self.objlist[obj.objectID] = obj
+        
         return mask
         
     def delete(self,table,mask):
         (objectID, mask) = self.filterMask(mask)
-        objs = self.database.loadObjects(table, "objectID", str(objectID))
-        if objs:
-            obj = objs.objects[0]
+        obj = self.objlist[objectID]
+        if obj:
             obj.delete()
             obj.flush()
 
     def update(self,table,mask):
         (objectID, mask) = self.filterMask(mask)
-        objs = self.database.loadObjects(table, "objectID", str(objectID))
-        if objs:
-            obj = objs.objects[0]
+        obj = self.objlist[objectID]
+        if obj:
             for k in mask.keys():
                 obj.setField(k, mask[k])
 
             obj.flush()
 
-        return self.query(table, {"objectID" : objectID}) 
+        return [self.buildMask(obj)]
 
     def getFieldList(self,table):
         list = {}
+        self.fieldlist = {}
         cd = self.database.getFullClassDefinition(table)
         if cd:
             for field in cd.fields:
                 if field.type == 1:
                     list[field.name] = field.type
 
+        self.fieldlist = list
         return list
 
     def getUniqueKey(self, table):
@@ -182,6 +181,15 @@
                 nmask[k] = mask[k]
 
         return (objectID, nmask)
+
+    def buildMask(self, obj):
+        r = {}
+        # add objectID into field list
+        r[self.uniqueKey] = obj.objectID
+        for f in self.fieldlist.keys():
+            r[f] = obj.getField(f)
+
+        return r
 
     def _make_passkey(self, user, passwd, random):
         m = md5.new(user + '-' + passwd + '-' + random)



reply via email to

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