[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnue-common/src/datasources/drivers/appserver/a...
From: |
Jan Ischebeck |
Subject: |
gnue-common/src/datasources/drivers/appserver/a... |
Date: |
Sat, 06 Sep 2003 08:05:23 -0400 |
CVSROOT: /cvsroot/gnue
Module name: gnue-common
Branch:
Changes by: Jan Ischebeck <address@hidden> 03/09/06 08:05:23
Modified files:
src/datasources/drivers/appserver/appserver: Driver.py
Log message:
Appserver DB driver update:
- add introspection support
- name change: replace GEASv2 with Appserver
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-common/src/datasources/drivers/appserver/appserver/Driver.py.diff?tr1=1.16&tr2=1.17&r1=text&r2=text
Patches:
Index: gnue-common/src/datasources/drivers/appserver/appserver/Driver.py
diff -c gnue-common/src/datasources/drivers/appserver/appserver/Driver.py:1.16
gnue-common/src/datasources/drivers/appserver/appserver/Driver.py:1.17
*** gnue-common/src/datasources/drivers/appserver/appserver/Driver.py:1.16
Mon Sep 1 15:08:19 2003
--- gnue-common/src/datasources/drivers/appserver/appserver/Driver.py Sat Sep
6 08:05:23 2003
***************
*** 43,49 ****
import md5
import sys
! class GEASv2_Connector:
def __init__(self, connectData):
user = connectData['_username']
--- 43,49 ----
import md5
import sys
! class Appserver_Connector:
def __init__(self, connectData):
user = connectData['_username']
***************
*** 73,86 ****
tmsg = _("Error loging into appserver")
raise GDataObjects.ConnectionError, tmsg
! self._updateCursor = GEASv2_UpdateCursor(self)
def cursor(self):
return self._updateCursor
def request(self,table,filter,sort,fieldlist):
listid = self._sm.request(self._sess_id,table,filter,sort,fieldlist)
! return GEASv2_ListCursor(self,listid,fieldlist)
def call(self,classname,obj_id_list,methodname,parameters):
self._sm.call(self._sess_id,classname,obj_id_list,methodname,parameters)
--- 73,86 ----
tmsg = _("Error loging into appserver")
raise GDataObjects.ConnectionError, tmsg
! self._updateCursor = Appserver_UpdateCursor(self)
def cursor(self):
return self._updateCursor
def request(self,table,filter,sort,fieldlist):
listid = self._sm.request(self._sess_id,table,filter,sort,fieldlist)
! return Appserver_ListCursor(self,listid,fieldlist)
def call(self,classname,obj_id_list,methodname,parameters):
self._sm.call(self._sess_id,classname,obj_id_list,methodname,parameters)
***************
*** 96,102 ****
def close(self,commit):
self._sm.close(self._sess_id,commit)
! class GEASv2_ListCursor:
def __init__(self,dataCon,listid,fieldlist):
self._dataCon=dataCon
self._listid=listid
--- 96,102 ----
def close(self,commit):
self._sm.close(self._sess_id,commit)
! class Appserver_ListCursor:
def __init__(self,dataCon,listid,fieldlist):
self._dataCon=dataCon
self._listid=listid
***************
*** 136,143 ****
return self._count
! class GEASv2_UpdateCursor:
def __init__(self,dataCon):
self._dataCon=dataCon
self._deleteList={}
--- 136,146 ----
return self._count
+ def close(self):
+ pass
+ # TODO: Implement List Close command
! class Appserver_UpdateCursor:
def __init__(self,dataCon):
self._dataCon=dataCon
self._deleteList={}
***************
*** 190,196 ****
self._updateKeyList[classname]=[]
! class GEASv2_RecordSet(GDataObjects.RecordSet):
def _postChanges(self):
if self._deleteFlag:
GDebug.printMesg(5, 'AppServer database driver: Instance deleted')
--- 193,199 ----
self._updateKeyList[classname]=[]
! class Appserver_RecordSet(GDataObjects.RecordSet):
def _postChanges(self):
if self._deleteFlag:
GDebug.printMesg(5, 'AppServer database driver: Instance deleted')
***************
*** 229,246 ****
name,params)
! # GEASv2_ResultSet
#
# Notes:
! # In the GEASv2 driver a CURSOR is simply the List handle returned
# via the query interface
#
! class GEASv2_ResultSet(GDataObjects.ResultSet):
def __init__(self, dataObject, cursor=None, \
defaultValues={}, masterRecordSet=None):
GDataObjects.ResultSet.__init__(
self,dataObject,cursor,defaultValues,masterRecordSet)
! self._recordSetClass = GEASv2_RecordSet
GDebug.printMesg(5, 'ResultSet created')
def _loadNextRecord(self):
--- 232,249 ----
name,params)
! # Appserver_ResultSet
#
# Notes:
! # In the Appserver driver a CURSOR is simply the List handle returned
# via the query interface
#
! class Appserver_ResultSet(GDataObjects.ResultSet):
def __init__(self, dataObject, cursor=None, \
defaultValues={}, masterRecordSet=None):
GDataObjects.ResultSet.__init__(
self,dataObject,cursor,defaultValues,masterRecordSet)
! self._recordSetClass = Appserver_RecordSet
GDebug.printMesg(5, 'ResultSet created')
def _loadNextRecord(self):
***************
*** 265,285 ****
return more
! class GEASv2_DataObject(GDataObjects.DataObject):
def __init__(self):
GDataObjects.DataObject.__init__(self)
GDebug.printMesg (1,"AppServer database driver backend initializing")
! self._resultSetClass = GEASv2_ResultSet
self._DatabaseError = GComm.Error
def connect(self, connectData={}):
GDebug.printMesg(1,"AppServer database driver connecting...")
! self._dataConnection = GEASv2_Connector(connectData)
! self.triggerExtensions = GEASv2_TriggerExtensions(self._dataConnection)
# We only need the basics -- username and password -- to log in
def getLoginFields(self):
--- 268,288 ----
return more
! class Appserver_DataObject(GDataObjects.DataObject):
def __init__(self):
GDataObjects.DataObject.__init__(self)
GDebug.printMesg (1,"AppServer database driver backend initializing")
! self._resultSetClass = Appserver_ResultSet
self._DatabaseError = GComm.Error
def connect(self, connectData={}):
GDebug.printMesg(1,"AppServer database driver connecting...")
! self._dataConnection = Appserver_Connector(connectData)
! self.triggerExtensions =
Appserver_TriggerExtensions(self._dataConnection)
# We only need the basics -- username and password -- to log in
def getLoginFields(self):
***************
*** 363,411 ****
tmsg = _("Error during Rollback")
raise GDataObjects.ConnectionError, tmsg
! ### The folowing methods are not working and just copies from the old geas
! ### driver
!
! ### TODO add introspection support to geas
def getSchemaTypes(self):
! return [('object',_('Objects'),1)]
- # Return a list of Schema objects
def getSchemaList(self, type=None):
! includeObjects = (type in ('object','sources', None))
!
list = []
! for classname in self._dataConnection.classes:
! list.append(self.getSchemaByName(classname))
return list
def getSchemaByName(self, name, type=None):
! classdef = self._dataConnection.getFullClassDefinition(str(name))
! schema = GDataObjects.Schema(attrs={'id':string.lower(classdef.name),
! 'name':classdef.name,
! 'type':'object'},
! getChildSchema=self.__getFieldSchema)
return schema
- # Get fields/methods of a GEAS object
def __getChildSchema(self, parent):
list = []
! c = con.getFullClassDefinition( classnames[idx-1] )
def getFields(self, name):
# no introspection support for now
return self._fieldReferences.keys()
supportedDataObjects = {
! 'object': GEASv2_DataObject
}
#
# Extensions to Trigger Namespaces
#
! class GEASv2_TriggerExtensions:
def __init__(self, dataConnection):
self._dataCon = dataConnection
--- 366,500 ----
tmsg = _("Error during Rollback")
raise GDataObjects.ConnectionError, tmsg
! ####
! #
! # Introspection support (works through direct access on gnue_module,
gnue_class und gnue_property tables
! #
! # TODO: Move to Introspection Subdir
def getSchemaTypes(self):
! return [('object',_('Business Object Class'),1)]
!
! #############
! #
! # get list of all business classes
! #
def getSchemaList(self, type=None):
! if not(type in ('object',None)):
! return []
!
! try:
! listcursor =
self._dataConnection.request('gnue_class',[],['gnue_module'],['gnue_name','gnue_comment','gnue_module'])
! except Exception, msg:
! print "error %s" %msg
! GDebug.printMesg(1,_("Error creating introspection module list \n\n
--- %s ---)") % msg)
! return []
!
list = []
! data = ['1']
! while len(data):
! data = listcursor.fetch()
! for classdef in data:
! print classdef
! schema =
GDataObjects.Schema(attrs={'id':string.lower(classdef['gnue_name']),
! 'name':classdef['gnue_name'],
! 'type':'object',
! 'gnue_id':classdef['gnue_id']},
! getChildSchema=self.__getChildSchema)
! list.append(schema)
!
!
! listcursor.close()
!
return list
+ #############
+ #
+ # get schema for one single business class
+ #
+
def getSchemaByName(self, name, type=None):
! try:
! listcursor = self._dataConnection.request('gnue_class', [["eq", ""],
["field", "gnue_name"], ["const", name]],
!
['gnue_module'],['gnue_name','gnue_comment','gnue_module'])
! except Exception, msg:
! print "error %s" %msg
! GDebug.printMesg(1,_("Error fetching class %s \n\n --- %s ---)") %
(name,msg))
! return []
!
! data = listcursor.fetch()
! if len(data):
! classdef = data[0]
! print classdef
! schema =
GDataObjects.Schema(attrs={'id':string.lower(classdef['gnue_name']),
! 'name':classdef['gnue_name'],
! 'type':'object',
! 'gnue_id':classdef['gnue_id']},
! getChildSchema=self.__getChildSchema)
! listcursor.close()
!
return schema
+
+ #############
+ #
+ # get schema for one single business class
+ #
def __getChildSchema(self, parent):
+ try:
+ # fetch all properties used by class "parent"
+ listcursor = self._dataConnection.request('gnue_property', # class
+ [["eq", ""], ["field",
"gnue_class"],
+ ["const",
parent.gnue_id]], # condition
+ ['gnue_module'], # sort
+
['gnue_name','gnue_comment','gnue_module','gnue_class','gnue_type',
+
'gnue_length','gnue_scale'])
+
+ except Exception, msg:
+ print "error %s" %msg
+ GDebug.printMesg(1,_("Error while loading class properties for class
%s \n\n --- %s ---)") % (parent.name,msg))
+ return []
+
list = []
! data = ['1']
! while len(data):
! data = listcursor.fetch()
! for propdef in data:
! print propdef
! attrs={'id': "%s.%s" % (parent.id,
string.lower(propdef['gnue_name'])),
! 'name': propdef['gnue_name'],
! 'precision': propdef['gnue_scale'], # TODO: check if scale
and precision is the same
! 'datatype':propdef['gnue_type'],
! 'nativetype': 'unknown',
! 'required': 0 } # TODO: classrep has
no 'required' field
!
! # TODO: make classrep types a bit more straigtforward
! if propdef['gnue_type'] =='id' or propdef['gnue_type']
=='gnue_module' \
! or propdef['gnue_type'] =='gnue_class':
! attrs['length'] = 32
! else:
! attrs['length'] = propdef['gnue_length']
!
! list.append(GDataObjects.Schema(attrs=attrs))
!
! listcursor.close()
!
! return list
def getFields(self, name):
# no introspection support for now
return self._fieldReferences.keys()
supportedDataObjects = {
! 'object': Appserver_DataObject
}
#
# Extensions to Trigger Namespaces
#
! class Appserver_TriggerExtensions:
def __init__(self, dataConnection):
self._dataCon = dataConnection