commit-gnue
[Top][All Lists]
Advanced

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

gnue/common/src/dbdrivers/dbf DBdriver.py


From: Jan Ischebeck
Subject: gnue/common/src/dbdrivers/dbf DBdriver.py
Date: Sat, 30 Nov 2002 19:01:00 -0500

CVSROOT:        /cvsroot/gnue
Module name:    gnue
Changes by:     Jan Ischebeck <address@hidden>  02/11/30 19:00:59

Modified files:
        common/src/dbdrivers/dbf: DBdriver.py 

Log message:
        add introspection support to dbf driver

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/common/src/dbdrivers/dbf/DBdriver.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text

Patches:
Index: gnue/common/src/dbdrivers/dbf/DBdriver.py
diff -c gnue/common/src/dbdrivers/dbf/DBdriver.py:1.1 
gnue/common/src/dbdrivers/dbf/DBdriver.py:1.2
*** gnue/common/src/dbdrivers/dbf/DBdriver.py:1.1       Mon Nov 25 19:45:10 2002
--- gnue/common/src/dbdrivers/dbf/DBdriver.py   Sat Nov 30 19:00:59 2002
***************
*** 56,66 ****
      try:
        GDebug.printMesg(3,'Open file: %s' % 
(connectData['directory']+connectData['dbname']))
        self._db = dbf.dbf(connectData['directory']+connectData['dbname'])
      except IOError:
        raise self._DatabaseError,'DBF file not found.'
      except TypeError:
        raise self._DatabaseError,'Wrong file format.'
!     
      # build field list
      self._fieldReferences=[]
      for f in self._db.fields:
--- 56,69 ----
      try:
        GDebug.printMesg(3,'Open file: %s' % 
(connectData['directory']+connectData['dbname']))
        self._db = dbf.dbf(connectData['directory']+connectData['dbname'])
+       self._dbname = connectData['dbname']
+       if self._dbname[-4:]=='.dbf':
+         self._dbname=self._dbname[:-4]
      except IOError:
        raise self._DatabaseError,'DBF file not found.'
      except TypeError:
        raise self._DatabaseError,'Wrong file format.'
! 
      # build field list
      self._fieldReferences=[]
      for f in self._db.fields:
***************
*** 68,73 ****
--- 71,129 ----
     
      self._postConnect()
  
+   #
+   # Schema (metadata) functions
+   #
+ 
+   # Return a list of the types of Schema objects this driver provides
+   def getSchemaTypes(self):
+     return [('table','Table',1)]
+ 
+   # Return a list of Schema objects
+   def getSchemaList(self, type=None):
+     
+     list = [GDataObjects.Schema(attrs={'id':self._dbname,\
+                                         'name':self._dbname, \
+                                         'type':1},\
+                                  getChildSchema=self.__getFieldSchema)]
+     return list
+ 
+ 
+   # Find a schema object with specified name
+   def getSchemaByName(self, name, type=None):
+     if name==self._dbname:
+       return self.getSchemaList()
+     else:
+       return None
+ 
+   # Get fields for a table
+   def __getFieldSchema(self, parent):
+ 
+     list = []
+     for f in self._db.fields:
+ 
+ 
+       attrs={'id': "%s.%s" % (parent.id, f[0]), 'name': f[0],
+              'type':'field', 'nativetype': field[1],
+              'required': 0}
+       if field[1] == 'C':
+         attrs['datatype']='text'
+         attrs['length']=field[2]
+       elif field[1] == 'N':
+         attrs['datatype']='number'
+       elif field[1] == 'D':
+         attrs['datatype']='date'
+       elif field[1] == 'L':
+         attrs['datatype']='boolean'
+       else:
+         GDebug.printMesg(1,'WARNING: dbf native type error: %s' % field[1])
+ 
+       list.append(GDataObjects.Schema(attrs=attrs))
+ 
+     return list
+ 
+ 
+ 
  
  ###########################################################
  #
***************
*** 129,135 ****
  #  All datasouce "types" and corresponding DataObject class
  #
  supportedDataObjects = {
!   'static': DBF_DataObject
  }
  
  
--- 185,192 ----
  #  All datasouce "types" and corresponding DataObject class
  #
  supportedDataObjects = {
!   'static': DBF_DataObject,
!   'object': DBF_DataObject
  }
  
  




reply via email to

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