commit-gnue
[Top][All Lists]
Advanced

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

gnue/gnue-reports INSTALL README samples/locati...


From: Jason Cater
Subject: gnue/gnue-reports INSTALL README samples/locati...
Date: Fri, 25 May 2001 01:19:06 -0700

CVSROOT:        /home/cvs
Module name:    gnue
Changes by:     Jason Cater <address@hidden>    01/05/25 01:18:35

Modified files:
        gnue-reports   : INSTALL README 
        gnue-reports/samples/location: zip-by-state.grd 
        gnue-reports/src: GREngine.py GRLayout.py GRParser.py 
                          GRReport.py GRSources.py 
Added files:
        gnue-reports/src: GRExceptions.py 

Log message:
        Made minor changes to documentation

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-reports/INSTALL.diff?cvsroot=OldCVS&tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-reports/README.diff?cvsroot=OldCVS&tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-reports/samples/location/zip-by-state.grd.diff?cvsroot=OldCVS&tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-reports/src/GRExceptions.py?cvsroot=OldCVS&rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-reports/src/GREngine.py.diff?cvsroot=OldCVS&tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-reports/src/GRLayout.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.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-reports/src/GRReport.py.diff?cvsroot=OldCVS&tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-reports/src/GRSources.py.diff?cvsroot=OldCVS&tr1=1.1&tr2=1.2&r1=text&r2=text

Patches:
Index: gnue/gnue-reports/INSTALL
diff -u gnue/gnue-reports/INSTALL:1.1 gnue/gnue-reports/INSTALL:1.2
--- gnue/gnue-reports/INSTALL:1.1       Wed Apr 11 10:08:32 2001
+++ gnue/gnue-reports/INSTALL   Fri May 25 01:18:35 2001
@@ -0,0 +1,4 @@
+Currently, GNUe-Reports is not far enough along to justify an installation 
+script. (There is nothing to install :) 
+
+See README for information on testing GNUe-Reports.
Index: gnue/gnue-reports/README
diff -u gnue/gnue-reports/README:1.2 gnue/gnue-reports/README:1.3
--- gnue/gnue-reports/README:1.2        Thu May 24 08:59:17 2001
+++ gnue/gnue-reports/README    Fri May 25 01:18:35 2001
@@ -1,7 +1,14 @@
-Reports is in an early alpha state and is not currently useful.
+GNUe-Reports is in an early alpha state and is not currently useful.
 You have been warned :) 
 
+GNUe-Reports requires gnue-common to be installed.
+
+In the src directory, there is a "grrun" program.  It creates a 
+Report Engine, passes the engine a report, and prints the output 
+from the engine to stdout.  Execute "grrun --help" to see all 
+available run-time options (user parameters, sorting options, etc).  
+
 For questions, use the reports mailing list at http://lists.gnue.org/ 
 or visit us in IRC at irc.openprojects.net, channel #gnuenterprise
 
--- Jason Cater
+-- Jason Cater (jcater) 
Index: gnue/gnue-reports/samples/location/zip-by-state.grd
diff -u gnue/gnue-reports/samples/location/zip-by-state.grd:1.2 
gnue/gnue-reports/samples/location/zip-by-state.grd:1.3
--- gnue/gnue-reports/samples/location/zip-by-state.grd:1.2     Wed May 23 
15:54:42 2001
+++ gnue/gnue-reports/samples/location/zip-by-state.grd Fri May 25 01:18:35 2001
@@ -35,8 +35,19 @@
 
 
   <layout>
-    <section group="main" pagebreak="">
-      <field source="zips" name="bob"/>
+    <section group="main">
+
+      (Some random text)
+
+      <field source="zips" name="zipcode"/>
+      <field source="zips" name="city"/>
+
+      (Some more random text)
+
+      <section group="state" source="states">
+        <field source="states" name="description"/>
+      </section>
+
     </section>
   </layout>
 
Index: gnue/gnue-reports/src/GREngine.py
diff -u gnue/gnue-reports/src/GREngine.py:1.4 
gnue/gnue-reports/src/GREngine.py:1.5
--- gnue/gnue-reports/src/GREngine.py:1.4       Wed May 23 15:54:42 2001
+++ gnue/gnue-reports/src/GREngine.py   Fri May 25 01:18:35 2001
@@ -61,6 +61,8 @@
 
     report.process(outputHandle, parameters, sortoption)
 
-    #print report.dumpXML(1)
+    GDebug.printMesg(999, '-'*60)
+    GDebug.printMesg(999, report.dumpXML(1))
+    GDebug.printMesg(999, '-'*60)
 
 
Index: gnue/gnue-reports/src/GRLayout.py
diff -u gnue/gnue-reports/src/GRLayout.py:1.2 
gnue/gnue-reports/src/GRLayout.py:1.3
--- gnue/gnue-reports/src/GRLayout.py:1.2       Mon Apr 23 09:28:06 2001
+++ gnue/gnue-reports/src/GRLayout.py   Fri May 25 01:18:35 2001
@@ -41,6 +41,17 @@
   def __init__(self, parent):
     GObj.__init__(self, parent, type='GRLayout')
 
+  def buildObject(self): 
+    # If there is more than one object attached to a layout 
+    # object, then create an unattached section to contain them.
+    if len(self._children) > 1: 
+      temp = self._children
+      self._children = []
+      section = GRSection(self)
+      section._children = temp
+      section.buildObject()
+
+
 
 class GRField (GRLayoutElement): 
   def __init__(self, parent):
Index: gnue/gnue-reports/src/GRParser.py
diff -u gnue/gnue-reports/src/GRParser.py:1.6 
gnue/gnue-reports/src/GRParser.py:1.7
--- gnue/gnue-reports/src/GRParser.py:1.6       Wed May 23 15:54:42 2001
+++ gnue/gnue-reports/src/GRParser.py   Fri May 25 01:18:35 2001
@@ -84,9 +84,9 @@
                                       'description': (1, 0, char, None), 
                                       'default':     (0, 0, bool, 0)   }, 1),
       'sortcolumn':   (GRSortColumn,{ 'name':        (1, 0, char, None)}, 1), 
-      'layout':       (GRLayout,    { 'format':      (0, 0, char, None)}, 1), 
+      'layout':       (GRLayout,    { 'format':      (0, 0, char, None)}, 0), 
       'section':      (GRSection,   { 'group':       (0, 0, char, None), 
-                                      'pagebreak':   (0, 0, bool, 0)   }, 1), 
+                                      'source':      (0, 0, char, None)}, 0), 
       'field':        (GRField,     { 'name':        (1, 0, char, None), 
                                       'source':      (0, 0, char, None), 
                                       'format':      (0, 0, char, None)}, 1), 
@@ -95,49 +95,6 @@
                                       'format':      (0, 0, char, None)}, 1), 
       'sources':      (GRSources,   {                                  }, 1), 
       'datasource':   (GRDataSource,  GDataSource.tagAttributes         , 1), 
-#      'query':        (GRQquery,    { 'id':          (1, 1, char, None), 
-#                                      'uniqueness':  (0, 0, char, None)}, 1), 
-#      'fields':       (GRQfields,   {                                  }, 1), 
-#      'subquery':     (GRQsubquery, {                                  }, 1), 
-#      'fields':       (GRQfields,   {                                  }, 1), 
-#      'columns':      (GRQcolumns,  {                                  }, 1), 
-#      'field':        (GRQfield,    { 'id':          (1, 1, char, None)}, 1), 
-#      'subcolumn':    (GRQsubcolumn,{                                  }, 1), 
-#      'source':       (GRQsource,   { 'id':          (1, 1, char, None)}, 1), 
-#      'table':        (GRQtable,    { 'name':        (1, 0, char, None)}, 1), 
-#      'func':         (GRQfunc,     { 'name':        (1, 0, char, None)}, 1), 
-#      'column':       (GRQcolumn,   { 'name':        (1, 0, char, None)}, 1), 
-#      'sources':      (GRQsources,  {                                  }, 1), 
-#      'conditions':   (GRQconditions,{                                 }, 1), 
-#      'groupby':      (GRQgroupby,  {                                  }, 1), 
-#      'having':       (GRQhaving,   {                                  }, 1), 
-#      'union':        (GRQunion,    { 'type':        (1, 0, char, None)}, 1), 
-#      'const':        (GRQconst,    { 'type':        (1, 0, char, None)}, 1), 
-#      'add':          (GRQadd,      {                                  }, 1), 
-#      'sub':          (GRQsub,      {                                  }, 1), 
-#      'mul':          (GRQmul,      {                                  }, 1), 
-#      'div':          (GRQdiv,      {                                  }, 1), 
-#      'and':          (GRQand,      {                                  }, 1), 
-#      'or':           (GRQor,       {                                  }, 1), 
-#      'not':          (GRQnot,      {                                  }, 1), 
-#      'negate':       (GRQnegate,   {                                  }, 1), 
-#      'eq':           (GRQeq,       {                                  }, 1), 
-#      'ne':           (GRQne,       {                                  }, 1), 
-#      'gt':           (GRQgt,       {                                  }, 1), 
-#      'ge':           (GRQge,       {                                  }, 1), 
-#      'lt':           (GRQlt,       {                                  }, 1), 
-#      'le':           (GRQle,       {                                  }, 1), 
-#      'like':         (GRQlike,     {                                  }, 1), 
-#      'notlike':      (GRQnotlike,  {                                  }, 1), 
-#      'between':      (GRQbetween,  {                                  }, 1), 
-#      'notbetween':   (GRQnotbetween,{                                 }, 1), 
-#      'count':        (GRQcount,    {                                  }, 1), 
-#      'countdistinct':(GRQcountdistinct,{                              }, 1), 
-#      'countall':     (GRQcountall, {                                  }, 1), 
-#      'sum':          (GRQsum,      {                                  }, 1), 
-#      'avg':          (GRQavg,      {                                  }, 1), 
-#      'max':          (GRQmax,      {                                  }, 1), 
-#      'min':          (GRQmin,      {                                  }, 1) 
     } 
 
     #
Index: gnue/gnue-reports/src/GRReport.py
diff -u gnue/gnue-reports/src/GRReport.py:1.6 
gnue/gnue-reports/src/GRReport.py:1.7
--- gnue/gnue-reports/src/GRReport.py:1.6       Wed May 23 15:54:42 2001
+++ gnue/gnue-reports/src/GRReport.py   Fri May 25 01:18:35 2001
@@ -37,6 +37,7 @@
 import GRLayout
 import GRSortOptions
 import GRSources
+import GRExceptions
 
 
 class GRReport(GObj): 
@@ -54,12 +55,6 @@
                          % (object.name, self._connections) )    
       object.setConnectionManager(self._connections)
 
-  def initConnections(self, object): 
-    if object.getObjectType() == "GRDataSource": 
-      GDebug.printMesg(3,"Connecting DataSource %s to %s" \
-                         % (object.name, object.database) )    
-      object.connect()
-
   def dumpXML(self, treeDump=None, gap="  "):
     return GObj.dumpXML(self, \
         GRParser.xmlReportHandler().xmlElements, treeDump, gap)
@@ -73,8 +68,6 @@
  
     # Connect to databases
     GDebug.printMesg(3,"Initializing DataSource Connections")
-    self.walk(self.initConnections)
-
 
     self._parameters  = self.getChildOfType('GRParameters') or \
                             GRParameters.GRParameters(self)
@@ -84,25 +77,32 @@
     self._layout =      self.getChildOfType('GRLayout')
     #
     # We need to create exceptions if _sources or _parameters is None
-    #   (.. NoLayoutDefinedException, NoSourcesDefinedException, etc)
     #
+    if self._sources == None: 
+      raise NoSourcesSection, "No <sources> section has been defined."
 
+    if self._layout == None: 
+      raise NoLayoutSection, "No <layout> section has been defined."
 
+
     # Load the user-specified parameters
     self._parameters.setUserParameters(parameters)
 
     # .. and the sort option
     self._sortoptions.setSortOption(sortoption)
+
+    # Prepare data sources for active duty
+    self._sources.prepare()
 
-    # 
+    # Write common header information
     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") 
 
Index: gnue/gnue-reports/src/GRSources.py
diff -u gnue/gnue-reports/src/GRSources.py:1.1 
gnue/gnue-reports/src/GRSources.py:1.2
--- gnue/gnue-reports/src/GRSources.py:1.1      Thu May 17 11:59:06 2001
+++ gnue/gnue-reports/src/GRSources.py  Fri May 25 01:18:35 2001
@@ -33,17 +33,50 @@
 from gnue.common.GObjects import *
 from gnue.common.GDataSource import GDataSource
 from gnue.common import GDebug
+import GRExceptions
 
 class GRSources (GObj): 
   def __init__(self, parent):
     GObj.__init__(self, parent, type='GRSources')
 
 
+  #
+  # Prepare for running
+  #
+ 
+  def prepare(self): 
+
+    # Connect to databases    
+    self._datasourceDictionary = {}
+    self.walk(self.__initConnections)
+    self.walk(self.__connectMasterDetail)
+
+
+  # Used internally by self.prepare()
+  # Connects to databases
+  def __initConnections(self, object): 
+    if object.getObjectType() == "GRDataSource": 
+      GDebug.printMesg(3,"Connecting DataSource %s to %s" \
+                         % (object.name, object.database) )    
+      object.connect()
+      self._datasourceDictionary[object.name] = object
+
+  def __connectMasterDetail(self, object): 
+    if object.getObjectType() == "GRDataSource" and object.master != None: 
+      GDebug.printMesg(3,"Linking detail '%s' to master '%s'" \
+                         % (object.name, object.master) )
+      if self._datasourceDictionary.has_key(object.master): 
+        pass 
+      else: 
+        raise GRExceptions.MasterSourceNotFound, \
+           "Detail source '%s' references non-existant master '%s'" \
+                         % (object.name, object.master)
+
+
 class GRDataSource (GDataSource): 
   def __init__(self, parent):
-    GDebug.printMesg(3,"Creating a datasource")
     GDataSource.__init__(self, parent, 'GRDataSource')
-
+    self.master = None
 
 
 



reply via email to

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