commit-gnue
[Top][All Lists]
Advanced

[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)





reply via email to

[Prev in Thread] Current Thread [Next in Thread]