[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gnue/gnue-reports samples/location/zip-by-state...,
Jason Cater <=