[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnue-appserver/src classrep/Namespace.py langua...
From: |
Reinhard Mueller |
Subject: |
gnue-appserver/src classrep/Namespace.py langua... |
Date: |
Sun, 19 Oct 2003 13:55:56 -0400 |
CVSROOT: /cvsroot/gnue
Module name: gnue-appserver
Branch:
Changes by: Reinhard Mueller <address@hidden> 03/10/19 13:55:56
Modified files:
src/classrep : Namespace.py
src/language : Object.py ObjectList.py
Added files:
src/language : test.py
Log message:
Convert all data into native Python datatypes in language interface.
Added test
program.
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-appserver/src/classrep/Namespace.py.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-appserver/src/language/test.py?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-appserver/src/language/Object.py.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-appserver/src/language/ObjectList.py.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
Patches:
Index: gnue-appserver/src/classrep/Namespace.py
diff -c gnue-appserver/src/classrep/Namespace.py:1.2
gnue-appserver/src/classrep/Namespace.py:1.3
*** gnue-appserver/src/classrep/Namespace.py:1.2 Thu Sep 18 11:14:10 2003
--- gnue-appserver/src/classrep/Namespace.py Sun Oct 19 13:55:55 2003
***************
*** 19,25 ****
# write to the Free Software Foundation, Inc., 59 Temple Place
# - Suite 330, Boston, MA 02111-1307, USA.
#
! # $Id: Namespace.py,v 1.2 2003/09/18 15:14:10 jvetter Exp $
import string
--- 19,25 ----
# write to the Free Software Foundation, Inc., 59 Temple Place
# - Suite 330, Boston, MA 02111-1307, USA.
#
! # $Id: Namespace.py,v 1.3 2003/10/19 17:55:55 reinhard Exp $
import string
***************
*** 110,116 ****
# Create a fully qualified name from a namespace and an identifier
#
-----------------------------------------------------------------------------
def createName (namespace, identifier):
! return "%s_%s" % (namespace, identifier)
#
-----------------------------------------------------------------------------
# Try to figure out which NSID_* constant applies to identifier
--- 110,116 ----
# Create a fully qualified name from a namespace and an identifier
#
-----------------------------------------------------------------------------
def createName (namespace, identifier):
! return str ("%s_%s" % (namespace, identifier))
#
-----------------------------------------------------------------------------
# Try to figure out which NSID_* constant applies to identifier
Index: gnue-appserver/src/language/Object.py
diff -c gnue-appserver/src/language/Object.py:1.7
gnue-appserver/src/language/Object.py:1.8
*** gnue-appserver/src/language/Object.py:1.7 Sat Oct 18 19:19:40 2003
--- gnue-appserver/src/language/Object.py Sun Oct 19 13:55:56 2003
***************
*** 19,33 ****
# write to the Free Software Foundation, Inc., 59 Temple Place
# - Suite 330, Boston, MA 02111-1307, USA.
#
! # $Id: Object.py,v 1.7 2003/10/18 23:19:40 reinhard Exp $
import sys
!
def newObject (server, sessionId, classname, objData=None):
return Object (server, sessionId, classname, objData)
# ===========================================================================
# Implements a single business object
# ===========================================================================
class Object:
--- 19,82 ----
# write to the Free Software Foundation, Inc., 59 Temple Place
# - Suite 330, Boston, MA 02111-1307, USA.
#
! # $Id: Object.py,v 1.8 2003/10/19 17:55:56 reinhard Exp $
import sys
! import types
! import mx.DateTime
! import mx.DateTime.ISO
def newObject (server, sessionId, classname, objData=None):
return Object (server, sessionId, classname, objData)
# ===========================================================================
+ # Helper methods
+ # ===========================================================================
+
+ # ---------------------------------------------------------------------------
+ # Convert RPC transportable datatype into native Python object
+ # ---------------------------------------------------------------------------
+
+ def rpc_to_native (value, type):
+
+ # Empty strings indicate None
+ if value == '':
+ return None
+
+ # String: convert to unicode
+ # elif type [:7] == 'string(':
+ # return unicode (value, 'utf-8')
+
+ # Date: convert to mx.DateTime object
+ elif type == 'date':
+ return mx.DateTime.ISO.ParseDate (value)
+
+ # Time: convert to mx.DateTime object
+ elif type == 'time':
+ return mx.DateTime.ISO.ParseTime (value)
+
+ # DateTime: convert to mx.DateTime object
+ elif type == 'datetime':
+ return mx.DateTime.ISO.ParseDateTime (value)
+
+ # All others (id, number, boolean, reference): no need to convert
+ else:
+ return value
+
+ # ---------------------------------------------------------------------------
+ # Convert native Python object into RPC transportable datatype
+ # ---------------------------------------------------------------------------
+
+ def __native_to_rpc (value):
+
+ if value is None:
+ return ''
+ elif isinstance (value, types.UnicodeType):
+ return value.encode ('utf-8')
+ else:
+ return str (value)
+
+ # ===========================================================================
# Implements a single business object
# ===========================================================================
class Object:
***************
*** 59,68 ****
if not self._cache.has_key (attr):
if self._attrIsValid (attr):
res = self._server.load (self._session_id, self._class,
! [self.objectId], [attr]) [0]
! # TODO: ask the class repository for the type of the attribute,
convert
! # it into the appropriate native python type
! self._cache [attr] = res [0]
else:
raise AttributeError, attr
--- 108,115 ----
if not self._cache.has_key (attr):
if self._attrIsValid (attr):
res = self._server.load (self._session_id, self._class,
! [self.objectId, ''], [attr])
! self._cache [attr] = rpc_to_native (res [0] [0], res [1] [0])
else:
raise AttributeError, attr
***************
*** 103,109 ****
if key == 'gnue_id':
continue
prop.append (key)
! data.append (self._cache[key])
res = self._server.store (self._session_id, self._class, [self.objectId],
prop, [data])
--- 150,156 ----
if key == 'gnue_id':
continue
prop.append (key)
! data.append (native_to_rpc (self._cache[key]))
res = self._server.store (self._session_id, self._class, [self.objectId],
prop, [data])
Index: gnue-appserver/src/language/ObjectList.py
diff -c gnue-appserver/src/language/ObjectList.py:1.6
gnue-appserver/src/language/ObjectList.py:1.7
*** gnue-appserver/src/language/ObjectList.py:1.6 Thu Sep 18 11:14:10 2003
--- gnue-appserver/src/language/ObjectList.py Sun Oct 19 13:55:56 2003
***************
*** 19,28 ****
# write to the Free Software Foundation, Inc., 59 Temple Place
# - Suite 330, Boston, MA 02111-1307, USA.
#
! # $Id: ObjectList.py,v 1.6 2003/09/18 15:14:10 jvetter Exp $
import types
! from Object import newObject
CACHE_STEP = 10
--- 19,28 ----
# write to the Free Software Foundation, Inc., 59 Temple Place
# - Suite 330, Boston, MA 02111-1307, USA.
#
! # $Id: ObjectList.py,v 1.7 2003/10/19 17:55:56 reinhard Exp $
import types
! from Object import newObject, rpc_to_native
CACHE_STEP = 10
***************
*** 99,112 ****
def _populateCache (self):
rset = self._server.fetch (self._session_id, self.list_id,
len (self._cache), CACHE_STEP, 0)
for row in rset:
## Convert array into dictonary
! i = 1
objData = {}
for p in self.properties:
! objData [p] = row [i]
! i = i + 1
objData ["gnue_id"] = row [0]
obj = newObject (self._server, self._session_id, self.classname,
objData)
--- 99,114 ----
def _populateCache (self):
rset = self._server.fetch (self._session_id, self.list_id,
len (self._cache), CACHE_STEP, 0)
+ types = self._server.load (self._session_id, self.classname, [''],
+ self.properties)
for row in rset:
## Convert array into dictonary
! i = 0
objData = {}
for p in self.properties:
! objData [p] = rpc_to_native (row [i+1], types [0] [i])
! i += 1
objData ["gnue_id"] = row [0]
obj = newObject (self._server, self._session_id, self.classname,
objData)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gnue-appserver/src classrep/Namespace.py langua...,
Reinhard Mueller <=