commit-gnue
[Top][All Lists]
Advanced

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

gnue appserver/samples/Makefile common/utils/xm...


From: Jan Ischebeck
Subject: gnue appserver/samples/Makefile common/utils/xm...
Date: Sun, 28 Jul 2002 06:42:43 -0400

CVSROOT:        /cvsroot/gnue
Module name:    gnue
Changes by:     Jan Ischebeck <address@hidden>  02/07/28 06:42:41

Modified files:
        appserver/samples: Makefile 
        common/utils/xml2sql: Makefile.sample 
        common/src/dbdrivers/interbase: DBdriver.py 
Added files:
        common/utils/xml2sql: interbase.xsl 

Log message:
        changes to interbase/DBdriver.py (add primary key etc) [closing Ticket 
#116]
        adding interbase.xsl [closing Ticket #117]
        changing Makefiles to use interbase.xsl

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/appserver/samples/Makefile.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/common/utils/xml2sql/interbase.xsl?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/common/utils/xml2sql/Makefile.sample.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/common/src/dbdrivers/interbase/DBdriver.py.diff?tr1=1.10&tr2=1.11&r1=text&r2=text

Patches:
Index: gnue/appserver/samples/Makefile
diff -c gnue/appserver/samples/Makefile:1.3 gnue/appserver/samples/Makefile:1.4
*** gnue/appserver/samples/Makefile:1.3 Tue Jul 23 17:40:21 2002
--- gnue/appserver/samples/Makefile     Sun Jul 28 06:42:41 2002
***************
*** 5,11 ****
  src = sample.gsd
  
  
! all:  mysql pgsql mssql sybase html
  
  
  mysql:
--- 5,11 ----
  src = sample.gsd
  
  
! all:  mysql pgsql mssql sybase interbase html
  
  
  mysql:
***************
*** 23,28 ****
--- 23,32 ----
        ${xsltcmd} ${xslpath}sybase.xsl ${src} sybase.xml
        ${xsltcmd} ${xslpath}strip.command.xsl sybase.xml sybase.sql
  
+ interbase:
+       ${xsltcmd} ${xslpath}interbase.xsl ${src} interbase.xml
+       ${xsltcmd} ${xslpath}strip.command.xsl interbase.xml interbase.sql
+       
  html:
        ${xsltcmd} ${xslpath}display.xsl ${src} sample.html
  
Index: gnue/common/src/dbdrivers/interbase/DBdriver.py
diff -c gnue/common/src/dbdrivers/interbase/DBdriver.py:1.10 
gnue/common/src/dbdrivers/interbase/DBdriver.py:1.11
*** gnue/common/src/dbdrivers/interbase/DBdriver.py:1.10        Fri May 31 
14:12:33 2002
--- gnue/common/src/dbdrivers/interbase/DBdriver.py     Sun Jul 28 06:42:41 2002
***************
*** 23,29 ****
  #
  # DESCRIPTION:
  # Driver to provide access to data via the Kinterbasdb Interbase/Firebird 
Python Driver
! # Requires Kinterbasdb 3.0 (http://kinterbasdb.sourceforge.net/)
  #
  # NOTES:
  #
--- 23,29 ----
  #
  # DESCRIPTION:
  # Driver to provide access to data via the Kinterbasdb Interbase/Firebird 
Python Driver
! # Requires Kinterbasdb > 3.0 (http://kinterbasdb.sourceforge.net/)
  #
  # NOTES:
  #
***************
*** 59,111 ****
              cursor, defaultValues, masterRecordSet)
      self._recordSetClass = Interbase_RecordSet
  
-   # Override the base _loadNextRecord as the fetchmany() from the cursor
-   # returns an exception instead of an empty sequence. 
-   # TODO: will be unneeded when next (>3.0) kinterbasdb release comes out
-   # TODO: in the kinterbasdb CVS the fetchmany() error has been fixed yet 
(btami)
-   def _loadNextRecord(self):
-     if self._cursor:
-       rs = None
- 
-       try:
-         rsets = self._cursor.fetchmany()
-       except self._dataObject._DatabaseError, err:
-         rsets = None
-       except:
-         rsets = None
- 
-       if rsets and len(rsets):
-         for rs in(rsets):
-           if rs:
-             i = 0
-             dict = {}
-             for f in (rs):
-               dict[lower(self._fieldNames[i])] = f
-               i += 1
-             self._cachedRecords.append (self._recordSetClass(parent=self, \
-                                                              
initialData=dict))
-           else:
-             return 0
-         return 1
-       else:
-         return 0
-     else:
-       return 0
- 
  
  class Interbase_DataObject(DBSIG_DataObject):
    def __init__(self):
      DBSIG_DataObject.__init__(self)
      self._DatabaseError = SIG2api.DatabaseError
      self._resultSetClass = Interbase_ResultSet
! 
  
    def connect(self, connectData={}):
      GDebug.printMesg(1,"Interbase database driver initializing")
      try:
        self._dataConnection = SIG2api.connect( \
                   user=connectData['_username'], \
                   password=connectData['_password'], \
                   database=connectData['dbname'], \
                   host=connectData['host'])
      except self._DatabaseError, value:
--- 59,85 ----
              cursor, defaultValues, masterRecordSet)
      self._recordSetClass = Interbase_RecordSet
  
  
  class Interbase_DataObject(DBSIG_DataObject):
    def __init__(self):
      DBSIG_DataObject.__init__(self)
      self._DatabaseError = SIG2api.DatabaseError
      self._resultSetClass = Interbase_ResultSet
!     self._primaryKeyFields = []
  
    def connect(self, connectData={}):
      GDebug.printMesg(1,"Interbase database driver initializing")
+ 
+     try:
+       charset = connectData['charset']
+     except KeyError:
+       charset = ""
+ 
      try:
        self._dataConnection = SIG2api.connect( \
                   user=connectData['_username'], \
                   password=connectData['_password'], \
+                  charset=charset, \
                   database=connectData['dbname'], \
                   host=connectData['host'])
      except self._DatabaseError, value:
***************
*** 139,145 ****
      list = []
      for rs in cursor.fetchall():
        list.append(GDataObjects.Schema(attrs={'id':rs[0], 'name':rstrip(rs[0]),
!                          'type':'table'},
                           getChildSchema=self.__getFieldSchema))
  
      cursor.close()
--- 113,120 ----
      list = []
      for rs in cursor.fetchall():
        list.append(GDataObjects.Schema(attrs={'id':rs[0], 'name':rstrip(rs[0]),
!                          'type':'table',
!                        'primarykey': self.__getPrimaryKey(rstrip(rs[0]))},
                           getChildSchema=self.__getFieldSchema))
  
      cursor.close()
***************
*** 158,164 ****
      rs = cursor.fetchone()
      if rs:
        schema = GDataObjects.Schema(attrs={'id':rs[0], 'name':rstrip(rs[0]),
!                            'type':'table'},
                             getChildSchema=self.__getFieldSchema)
      else:
        schema = None
--- 133,140 ----
      rs = cursor.fetchone()
      if rs:
        schema = GDataObjects.Schema(attrs={'id':rs[0], 'name':rstrip(rs[0]),
!                            'type':'table',
!                          'primarykey': self.__getPrimaryKey(rstrip(rs[0]))},
                             getChildSchema=self.__getFieldSchema)
      else:
        schema = None
***************
*** 166,184 ****
      cursor.close()
      return schema
  
    # Get fields for a table
    def __getFieldSchema(self, parent):
  
- #    statement = "select a.rdb$field_name,a.rdb$null_flag,"+\
- #                     "c.rdb$type_name,"+\
- #                     "b.rdb$field_length, "+\
- #                     "b.rdb$field_scale "+\
- #                     "from rdb$relation_fields a, rdb$fields b, rdb$types c 
"+\
- #                     "where c.rdb$field_name='RDB$FIELD_TYPE' and "+\
- #                     "c.rdb$type=b.rdb$field_type and "+\
- #                     "b.rdb$field_name=a.rdb$field_source and "+\
- #                     "a.rdb$relation_name= '%s'"%(parent.name)
- 
      statement = "select * from %s"%(parent.name) + " where (0=1)"
  
      cursor = self._dataConnection.cursor()
--- 142,170 ----
      cursor.close()
      return schema
  
+   # Return a list of fields (for _buildDeleteStatement and for 
_buildUpdateStatement)
+   def __getPrimaryKey(self, relname):
+     statement = "select rdb$relation_name, rdb$field_name, "+\
+                                  "rdb$constraint_name, rdb$field_position "+\
+                                   "from rdb$relation_constraints rc, 
rdb$index_segments ri "+\
+                                   "where ri.rdb$index_name = 
rc.rdb$index_name "+\
+                                           "and rc.rdb$constraint_type = 
'PRIMARY KEY' "+\
+                                           "and rc.rdb$relation_name = '%s' " 
% (relname)+\
+                                   "order by ri.rdb$field_position"
+ 
+     cursor = self._dataConnection.cursor()
+     cursor.execute(statement)
+ 
+     list = []
+     for rs in cursor.fetchall():
+       list.append(lower(rstrip(rs[1])))
+ 
+     cursor.close()
+     return list
+ 
    # Get fields for a table
    def __getFieldSchema(self, parent):
  
      statement = "select * from %s"%(parent.name) + " where (0=1)"
  
      cursor = self._dataConnection.cursor()
***************
*** 186,208 ****
  
      list = []
  
- #    for rs in cursor.fetchall():
- #      nativetype = rstrip(rs[2])
- #
- #      attrs={'id': rs[0], 'name': lower(rstrip(rs[0])),
- #             'type':'field', 'nativetype': nativetype,
- #             'required': rs[1]==1, 'length': rs[3] }
- #      
- #      if nativetype in ('SHORT','LONG','QUAD','FLOAT','DOUBLE'):
- #        attrs['datatype']='number'
- #        attrs['precision'] = rs[4]
- #      elif nativetype in ('DATE','TIME','TIMESTAMP'):
- #        attrs['datatype']='date'
- #      else:
- #        attrs['datatype']='text'
- 
      for d in cursor.description:
!       nativetype = lower(d[SIG2api.DESCRIPTION_TYPE_CODE].__name__)
        
        attrs={'id':d[SIG2api.DESCRIPTION_NAME],
                   'name':lower(d[SIG2api.DESCRIPTION_NAME]),
--- 172,182 ----
  
      list = []
  
      for d in cursor.description:
!       try:
!         nativetype = lower(d[SIG2api.DESCRIPTION_TYPE_CODE].__name__)
!       except AttributeError:
!         nativetype='unknown'
        
        attrs={'id':d[SIG2api.DESCRIPTION_NAME],
                   'name':lower(d[SIG2api.DESCRIPTION_NAME]),
Index: gnue/common/utils/xml2sql/Makefile.sample
diff -c gnue/common/utils/xml2sql/Makefile.sample:1.3 
gnue/common/utils/xml2sql/Makefile.sample:1.4
*** gnue/common/utils/xml2sql/Makefile.sample:1.3       Fri Jul 26 10:57:31 2002
--- gnue/common/utils/xml2sql/Makefile.sample   Sun Jul 28 06:42:41 2002
***************
*** 5,11 ****
  src = example.gsd
  
  
! all:  mysql pgsql mssql sybase html
  
  
  mysql:
--- 5,11 ----
  src = example.gsd
  
  
! all:  mysql pgsql mssql sybase interbase html
  
  
  mysql:
***************
*** 23,28 ****
--- 23,32 ----
        ${xsltcmd} ${xslpath}sybase.xsl ${src} sybase.xml
        ${xsltcmd} ${xslpath}strip.command.xsl sybase.xml sybase.sql
  
+ interbase:
+       ${xsltcmd} ${xslpath}interbase.xsl ${src} interbase.xml
+       ${xsltcmd} ${xslpath}strip.command.xsl  interbase.xml interbase.sql
+       
  html:
        ${xsltcmd} ${xslpath}display.xsl ${src} sample.html
  



reply via email to

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