[Top][All Lists]
[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
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gnue/common/src/dbdrivers/dbf DBdriver.py,
Jan Ischebeck <=