[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
r5835 - trunk/gnue-common/src/datasources/drivers/appserver/Schema/Disco
From: |
johannes |
Subject: |
r5835 - trunk/gnue-common/src/datasources/drivers/appserver/Schema/Discovery |
Date: |
Wed, 26 May 2004 12:55:10 -0500 (CDT) |
Author: johannes
Date: 2004-05-26 12:55:09 -0500 (Wed, 26 May 2004)
New Revision: 5835
Modified:
trunk/gnue-common/src/datasources/drivers/appserver/Schema/Discovery/Introspection.py
Log:
Conditions are now in prefix notation, so the introspection will work again;
added calculated fields to be shown too.
Modified:
trunk/gnue-common/src/datasources/drivers/appserver/Schema/Discovery/Introspection.py
===================================================================
---
trunk/gnue-common/src/datasources/drivers/appserver/Schema/Discovery/Introspection.py
2004-05-26 14:48:24 UTC (rev 5834)
+++
trunk/gnue-common/src/datasources/drivers/appserver/Schema/Discovery/Introspection.py
2004-05-26 17:55:09 UTC (rev 5835)
@@ -74,7 +74,7 @@
if not type in ['object', None]:
return []
- cond = {}
+ cond = []
else:
cond = self._getNameCondition (name)
@@ -94,7 +94,7 @@
"type" : "object",
"gnue_id": classid}
- result.append (GIntrospection.Schema (attrs,
+ result.append (GIntrospection.Schema (attrs,
getChildSchema = self._getChildSchema))
if len (result):
@@ -143,7 +143,9 @@
if self._modules [moduleId] == module:
break
- return {'gnue_module': moduleId, 'gnue_name': classname}
+ return ['and', ['eq', ['field', 'gnue_module'], ['const', moduleId]],
+ ['eq', ['field', 'gnue_name'], ['const', classname]]]
+
@@ -159,8 +161,9 @@
sess = self._connection._sm
sessId = self._connection._sess_id
- listId = sess.request (sessId, 'gnue_property',
- {'gnue_class': parent.gnue_id}, sort, fields)
+ listId = sess.request (sessId, 'gnue_property',
+ ['eq', ['field', 'gnue_class'], ['const', parent.gnue_id]],
+ sort, fields)
for rec in sess.fetch (sessId, listId, 0, sess.count (sessId, listId)):
name = "%s_%s" % (self._modules [rec [1]], rec [2])
@@ -185,5 +188,45 @@
attrs ['length'] = 32
result.append (GIntrospection.Schema (attrs))
+
+ #
+ # add calculated properties
+ #
+ listId = sess.request (sessId, 'gnue_procedure',
+ ['and', ['eq', ['field', 'gnue_class'], ['const', parent.gnue_id]],
+ ['like', ['field', 'gnue_name'], ['const', 'get%']],
+ ['notnull', ['field', 'gnue_type']]],
+ sort, fields)
+ for rec in sess.fetch (sessId, listId, 0, sess.count (sessId, listId)):
+ pList = sess.request (sessId, 'gnue_parameter',
+ ['eq', ['field', 'gnue_procedure'], ['const', rec [0]]],
+ [], ['gnue_id'])
+
+ if sess.count (sessId, pList):
+ continue
+
+ name = "%s_%s" % (self._modules [rec [1]], rec [2] [3:])
+
+ if rec [3] == 'number':
+ datatype = 'number'
+ elif rec [3] in ['date', 'datetime']:
+ datatype = 'date'
+ else:
+ datatype = 'text'
+
+ attrs = {'id' : "%s.%s" % (parent.id, name.lower ()),
+ 'name' : name,
+ 'datatype' : datatype,
+ 'precision' : rec [5],
+ 'nativetype': 'unknown',
+ 'length' : rec [4],
+ 'required' : 0}
+
+ # reference properties have a fixed length
+ if '_' in datatype:
+ attrs ['length'] = 32
+
+ result.append (GIntrospection.Schema (attrs))
+
return result
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- r5835 - trunk/gnue-common/src/datasources/drivers/appserver/Schema/Discovery,
johannes <=