commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gnue/gnue-reports samples/location/zip-by-state...


From: Jason Cater
Subject: gnue/gnue-reports samples/location/zip-by-state...
Date: Wed, 23 May 2001 15:54:42 -0700

CVSROOT:        /home/cvs
Module name:    gnue
Changes by:     Jason Cater <address@hidden>    01/05/23 15:54:42

Modified files:
        gnue-reports/samples/location: zip-by-state.grd 
        gnue-reports/src: GREngine.py GRParameters.py GRParser.py 
                          GRReport.py GRSortOptions.py grrun 

Log message:
        Several miscellaneous changes; started on outputting report text;  
Parameters and Sort Options can be set and default values correctly pulled if 
no value specified.  grrun loads and attempts to load a report; supports quite 
a few command line options.

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-reports/samples/location/zip-by-state.grd.diff?cvsroot=OldCVS&tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-reports/src/GREngine.py.diff?cvsroot=OldCVS&tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-reports/src/GRParameters.py.diff?cvsroot=OldCVS&tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-reports/src/GRParser.py.diff?cvsroot=OldCVS&tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-reports/src/GRReport.py.diff?cvsroot=OldCVS&tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-reports/src/GRSortOptions.py.diff?cvsroot=OldCVS&tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-reports/src/grrun.diff?cvsroot=OldCVS&tr1=1.2&tr2=1.3&r1=text&r2=text

Patches:
Index: gnue/gnue-reports/samples/location/zip-by-state.grd
diff -u gnue/gnue-reports/samples/location/zip-by-state.grd:1.1 
gnue/gnue-reports/samples/location/zip-by-state.grd:1.2
--- gnue/gnue-reports/samples/location/zip-by-state.grd:1.1     Wed May 23 
09:20:34 2001
+++ gnue/gnue-reports/samples/location/zip-by-state.grd Wed May 23 15:54:42 2001
@@ -2,13 +2,13 @@
 <report>
 
   <parameters> 
-    <parameter id="state" type="char" description="Company"/> 
-    <parameter id="vendor1" type="char" description="Starting Vendor" 
default="00000000" 
+    <parameter id="state" type="char" description="State"/> 
+    <!--parameter id="vendor1" type="char" description="Starting Vendor" 
default="00000000" 
                required="no" source="select" limited="no"/> 
     <parameter id="vendor2" type="char" description="Ending Vendor" 
default="ZZZZZZZZ" 
                required="no"/> 
     <parameter id="withbal" type="char" description="Include Balances" 
required="yes"
-               source="list" limited="yes"/>
+               source="list" limited="yes"/>  -->
   </parameters>        
 
 
Index: gnue/gnue-reports/src/GREngine.py
diff -u gnue/gnue-reports/src/GREngine.py:1.3 
gnue/gnue-reports/src/GREngine.py:1.4
--- gnue/gnue-reports/src/GREngine.py:1.3       Wed May 23 09:20:34 2001
+++ gnue/gnue-reports/src/GREngine.py   Wed May 23 15:54:42 2001
@@ -35,14 +35,22 @@
 import GRParser
 from gnue.common import GDebug
 
+
 class GREngine: 
 
   def __init__(self, connectionManager): 
     self._connectionManager = connectionManager
     GDebug.printMesg(1,'GREngine instance started: %s' % 
self._connectionManager)
 
+  #
+  # Run the report (reportFile) and generate the XML output. 
+  # Write the XML output to handle tempFileHandle 
+  #
+  def processReport(self, reportFile, parameters={}, sortoption=None): 
+
+    import sys
+    outputHandle = sys.stdout
 
-  def processReport(self, reportFile, parameters={}): 
     drive = os.path.splitdrive(reportFile) 
     if len(drive[0]):
       fileHandle = open(reportFile,'r')
@@ -51,8 +59,7 @@
 
     report = GRParser.loadReport(fileHandle, self._connectionManager)
 
-    import sys
-    report.process(sys.stdout)
+    report.process(outputHandle, parameters, sortoption)
 
     #print report.dumpXML(1)
 
Index: gnue/gnue-reports/src/GRParameters.py
diff -u gnue/gnue-reports/src/GRParameters.py:1.2 
gnue/gnue-reports/src/GRParameters.py:1.3
--- gnue/gnue-reports/src/GRParameters.py:1.2   Mon Apr 23 09:28:06 2001
+++ gnue/gnue-reports/src/GRParameters.py       Wed May 23 15:54:42 2001
@@ -30,14 +30,63 @@
 #
 
 from gnue.common.GObjects import *
+import string
 
 class GRParameters (GObj): 
   def __init__ (self, parent): 
     GObj.__init__(self, parent, type='GRParameters') 
+    self._parameters = {}
 
+  # 
+  # Set the parameters actually supplied by the user
+  #
+  def setUserParameters(self, parameters): 
+    if parameters == None: 
+      self._parameters = {}
+    else: 
+      self._parameters = parameters
 
+  #
+  # Get a user parameter. If parameter not specified, pull default value
+  #
+  def getParameter(self, parameter): 
+    if self._parameters.has_key(string.lower(parameter)): 
+      return self._paramters[string.lower(parameter)]
+    else: 
+      rv = None
+      for child in children: 
+        if string.lower(child.id) == string.lower(parameter):
+          rv = child.default
+    return rv
+    
+  #
+  # Return an xml markup of the user supplied or default  
+  # parameters used to run the current report
+  #
+  def getRunOptionsAsXML(self): 
+    xml = ""
+
+    parameters = {}
+
+    for child in self._children: 
+      if child.default != None: 
+        parameters[string.lower(child.id)] = child.default
+
+    for param in self._parameters.keys(): 
+      parameters[string.lower(param)] = self._parameters[param]
+
+
+    for param in parameters.keys(): 
+      xml = xml + '    <GNUe-request-parameter 
id="%s">%s</GNUe-request-parameter>\n' % \
+            (param, parameters[param])
+
+    return xml
+
+
 class GRParameter (GObj): 
   def __init__ (self, parent): 
     GObj.__init__(self, parent, type='GRParameter') 
-
+    self.id = ""
+    self.required = 0
+    self.default = None
 
Index: gnue/gnue-reports/src/GRParser.py
diff -u gnue/gnue-reports/src/GRParser.py:1.5 
gnue/gnue-reports/src/GRParser.py:1.6
--- gnue/gnue-reports/src/GRParser.py:1.5       Wed May 23 09:20:34 2001
+++ gnue/gnue-reports/src/GRParser.py   Wed May 23 15:54:42 2001
@@ -75,7 +75,7 @@
       'parameter':    (GRParameter, { 'id':          (1, 1, char, None), 
                                       'required':    (0, 0, bool, 0), 
                                       'limited':     (0, 0, bool, 0), 
-                                      'default':     (0, 0, bool, 0), 
+                                      'default':     (0, 0, char, None), 
                                       'description': (1, 0, char, None), 
                                       'source':      (0, 0, char, None), 
                                       'type':        (0, 0, char, "char")}, 1),
Index: gnue/gnue-reports/src/GRReport.py
diff -u gnue/gnue-reports/src/GRReport.py:1.5 
gnue/gnue-reports/src/GRReport.py:1.6
--- gnue/gnue-reports/src/GRReport.py:1.5       Wed May 23 09:20:34 2001
+++ gnue/gnue-reports/src/GRReport.py   Wed May 23 15:54:42 2001
@@ -33,7 +33,12 @@
 from gnue.common import GDebug
 import sys
 import GRParser
+import GRParameters
+import GRLayout
+import GRSortOptions
+import GRSources
 
+
 class GRReport(GObj): 
   def __init__(self, parent=None): 
     GObj.__init__(self, parent, type='GRReport')
@@ -64,22 +69,52 @@
   # Process the report and generate output per the report definition.
   # Destination must be a file handle (StringIO will work as well) 
   #
-  def process(self, dest=sys.stdout): 
+  def process(self, dest, parameters={}, sortoption=None): 
  
     # Connect to databases
     GDebug.printMesg(3,"Initializing DataSource Connections")
     self.walk(self.initConnections)
+
+
+    self._parameters  = self.getChildOfType('GRParameters') or \
+                            GRParameters.GRParameters(self)
+    self._sortoptions = self.getChildOfType('GRSortOptions') or \
+                            GRSortOptions.GRSortOptions(self)
+    self._sources =     self.getChildOfType('GRSources')
+    self._layout =      self.getChildOfType('GRLayout')
+    #
+    # We need to create exceptions if _sources or _parameters is None
+    #   (.. NoLayoutDefinedException, NoSourcesDefinedException, etc)
+    #
+
+
+    # Load the user-specified parameters
+    self._parameters.setUserParameters(parameters)
+
+    # .. and the sort option
+    self._sortoptions.setSortOption(sortoption)
+
+    # 
+    dest.write ('<?xml version="1.0"?>\n')
+    dest.write ("<GNUe-report-output>\n") 
+    dest.write ("  <GNUe-report-request>\n")
+    dest.write (self._parameters.getRunOptionsAsXML())
+    dest.write (self._sortoptions.getRunOptionsAsXML()) 
+    dest.write ("  </GNUe-report-request>\n")
+
+
+
+    dest.write ("</GNUe-report-output>\n") 
+
+
+
+  def getChildOfType(self, type): 
+    rv = None
+    for child in self._children: 
+      if child.getObjectType() == type: 
+        rv = child 
+        break
+    return rv
 
-    self._parameters = None
-    self._sources = None
-    self._layout = None
-    self._sortoptions = None
-    self.walk(self.indexObjects)
-
-    dest.write ("Bob was here!\n")
 
 
-  def indexObjects(self, object): 
-    
-    # Connect 
-    self._parameters = None
Index: gnue/gnue-reports/src/GRSortOptions.py
diff -u gnue/gnue-reports/src/GRSortOptions.py:1.1 
gnue/gnue-reports/src/GRSortOptions.py:1.2
--- gnue/gnue-reports/src/GRSortOptions.py:1.1  Mon Apr 23 09:28:06 2001
+++ gnue/gnue-reports/src/GRSortOptions.py      Wed May 23 15:54:42 2001
@@ -32,16 +32,58 @@
 
 from gnue.common.GObjects import *
 
+
+#
+# 
+#
 class GRSortOptions (GObj): 
+
   def __init__(self, parent): 
     GObj.__init__(self, parent, type='GRSortOptions')
+    self._sortoption = None
+    self._default = None
+
+  #
+  # Return an xml markup of the user supplied or default  
+  # sort option used to run the current report
+  #
+  def getRunOptionsAsXML(self): 
+    if self.getSortOption() == None: 
+      return ""
+    else: 
+      return '    <GNUe-request-sortoption id="%s"/>\n' % self.getSortOption()
 
+  #
+  # Set the sort option to use 
+  #
+  def setSortOption(self, sortoption): 
+    self._sortoption = sortoption
 
+  #
+  # Return the selected sort option
+  #
+  def getSortOption(self): 
+    if self._sortoption != None: 
+      return self._sortoption 
+    else: 
+      return self._default
+
+#
+# 
+#
 class GRSortOption (GObj): 
   def __init__(self, parent): 
     GObj.__init__(self, parent, type='GRSortOption')
+    self.default = 0
+
+  def buildObject(self): 
+    if self.default: 
+      self._parent._default = self.id
 
 
+#
+# 
+#
 class GRSortColumn (GObj): 
   def __init__(self, parent): 
     GObj.__init__(self, parent, type='GRSortColumn')
Index: gnue/gnue-reports/src/grrun
diff -u gnue/gnue-reports/src/grrun:1.2 gnue/gnue-reports/src/grrun:1.3
--- gnue/gnue-reports/src/grrun:1.2     Wed May 23 09:20:34 2001
+++ gnue/gnue-reports/src/grrun Wed May 23 15:54:42 2001
@@ -95,6 +95,10 @@
     except:
       self.handleStartupError ("No Report Definition File Specified.")
 
+
+    #
+    # Get the user supplied parameters
+    #
     paramList = self.ARGUMENTS[1:]
 
     userParameters = {}
@@ -109,9 +113,17 @@
       GDebug.printMesg(2,'Param "%s"="%s" ' % \
            (lower(psplit[0]), join(psplit[1:],'=')))
 
+    #
+    # Get the user supplied sortoption
+    #
+    if len(self.OPTIONS["sortoption"]): 
+      sortoption = self.OPTIONS["sortoption"] 
+    else:
+      sortoption = None
+
 
     GREngine(self.getConnectionManager()).processReport(reportfile, \
-        parameters=userParameters)
+        parameters=userParameters, sortoption=sortoption)
 
 
 # This is a temporary solution to getting a login



reply via email to

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