[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
r5378 - trunk/gnue-common/src/datasources/drivers/appserver/appserver
From: |
reinhard |
Subject: |
r5378 - trunk/gnue-common/src/datasources/drivers/appserver/appserver |
Date: |
Fri, 19 Mar 2004 11:07:22 -0600 (CST) |
Author: reinhard
Date: 2004-03-19 11:07:20 -0600 (Fri, 19 Mar 2004)
New Revision: 5378
Modified:
trunk/gnue-common/src/datasources/drivers/appserver/appserver/Connection.py
Log:
Remove data conversions because the RPC interface will now handle that.
Modified:
trunk/gnue-common/src/datasources/drivers/appserver/appserver/Connection.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/appserver/appserver/Connection.py
2004-03-19 17:00:58 UTC (rev 5377)
+++ trunk/gnue-common/src/datasources/drivers/appserver/appserver/Connection.py
2004-03-19 17:07:20 UTC (rev 5378)
@@ -55,19 +55,6 @@
from DataObject import DataObject
from gnue.common.datasources.drivers.appserver.Schema.Discovery.Introspection
import Introspection
-# Translate Unicode to String. Called for every string parameter passed to RPC.
-# Works for lists, recursively.
-def _toString (value):
- if type (value) == types.ListType:
- return [_toString (x) for x in value]
- elif type (value) == types.UnicodeType:
- return value.encode ('utf-8')
- elif type (value) == types.TupleType:
- (x, y) = value
- return (_toString (x), _toString (y))
- else:
- return value
-
# TODO: move all non standart Connection functions (request, ...) into a
subobject native
# to prevent namespace conflicts
@@ -129,21 +116,12 @@
return self._updateCursor
def request(self,table,filter,sort,fieldlist,unicodeMode=0):
- s_table = _toString (table)
- s_filter = _toString (filter)
- s_sort = _toString (sort)
- s_fieldlist = _toString (fieldlist)
- listid = self._sm.request (self._sess_id, s_table, s_filter, s_sort,
- s_fieldlist)
+ listid = self._sm.request (self._sess_id, table, filter, sort, fieldlist)
return Appserver_ListCursor(self,listid,table,fieldlist,unicodeMode)
def call(self,classname,obj_id_list,methodname,parameters):
- s_classname = _toString (classname)
- s_obj_id_list = _toString (obj_id_list)
- s_methodname = _toString (methodname)
- s_parameters = _toString (parameters)
- self._sm.call (self._sess_id, s_classname, s_obj_id_list, s_methodname,
- s_parameters)
+ self._sm.call (self._sess_id, classname, obj_id_list, methodname,
+ parameters)
def commit (self):
self._updateCursor.execute ()
@@ -182,47 +160,6 @@
self._stackpos=0
self._unicodeMode=unicodeMode
- s_classname = _toString (classname)
- s_fieldlist = _toString (self._fieldlist)
- self._fieldtypes = self._dataCon._sm.load (self._dataCon._sess_id,
- s_classname, [''], s_fieldlist)
- self._fieldtypes = self._fieldtypes [0]
-
- # convert a value retrieved from RPC to the correct native Python type
- def __rpc_to_native (self, value, typestr):
-
- # Empty strings indicate None
- if value == None:
- return None
-
- if value == '':
- return None
-
- # String: convert to unicode or local encoding
- elif typestr [:6] == 'string':
- if isinstance (value, types.StringType):
- value = unicode (value, 'utf-8')
- if self._unicodeMode:
- return value
- else:
- return value.encode (gConfig ('textEncoding'))
-
- # Date: convert to mx.DateTime object
- elif typestr == 'date':
- return mx.DateTime.ISO.ParseDate (value)
-
- # Time: convert to mx.DateTime object
- elif typestr == 'time':
- return mx.DateTime.ISO.ParseTime (value)
-
- # DateTime: convert to mx.DateTime object
- elif typestr == 'datetime':
- return mx.DateTime.ISO.ParseDateTime (value)
-
- # All others (id, number, boolean, reference): no need to convert
- else:
- return value
-
def fetch(self,count=5):
if self._stackpos == -1:
return []
@@ -240,7 +177,7 @@
dict = {}
j = 0
for fieldName in self._fieldlist:
- dict [fieldName] = self.__rpc_to_native (i [j+1], self._fieldtypes [j])
+ dict [fieldName] = i [j+1]
j += 1
dict["gnue_id"]=i[0]
@@ -279,27 +216,10 @@
self._updateList[classname].append(fieldDict)
self._updateKeyList[classname].append(id)
- # convert a native Python type into something transportable by RPC
- def __native_to_rpc (self, s):
- if type (s) == types.StringType:
- if self._unicodeMode:
- msg = 'WARNING: non-unicode passed to the dbdriver (%s)' % value
- GDebug.printMesg (0, msg)
- s = unicode (s, gConfig ('textEncoding'))
- if type (s) == types.UnicodeType:
- s = s.encode ('utf-8')
- elif type (s) == mx.DateTime.DateTimeType:
- s = s.date + ' ' + s.time
- elif s is None:
- s = ''
- return s
-
def execute (self):
for classname in self._deleteList.keys ():
- s_classname = _toString (classname)
- s_deleteList = _toString (self._deleteList [classname])
- self._dataCon._sm.delete (self._dataCon._sess_id, s_classname,
- s_deleteList)
+ self._dataCon._sm.delete (self._dataCon._sess_id, classname,
+ self._deleteList [classname])
del self._deleteList [classname]
for classname in self._updateList.keys ():
@@ -307,12 +227,8 @@
id = self._updateKeyList[classname].pop()
dict = self._updateList[classname].pop()
# TODO: merge calls with similar updated fields (=dict.values())
- data = [self.__native_to_rpc (x) for x in dict.values ()]
- s_classname = _toString (classname)
- s_id = _toString (id)
- s_propertynames = _toString (dict.keys ())
- new_ids = self._dataCon._sm.store (self._dataCon._sess_id, s_classname,
- [s_id], s_propertynames, [data])
+ new_ids = self._dataCon._sm.store (self._dataCon._sess_id, classname,
+ [id], dict.keys (), [dict.values
()])
dict ["gnue_id"] = new_ids [0]
del self._updateList [classname]
del self._updateKeyList [classname]
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- r5378 - trunk/gnue-common/src/datasources/drivers/appserver/appserver,
reinhard <=