[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
r5743 - in trunk/gnue-appserver: samples src/classrep
From: |
johannes |
Subject: |
r5743 - in trunk/gnue-appserver: samples src/classrep |
Date: |
Tue, 20 Apr 2004 03:24:02 -0500 (CDT) |
Author: johannes
Date: 2004-04-20 03:24:00 -0500 (Tue, 20 Apr 2004)
New Revision: 5743
Added:
trunk/gnue-appserver/samples/update007-008.gsd
trunk/gnue-appserver/src/classrep/helpers.py
Modified:
trunk/gnue-appserver/samples/classrepository.gfd
trunk/gnue-appserver/samples/sample.gsd
trunk/gnue-appserver/src/classrep/Base.py
trunk/gnue-appserver/src/classrep/Class.py
trunk/gnue-appserver/src/classrep/Module.py
trunk/gnue-appserver/src/classrep/Procedure.py
trunk/gnue-appserver/src/classrep/Property.py
trunk/gnue-appserver/src/classrep/__init__.py
trunk/gnue-appserver/src/classrep/repository.ini
trunk/gnue-appserver/src/classrep/test.py
Log:
Added validation-cycle to the classrepository as well type-checks of
property-types and parameter-types. Procedures got a result-type definition.
Modified: trunk/gnue-appserver/samples/classrepository.gfd
===================================================================
--- trunk/gnue-appserver/samples/classrepository.gfd 2004-04-19 19:28:59 UTC
(rev 5742)
+++ trunk/gnue-appserver/samples/classrepository.gfd 2004-04-20 08:24:00 UTC
(rev 5743)
@@ -62,6 +62,9 @@
<field name="fldLanguage" field="gnue_language" max_length="10"/>
<field name="fldCode" field="gnue_code"/>
<field name="fldComment" field="gnue_comment" max_length="70"/>
+ <field name="fldType" field="gnue_type" max_length="35"/>
+ <field name="fldLength" field="gnue_length" typecast="number"/>
+ <field name="fldScale" field="gnue_scale" typecast="number"/>
<!-- After the block got the focus (including record-moves) construct
the current classname and set it into the unbound blocks field -->
@@ -76,7 +79,7 @@
</block>
- <block name="blkParameter" datasource="dtsParameter" rows="5">
+ <block name="blkParameter" datasource="dtsParameter" rows="4">
<field name="fldName" field="gnue_name" max_length="35"/>
<field name="fldType" field="gnue_type" max_length="35"/>
<field name="fldLength" field="gnue_length" typecast="number"/>
@@ -164,7 +167,13 @@
text="Language"/>
<label name="lblComment" c:height="1" c:width="7" c:x="1" c:y="5"
text="Comment"/>
- <label name="lblCode" c:height="1" c:width="4" c:x="1" c:y="15"
+ <label name="lblType" c:height="1" c:width="10" c:x="1" c:y="6"
+ text="Type"/>
+ <label name="lblLength" c:height="1" c:width="10" c:x="1" c:y="7"
+ text="Length"/>
+ <label name="lblScale" c:height="1" c:width="10" c:x="1" c:y="8"
+ text="Scale"/>
+ <label name="lblCode" c:height="1" c:width="4" c:x="1" c:y="16"
text="Code"/>
<entry name="entClassname" c:height="1" c:width="70" c:x="10" c:y="1"
@@ -177,33 +186,37 @@
block="blkProcedure" field="fldLanguage"/>
<entry name="entComment" c:height="1" c:width="68" c:x="10" c:y="5"
block="blkProcedure" field="fldComment"/>
- <entry name="entCode" c:height="10" c:width="79" c:x="1" c:y="16"
+ <entry name="entType" c:height="1" c:width="35" c:x="10" c:y="6"
+ block="blkProcedure" field="fldType"/>
+ <entry name="entLength" c:height="1" c:width="10" c:x="10" c:y="7"
+ block="blkProcedure" field="fldLength"/>
+ <entry name="entScale" c:height="1" c:width="10" c:x="10" c:y="8"
+ block="blkProcedure" field="fldScale"/>
+ <entry name="entCode" c:height="9" c:width="79" c:x="1" c:y="17"
block="blkProcedure" field="fldCode"/>
- <box name="ParameterBox" c:height="9" c:width="81" c:x="0" c:y="6"
+ <box name="ParameterBox" c:height="7" c:width="81" c:x="0" c:y="9"
label="Parameters"/>
- <label name="lblPName" c:height="1" c:width="4" c:x="14" c:y="7"
+ <label name="lblPName" c:height="1" c:width="4" c:x="14" c:y="10"
text="Name"/>
- <label name="lblPType" c:height="1" c:width="4" c:x="19" c:y="7"
+ <label name="lblPType" c:height="1" c:width="4" c:x="19" c:y="10"
text="Type"/>
- <label name="lblPLength" c:height="1" c:width="6" c:x="37" c:y="7"
+ <label name="lblPLength" c:height="1" c:width="6" c:x="37" c:y="10"
text="Length"/>
- <label name="lblPScale" c:height="1" c:width="5" c:x="44" c:y="7"
+ <label name="lblPScale" c:height="1" c:width="5" c:x="44" c:y="10"
text="Scale"/>
- <label name="lblPComment" c:height="1" c:width="7" c:x="51" c:y="7"
+ <label name="lblPComment" c:height="1" c:width="7" c:x="51" c:y="10"
text="Comment"/>
- <label name="lblPHint" c:height="1" c:width="71" c:x="2" c:y="13"
- text="Note: Please be sure to commit new procedures before adding
parameters!"/>
- <entry name="entPName" c:height="1" c:width="16" c:x="2" c:y="8"
+ <entry name="entPName" c:height="1" c:width="16" c:x="2" c:y="11"
block="blkParameter" field="fldName"/>
- <entry name="entPType" c:height="1" c:width="17" c:x="19" c:y="8"
+ <entry name="entPType" c:height="1" c:width="17" c:x="19" c:y="11"
block="blkParameter" field="fldType"/>
- <entry name="entPLength" c:height="1" c:width="6" c:x="37" c:y="8"
+ <entry name="entPLength" c:height="1" c:width="6" c:x="37" c:y="11"
block="blkParameter" field="fldLength"/>
- <entry name="entPScale" c:height="1" c:width="6" c:x="44" c:y="8"
+ <entry name="entPScale" c:height="1" c:width="6" c:x="44" c:y="11"
block="blkParameter" field="fldScale"/>
- <entry name="entPComment" c:height="1" c:width="28" c:x="51" c:y="8"
+ <entry name="entPComment" c:height="1" c:width="28" c:x="51" c:y="11"
block="blkParameter" field="fldComment"/>
</page>
Modified: trunk/gnue-appserver/samples/sample.gsd
===================================================================
--- trunk/gnue-appserver/samples/sample.gsd 2004-04-19 19:28:59 UTC (rev
5742)
+++ trunk/gnue-appserver/samples/sample.gsd 2004-04-20 08:24:00 UTC (rev
5743)
@@ -187,7 +187,6 @@
<value field="gnue_class">00000000000000000000000000001010</value>
<value field="gnue_name">country</value>
<value field="gnue_type">address_country</value>
- <value field="gnue_length">32</value>
<value field="gnue_comment">Country where the person lives</value>
<value field="gnue_nullable">TRUE</value>
</row>
Added: trunk/gnue-appserver/samples/update007-008.gsd
===================================================================
--- trunk/gnue-appserver/samples/update007-008.gsd 2004-04-19 19:28:59 UTC
(rev 5742)
+++ trunk/gnue-appserver/samples/update007-008.gsd 2004-04-20 08:24:00 UTC
(rev 5743)
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Schema definition created by GNUe Appserver's Schema Support.
+ Run this file through gnue-schema to create SQL scripts -->
+<schema author="Appserver SchemaSupport" title="Appserver Schema Dump"
+ version="1.0">
+ <tables>
+ <table name="gnue_procedure" action="extend">
+ <fields>
+ <field name="gnue_length"
+ description="Length of the procedures result" length="6"
type="number"/>
+ <field name="gnue_scale" description="Scale of the procedures result"
+ length="4" type="number"/>
+ <field name="gnue_type" description="Type of the procedures result"
+ length="35" type="string"/>
+ </fields>
+ <indexes/>
+ <constraints/>
+ </table>
+ </tables>
+ <data>
+ <tabledata name="gnue_property_dump" tablename="gnue_property">
+ <definition>
+ <column field="gnue_class" type="string(32)"/>
+ <column field="gnue_comment" type="string(70)"/>
+ <column field="gnue_id" type="string(32)"/>
+ <column field="gnue_length" type="number(6)"/>
+ <column field="gnue_module" type="string(32)"/>
+ <column field="gnue_name" type="string(35)"/>
+ <column field="gnue_nullable" type="boolean"/>
+ <column field="gnue_scale" type="number(4)"/>
+ <column field="gnue_type" type="string(35)"/>
+ </definition>
+ <rows>
+ <row>
+ <value field="gnue_class">00000000000000000000000000000040</value>
+ <value field="gnue_comment">Length of the procedures result</value>
+ <value field="gnue_id">0000000000000000000000000000004A</value>
+ <value field="gnue_length">6</value>
+ <value field="gnue_module">00000000000000000000000000000000</value>
+ <value field="gnue_name">length</value>
+ <value field="gnue_nullable">TRUE</value>
+ <value field="gnue_scale">0</value>
+ <value field="gnue_type">number</value>
+ </row>
+ <row>
+ <value field="gnue_class">00000000000000000000000000000040</value>
+ <value field="gnue_comment">Scale of the procedures result</value>
+ <value field="gnue_id">0000000000000000000000000000004B</value>
+ <value field="gnue_length">4</value>
+ <value field="gnue_module">00000000000000000000000000000000</value>
+ <value field="gnue_name">scale</value>
+ <value field="gnue_nullable">TRUE</value>
+ <value field="gnue_scale">0</value>
+ <value field="gnue_type">number</value>
+ </row>
+ <row>
+ <value field="gnue_class">00000000000000000000000000000040</value>
+ <value field="gnue_comment">Type of the procedures result</value>
+ <value field="gnue_id">00000000000000000000000000000049</value>
+ <value field="gnue_length">35</value>
+ <value field="gnue_module">00000000000000000000000000000000</value>
+ <value field="gnue_name">type</value>
+ <value field="gnue_nullable">TRUE</value>
+ <value field="gnue_type">string</value>
+ </row>
+ </rows>
+ </tabledata>
+ </data>
+</schema>
Modified: trunk/gnue-appserver/src/classrep/Base.py
===================================================================
--- trunk/gnue-appserver/src/classrep/Base.py 2004-04-19 19:28:59 UTC (rev
5742)
+++ trunk/gnue-appserver/src/classrep/Base.py 2004-04-20 08:24:00 UTC (rev
5743)
@@ -247,13 +247,24 @@
self._getSortorder (),
self._getColumns ())
if len (list) == 1:
- self._items [key] = self._getNewItem (list [0])
- return self._items [key]
+ newItem = self._getNewItem (list [0])
+ newItem.validate ()
+ self._items [key] = newItem
+ return newItem
raise self._itemNotFoundError (key)
+ # ---------------------------------------------------------------------------
+ # Remove a key from the internal dictionary
+ # ---------------------------------------------------------------------------
+ def __delitem__ (self, key):
+ del self._items [key]
+
+
+
+
# =============================================================================
# This class maps all dictionary-keys to properties
# =============================================================================
@@ -320,6 +331,19 @@
# ---------------------------------------------------------------------------
+ # Validate an instance
+ # ---------------------------------------------------------------------------
+
+ def validate (self):
+ """
+ Descendants can override this function to perform validations on a newly
+ created instance. Note: this function won't be called on instances created
+ by a reload ().
+ """
+ pass
+
+
+ # ---------------------------------------------------------------------------
# Update object references
# ---------------------------------------------------------------------------
Modified: trunk/gnue-appserver/src/classrep/Class.py
===================================================================
--- trunk/gnue-appserver/src/classrep/Class.py 2004-04-19 19:28:59 UTC (rev
5742)
+++ trunk/gnue-appserver/src/classrep/Class.py 2004-04-20 08:24:00 UTC (rev
5743)
@@ -21,10 +21,12 @@
#
# $Id$
+import sys
from Base import *
from Property import *
from Procedure import *
from Namespace import createName, splitName
+from helpers import ValidationError
# =============================================================================
@@ -214,6 +216,29 @@
# ---------------------------------------------------------------------------
+ # Validate a class definition
+ # ---------------------------------------------------------------------------
+
+ def validate (self):
+ for p in self.properties.values ():
+ try:
+ p.validate ()
+
+ except ValidationError:
+ del self.properties [p.fullName]
+ gDebug (2, "%s.%s: %s: %s" % (self.fullName, p.fullName,
+ sys.exc_info () [0], sys.exc_info () [1]))
+
+ for p in self.procedures.values ():
+ try:
+ p.validate ()
+
+ except ValidationError:
+ del self.procedures [p.fullName]
+ gDebug (2, "%s.%s: %s: %s" % (self.fullName, p.fullName,
+ sys.exc_info () [0], sys.exc_info () [1]))
+
+ # ---------------------------------------------------------------------------
# Replace references
# ---------------------------------------------------------------------------
Modified: trunk/gnue-appserver/src/classrep/Module.py
===================================================================
--- trunk/gnue-appserver/src/classrep/Module.py 2004-04-19 19:28:59 UTC (rev
5742)
+++ trunk/gnue-appserver/src/classrep/Module.py 2004-04-20 08:24:00 UTC (rev
5743)
@@ -152,6 +152,14 @@
# ---------------------------------------------------------------------------
+ # Validate a module
+ # ---------------------------------------------------------------------------
+
+ def validate (self):
+ for c in self.classes.values ():
+ c.validate ()
+
+ # ---------------------------------------------------------------------------
# replace module references
# ---------------------------------------------------------------------------
Modified: trunk/gnue-appserver/src/classrep/Procedure.py
===================================================================
--- trunk/gnue-appserver/src/classrep/Procedure.py 2004-04-19 19:28:59 UTC
(rev 5742)
+++ trunk/gnue-appserver/src/classrep/Procedure.py 2004-04-20 08:24:00 UTC
(rev 5743)
@@ -24,6 +24,7 @@
from Base import *
from Namespace import createName, splitName
from Parameter import *
+import helpers
# =============================================================================
# Exceptions
@@ -115,8 +116,34 @@
def __init__ (self, session, module, object, pDefs = None):
BaseObject.__init__ (self, session, 'gnue_procedure', object, pDefs)
- self.module = module
- self.fullName = createName (module.gnue_name, self.gnue_name)
+ self.module = module
+ self.fullName = createName (module.gnue_name, self.gnue_name)
+ self.isCalculated = False
self.parameters = ParameterDict (session, self)
+
+ # ---------------------------------------------------------------------------
+ # Validate a procedure
+ # ---------------------------------------------------------------------------
+
+ def validate (self):
+ """
+ This function verifies the procedure definition and validates all given
+ parameters.
+ """
+
+ helpers.verifyProcedure (self)
+
+ for pa in self.parameters.values ():
+ pa.validate ()
+
+ self.isCalculated = self.gnue_type is not None and \
+ len (self.parameters.keys ()) == 0 and \
+ self.gnue_name [:3].lower () == 'get'
+ if self.isCalculated:
+ self.calcFullName = createName (self.module.gnue_name,
+ self.gnue_name [3:])
+ else:
+ self.calcFullName = None
+
Modified: trunk/gnue-appserver/src/classrep/Property.py
===================================================================
--- trunk/gnue-appserver/src/classrep/Property.py 2004-04-19 19:28:59 UTC
(rev 5742)
+++ trunk/gnue-appserver/src/classrep/Property.py 2004-04-20 08:24:00 UTC
(rev 5743)
@@ -23,6 +23,7 @@
from Base import *
from Namespace import createName
+from helpers import verifyType
# =============================================================================
@@ -120,6 +121,9 @@
self.fullName = createName (self.module.gnue_name, self.gnue_name)
self.column = self.fullName
+ self.isReference = False
+ self.referencedClass = None
+
# build appserver specific type information
if self.gnue_type in ["string", "number"]:
if self.gnue_type == "number" and self.gnue_length and self.gnue_scale:
@@ -154,3 +158,20 @@
else:
self.dbFullType = self.dbType
+
+ # ---------------------------------------------------------------------------
+ # Validate a given property definition
+ # ---------------------------------------------------------------------------
+ def validate (self):
+ """
+ This function verifies the property type and sets the reference properties.
+ If a property definition is a reference-property @referencedClass holds the
+ referenced class definition.
+ """
+
+ res = verifyType (self.gnue_type, self.gnue_length, self.gnue_scale,
+ self.module.classes)
+ self.isReference = res is not None
+ self.referencedClass = res
+
+
Modified: trunk/gnue-appserver/src/classrep/__init__.py
===================================================================
--- trunk/gnue-appserver/src/classrep/__init__.py 2004-04-19 19:28:59 UTC
(rev 5742)
+++ trunk/gnue-appserver/src/classrep/__init__.py 2004-04-20 08:24:00 UTC
(rev 5743)
@@ -64,4 +64,7 @@
server.modules.reload ()
server.classes.reload ()
+ for module in server.modules.values ():
+ module.validate ()
+
return
Added: trunk/gnue-appserver/src/classrep/helpers.py
===================================================================
--- trunk/gnue-appserver/src/classrep/helpers.py 2004-04-19 19:28:59 UTC
(rev 5742)
+++ trunk/gnue-appserver/src/classrep/helpers.py 2004-04-20 08:24:00 UTC
(rev 5743)
@@ -0,0 +1,191 @@
+#
+# This file is part of GNU Enterprise.
+#
+# GNU Enterprise is free software; you can redistribute it
+# and/or modify it under the terms of the GNU General Public
+# License as published by the Free Software Foundation; either
+# version 2, or (at your option) any later version.
+#
+# GNU Enterprise is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with program; see the file COPYING. If not,
+# write to the Free Software Foundation, Inc., 59 Temple Place
+# - Suite 330, Boston, MA 02111-1307, USA.
+#
+# Copyright 2001-2004 Free Software Foundation
+#
+# $Id: $
+
+import gnue
+
+BASE_TYPES = ['boolean', 'date', 'datetime', 'id', 'number', 'string', 'time']
+
+
+# =============================================================================
+# Exceptions
+# =============================================================================
+
+class ValidationError (gException):
+ pass
+
+class TypeNameError (ValidationError):
+ def __init__ (self, typename):
+ msg = u_("'%s' is not a valid type.") % typename
+ gException.__init__ (self, msg)
+
+class TypeFormatError (ValidationError):
+ pass
+
+
+# -----------------------------------------------------------------------------
+# Check if a combination of typename, length and scale is valid
+# -----------------------------------------------------------------------------
+
+def verifyBasetype (typename, length, scale):
+ """
+ This function verifies a given typename with length and scale. If this
+ combination makes no sense a TypeFormatError will be raised. If typename
+ is no valid base type a TypeNameError will be raised.
+ """
+ if typename is None:
+ raise TypeNameError, (repr (typename))
+
+ if not typename in BASE_TYPES:
+ raise TypeNameError, (typename)
+
+ if typename == 'string':
+ if scale is not None and scale:
+ raise TypeFormatError, _("string does not support 'scale'")
+
+ if typename in ['id', 'date', 'time', 'datetime', 'boolean']:
+ if length is not None and length:
+ raise TypeFormatError, u_("%s does not support 'length'") % typename
+ if scale is not None and scale:
+ raise TypeFormatError, u_("%s does not support 'scale'") % typename
+
+ if typename == 'number':
+ if scale is not None and scale:
+ if length is None or not length:
+ raise TypeFormatError, u_("number without 'length'")
+
+
+# -----------------------------------------------------------------------------
+# Check if a given reference is valid
+# -----------------------------------------------------------------------------
+
+def verifyReference (reference, length, scale, classes):
+ """
+ This function verifies if @reference is a valid reference type. @length and
+ @scale must be None or zero and the given class dictionary (@classes) must
+ have a classe named @reference.
+ """
+ if classes.has_key (reference):
+ if length is not None and length:
+ raise TypeFormatError, u_("Reference types must not have a 'length'")
+ if scale is not None and scale:
+ raise TypeFormatError, u_("Reference types must not have a 'scale'")
+
+ return True
+ else:
+ return False
+
+
+# -----------------------------------------------------------------------------
+# Verify a given type
+# -----------------------------------------------------------------------------
+
+def verifyType (typename, length, scale, classes):
+ """
+ This function verifies a given type, length and scale combination, optionally
+ using the given class dictionary for lookups of references.
+ """
+ if verifyReference (typename, length, scale, classes):
+ return classes [typename]
+
+ else:
+ verifyBasetype (typename, length, scale)
+ return None
+
+
+# -----------------------------------------------------------------------------
+# Verify a procedure definition
+# -----------------------------------------------------------------------------
+def verifyProcedure (aProc):
+ """
+ This function checks the resulttype of a procedure definition, and all
+ parameter types (if available).
+ """
+
+ # If a result type is specified, check it
+ if aProc.gnue_type is not None:
+ verifyBasetype (aProc.gnue_type, aProc.gnue_length, aProc.gnue_scale)
+
+ else:
+ # otherwise there must not be anything concerning a result type
+ if aProc.gnue_length is not None and aProc.gnue_length:
+ raise TypeFormatError, u_("%s: Procedure has no result, but a 'length' "
+ "is specified.") % aProc.fullName
+ if aProc.gnue_scale is not None and aProc.gnue_scale:
+ raise TypeFormatError, u_("%s: Procedure has no result, but a 'scale' "
+ "is specified.") % aProc.fullName
+
+ # verify all given parameter types
+ for pa in aProc.parameters.values ():
+ verifyBasetype (pa.gnue_type, pa.gnue_length, pa.gnue_scale)
+
+
+
+# -----------------------------------------------------------------------------
+# unit self test code
+# -----------------------------------------------------------------------------
+
+if __name__ == '__main__':
+ import sys
+
+ from gnue.appserver.test import testApp
+
+ sm = testApp ().getSessionManager ()
+
+ def check (name, length = None, scale = None):
+ tstr = name
+ if length is not None or scale is not None:
+ tstr += "("
+ if length is not None:
+ tstr += "%d" % length
+ if scale is not None:
+ tstr += ",%d" % scale
+ tstr += ")"
+
+ try:
+ verifyType (name, length, scale, sm.classes)
+ print tstr, "Ok"
+
+ except:
+ print tstr
+ print " %s: %s" % (sys.exc_info () [0], sys.exc_info () [1])
+
+
+ check ('string')
+ check ('string', 5)
+ check ('string', 5, 2)
+ check ('date')
+ check ('Date', 5)
+ check ('date', 5, 0)
+ check ('time')
+ check ('time', 0, 1)
+ check ('datetime')
+ check ('datetime', 5,1)
+ check ('boolean')
+ check ('boolean', 5)
+ check ('number')
+ check ('number', 0, 3)
+ check ('number', 5)
+ check ('number', 5, 1)
+ check ('address_country')
+ check ('address_country', None, 3)
+ check ('foo_bar')
+ check (None)
Property changes on: trunk/gnue-appserver/src/classrep/helpers.py
___________________________________________________________________
Name: svn:keywords
+ svn:Id
Modified: trunk/gnue-appserver/src/classrep/repository.ini
===================================================================
--- trunk/gnue-appserver/src/classrep/repository.ini 2004-04-19 19:28:59 UTC
(rev 5742)
+++ trunk/gnue-appserver/src/classrep/repository.ini 2004-04-20 08:24:00 UTC
(rev 5743)
@@ -347,6 +347,39 @@
gnue_comment = Comment
gnue_nullable =
+[gnue_procedure.gnue_type]
+gnue_id = 00000000000000000000000000000049
+gnue_class = 00000000000000000000000000000040
+gnue_module = 00000000000000000000000000000000
+gnue_name = type
+gnue_type = string
+gnue_length = 35
+gnue_scale =
+gnue_comment = Type of the procedures result
+gnue_nullable =
+
+[gnue_procedure.gnue_length]
+gnue_id = 0000000000000000000000000000004A
+gnue_class = 00000000000000000000000000000040
+gnue_module = 00000000000000000000000000000000
+gnue_name = length
+gnue_type = number
+gnue_length = 6
+gnue_scale =
+gnue_comment = Length of the procedures result
+gnue_nullable =
+
+[gnue_procedure.gnue_scale]
+gnue_id = 0000000000000000000000000000004B
+gnue_class = 00000000000000000000000000000040
+gnue_module = 00000000000000000000000000000000
+gnue_name = scale
+gnue_type = number
+gnue_length = 4
+gnue_scale =
+gnue_comment = Scale of the procedures result
+gnue_nullable =
+
; -----------------------------------------------------------------------------
; parameters
; -----------------------------------------------------------------------------
Modified: trunk/gnue-appserver/src/classrep/test.py
===================================================================
--- trunk/gnue-appserver/src/classrep/test.py 2004-04-19 19:28:59 UTC (rev
5742)
+++ trunk/gnue-appserver/src/classrep/test.py 2004-04-20 08:24:00 UTC (rev
5743)
@@ -51,6 +51,10 @@
ap = m.classes ['address_person']
for pr in ap.procedures.values ():
print "%s coded in %s" % (pr.fullName, pr.gnue_language)
+ print "Type of result:", repr (pr.gnue_type)
+ if pr.isCalculated:
+ print "(%s usable as calculated property '%s')" % (pr.fullName,
+ pr.calcFullName)
for para in pr.parameters.values ():
print "Parameter: %s of type %s" % (para.fullName, para.gnue_type)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- r5743 - in trunk/gnue-appserver: samples src/classrep,
johannes <=