commit-gnue
[Top][All Lists]
Advanced

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

r6219 - in trunk: gnue-appserver gnue-appserver/doc gnue-appserver/doc/m


From: reinhard
Subject: r6219 - in trunk: gnue-appserver gnue-appserver/doc gnue-appserver/doc/man gnue-appserver/samples gnue-appserver/scripts gnue-appserver/src/gcd gnue-common/packaging/win32 gnue-common/utils
Date: Thu, 26 Aug 2004 11:28:48 -0500 (CDT)

Author: reinhard
Date: 2004-08-26 11:28:47 -0500 (Thu, 26 Aug 2004)
New Revision: 6219

Added:
   trunk/gnue-appserver/doc/man/gnue-readgcd.1
   trunk/gnue-appserver/doc/man/gnue-readgld.1
   trunk/gnue-appserver/scripts/gnue-readgcd
   trunk/gnue-appserver/src/gcd/readgcd.py
Removed:
   trunk/gnue-appserver/doc/man/gnue-gcd2sql.1
   trunk/gnue-appserver/scripts/gnue-gcd2sql
   trunk/gnue-appserver/src/gcd/gcd2sql.py
Modified:
   trunk/gnue-appserver/doc/gcd.dtd
   trunk/gnue-appserver/doc/gld.dtd
   trunk/gnue-appserver/samples/README
   trunk/gnue-appserver/samples/setup-db.sh
   trunk/gnue-appserver/setup.cvs
   trunk/gnue-appserver/setup.py
   trunk/gnue-common/packaging/win32/GNUe-Appserver-debug.iss
   trunk/gnue-common/packaging/win32/GNUe-Appserver.iss
   trunk/gnue-common/packaging/win32/setup.py
   trunk/gnue-common/utils/update-tool-docs
Log:
Renamed gnue-gcd2sql to gnue-readgcd, fixed missing stuff for new binary
gnue-readgld.


Modified: trunk/gnue-appserver/doc/gcd.dtd
===================================================================
--- trunk/gnue-appserver/doc/gcd.dtd    2004-08-26 16:05:57 UTC (rev 6218)
+++ trunk/gnue-appserver/doc/gcd.dtd    2004-08-26 16:28:47 UTC (rev 6219)
@@ -1,4 +1,4 @@
-<!-- GNUe Class Definitions DTD (Version 0.1.0) -->
+<!-- GNUe Class Definitions DTD (Version 0.1.89.99) -->
 
 <!--
      Copyright 2001-2004 Free Software Foundation
@@ -95,5 +95,5 @@
 
 
 <!-- This DTD was created by gnuedtd
-     Updated: 2004-08-03 20:25:35   -->
+     Updated: 2004-08-26 18:00:48   -->
 

Modified: trunk/gnue-appserver/doc/gld.dtd
===================================================================
--- trunk/gnue-appserver/doc/gld.dtd    2004-08-26 16:05:57 UTC (rev 6218)
+++ trunk/gnue-appserver/doc/gld.dtd    2004-08-26 16:28:47 UTC (rev 6219)
@@ -77,5 +77,5 @@
 
 
 <!-- This DTD was created by gnuedtd
-     Updated: 2004-08-07 13:53:00   -->
+     Updated: 2004-08-26 18:00:48   -->
 

Deleted: trunk/gnue-appserver/doc/man/gnue-gcd2sql.1
===================================================================
--- trunk/gnue-appserver/doc/man/gnue-gcd2sql.1 2004-08-26 16:05:57 UTC (rev 
6218)
+++ trunk/gnue-appserver/doc/man/gnue-gcd2sql.1 2004-08-26 16:28:47 UTC (rev 
6219)
@@ -1,120 +0,0 @@
-.TH GCD2SQL 1 "03 August 2004" "gcd2sql"
-.SH NAME
-gcd2sql \- gcd2sql
-.SH SYNOPSIS
-.ll +8
-.B gcd2sql
-[
-.I options
-]
-[
-.I OPTIONS
-]
-.I file
-.SH DESCRIPTION
-Create or update a database schema from a GNUe Class Definition 
-(gcd) file
-and maintain data for all gnue_* classes
-
-.SH OPTIONS
-.TP
-.B GENERAL OPTIONS
-.TP
-.TP
-.B \-\-connection <connectionname>, \-c
-Use the connection <connectionname> for creating the schema
-.TP
-.B \-\-connections <loc>
-Specifies the location of the connection definition file. <loc> may 
-specify a file name (/usr/local/gnue/etc/connections.conf),or a URL 
-location (http://localhost/connections.conf).If this option is not 
-specified, the environent variable GNUE_CONNECTIONS is checked.If 
-neither of them is set, "/home/reinhard/gnue/etc/connections.conf" 
-is used as a default.
-.TP
-.B \-\-debug-file <filename>
-Sends all debugging messages to a specified file (e.g., 
-"\-\-debug\-file trace.log" sends all output to "trace.log")
-.TP
-.B \-\-debug-level <level>
-Enables debugging messages.  Argument specifies the level of 
-messages to display (e.g., "\-\-debug\-level 5" displays all 
-debugging messages at level 5 or below.)
-.TP
-.B \-\-file-only, \-f
-If this flag is set, only code is sent to the output file and the 
-schema is not created automatically.
-.TP
-.B \-\-help
-Displays this help screen.
-.TP
-.B \-\-help-config
-Displays a list of valid configuration file entries, their purpose, 
-and their default values.
-.TP
-.B \-\-help-connections
-Display help information related to database connections, including 
-a list of available drivers.
-.TP
-.B \-\-help-dev
-Display all options of interest to core developers.
-.TP
-.B \-\-output <filename>, \-o
-Also send the code for creating the schema to this file.
-.TP
-.B \-\-password <password>, \-p
-Set the password for the database.
-.TP
-.B \-\-username <user>, \-u
-Set the username for the database. If the database is to be created, 
-this username will be it's owner.
-.TP
-.B \-\-version
-Displays the version information for this program.
-.TP
-.B DEVELOPER OPTIONS
-.TP
-.TP
-.B \-\-interactive-debugger
-Run the app inside Python's built\-in debugger
-.TP
-.B \-\-profile
-Run Python's built\-in profiler and display the resulting run 
-statistics.
-.TP
-.B \-\-selfdoc <type[,subtype]>
-Generates self\-documentation.
-.TP
-.B \-\-selfdoc-file <filename>
-Specifies the filename that selfdoc should write to. If not provided,
- output is sent to stdout.
-.TP
-.B \-\-selfdoc-format <format>
-Format to output the self\-documentation in. Supported formats are 
-dependent on the type of selfdoc being created.
-.TP
-.B \-\-selfdoc-options <options>
-Options specific to individual selfdoc types.
-.SH AUTHOR
-GNU Enterprise Project <address@hidden>
-.SH BUGS
-Please report any bugs to address@hidden
-Include a complete, self-contained example
-that will allow the bug to be reproduced,
-and say which version of this tool you are using.
-.SH COPYRIGHT
-Copyright \(co 2000-2004 Free Software Foundation, Inc.
-.LP
-gcd2sql 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.
-.LP
-gcd2sql 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.
-.LP
-You should have received a copy of the GNU General Public License along
-with gcd2sql; see the file COPYING.  If not, write to the Free Software
-Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

Copied: trunk/gnue-appserver/doc/man/gnue-readgcd.1 (from rev 6217, 
trunk/gnue-appserver/doc/man/gnue-gcd2sql.1)
===================================================================
--- trunk/gnue-appserver/doc/man/gnue-gcd2sql.1 2004-08-26 15:37:34 UTC (rev 
6217)
+++ trunk/gnue-appserver/doc/man/gnue-readgcd.1 2004-08-26 16:28:47 UTC (rev 
6219)
@@ -0,0 +1,120 @@
+.TH READGCD 1 "26 August 2004" "readgcd"
+.SH NAME
+readgcd \- readgcd
+.SH SYNOPSIS
+.ll +8
+.B readgcd
+[
+.I options
+]
+[
+.I OPTIONS
+]
+.I file
+.SH DESCRIPTION
+Create or update a database schema from a GNUe Class Definition 
+(gcd) file
+and maintain data for all gnue_* classes
+
+.SH OPTIONS
+.TP
+.B GENERAL OPTIONS
+.TP
+.TP
+.B \-\-connection <connectionname>, \-c
+Use the connection <connectionname> for creating the schema
+.TP
+.B \-\-connections <loc>
+Specifies the location of the connection definition file. <loc> may 
+specify a file name (/usr/local/gnue/etc/connections.conf),or a URL 
+location (http://localhost/connections.conf).If this option is not 
+specified, the environent variable GNUE_CONNECTIONS is checked.If 
+neither of them is set, "/home/reinhard/gnue/etc/connections.conf" 
+is used as a default.
+.TP
+.B \-\-debug-file <filename>
+Sends all debugging messages to a specified file (e.g., 
+"\-\-debug\-file trace.log" sends all output to "trace.log")
+.TP
+.B \-\-debug-level <level>
+Enables debugging messages.  Argument specifies the level of 
+messages to display (e.g., "\-\-debug\-level 5" displays all 
+debugging messages at level 5 or below.)
+.TP
+.B \-\-file-only, \-f
+If this flag is set, only code is sent to the output file and the 
+schema is not created automatically.
+.TP
+.B \-\-help
+Displays this help screen.
+.TP
+.B \-\-help-config
+Displays a list of valid configuration file entries, their purpose, 
+and their default values.
+.TP
+.B \-\-help-connections
+Display help information related to database connections, including 
+a list of available drivers.
+.TP
+.B \-\-help-dev
+Display all options of interest to core developers.
+.TP
+.B \-\-output <filename>, \-o
+Also send the code for creating the schema to this file.
+.TP
+.B \-\-password <password>, \-p
+Set the password for the database.
+.TP
+.B \-\-username <user>, \-u
+Set the username for the database. If the database is to be created, 
+this username will be it's owner.
+.TP
+.B \-\-version
+Displays the version information for this program.
+.TP
+.B DEVELOPER OPTIONS
+.TP
+.TP
+.B \-\-interactive-debugger
+Run the app inside Python's built\-in debugger
+.TP
+.B \-\-profile
+Run Python's built\-in profiler and display the resulting run 
+statistics.
+.TP
+.B \-\-selfdoc <type[,subtype]>
+Generates self\-documentation.
+.TP
+.B \-\-selfdoc-file <filename>
+Specifies the filename that selfdoc should write to. If not provided,
+ output is sent to stdout.
+.TP
+.B \-\-selfdoc-format <format>
+Format to output the self\-documentation in. Supported formats are 
+dependent on the type of selfdoc being created.
+.TP
+.B \-\-selfdoc-options <options>
+Options specific to individual selfdoc types.
+.SH AUTHOR
+GNU Enterprise Project <address@hidden>
+.SH BUGS
+Please report any bugs to address@hidden
+Include a complete, self-contained example
+that will allow the bug to be reproduced,
+and say which version of this tool you are using.
+.SH COPYRIGHT
+Copyright \(co 2000-2004 Free Software Foundation, Inc.
+.LP
+readgcd 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.
+.LP
+readgcd 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.
+.LP
+You should have received a copy of the GNU General Public License along
+with readgcd; see the file COPYING.  If not, write to the Free Software
+Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

Added: trunk/gnue-appserver/doc/man/gnue-readgld.1
===================================================================
--- trunk/gnue-appserver/doc/man/gnue-readgld.1 2004-08-26 16:05:57 UTC (rev 
6218)
+++ trunk/gnue-appserver/doc/man/gnue-readgld.1 2004-08-26 16:28:47 UTC (rev 
6219)
@@ -0,0 +1,110 @@
+.TH GNUE\-READGLD 1 "26 August 2004" "gnue-readgld"
+.SH NAME
+gnue\-readgld \- gnue\-readgld
+.SH SYNOPSIS
+.ll +8
+.B gnue\-readgld
+[
+.I options
+]
+.I file
+.I file
+.I \&...
+.SH DESCRIPTION
+Read GNUe Layout Definitions and update the class repository
+
+.SH OPTIONS
+.TP
+.B GENERAL OPTIONS
+.TP
+.TP
+.B \-\-connection <connectionname>, \-c
+Use the connection <connectionname> for creating the schema
+.TP
+.B \-\-connections <loc>
+Specifies the location of the connection definition file. <loc> may 
+specify a file name (/usr/local/gnue/etc/connections.conf),or a URL 
+location (http://localhost/connections.conf).If this option is not 
+specified, the environent variable GNUE_CONNECTIONS is checked.If 
+neither of them is set, "/home/reinhard/gnue/etc/connections.conf" 
+is used as a default.
+.TP
+.B \-\-debug-file <filename>
+Sends all debugging messages to a specified file (e.g., 
+"\-\-debug\-file trace.log" sends all output to "trace.log")
+.TP
+.B \-\-debug-level <level>
+Enables debugging messages.  Argument specifies the level of 
+messages to display (e.g., "\-\-debug\-level 5" displays all 
+debugging messages at level 5 or below.)
+.TP
+.B \-\-help
+Displays this help screen.
+.TP
+.B \-\-help-config
+Displays a list of valid configuration file entries, their purpose, 
+and their default values.
+.TP
+.B \-\-help-connections
+Display help information related to database connections, including 
+a list of available drivers.
+.TP
+.B \-\-help-dev
+Display all options of interest to core developers.
+.TP
+.B \-\-password <password>, \-p
+Set the password for the database.
+.TP
+.B \-\-username <user>, \-u
+Set the username for the database. If the database is to be created, 
+this username will be it's owner.
+.TP
+.B \-\-version
+Displays the version information for this program.
+.TP
+.B DEVELOPER OPTIONS
+.TP
+.TP
+.B \-\-interactive-debugger
+Run the app inside Python's built\-in debugger
+.TP
+.B \-\-profile
+Run Python's built\-in profiler and display the resulting run 
+statistics.
+.TP
+.B \-\-selfdoc <type[,subtype]>
+Generates self\-documentation.
+.TP
+.B \-\-selfdoc-file <filename>
+Specifies the filename that selfdoc should write to. If not provided,
+ output is sent to stdout.
+.TP
+.B \-\-selfdoc-format <format>
+Format to output the self\-documentation in. Supported formats are 
+dependent on the type of selfdoc being created.
+.TP
+.B \-\-selfdoc-options <options>
+Options specific to individual selfdoc types.
+.SH AUTHOR
+GNU Enterprise Project <address@hidden>
+.SH BUGS
+Please report any bugs to address@hidden
+Include a complete, self-contained example
+that will allow the bug to be reproduced,
+and say which version of this tool you are using.
+.SH COPYRIGHT
+Copyright \(co 2000-2004 Free Software Foundation, Inc.
+.LP
+gnue\-readgld 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.
+.LP
+gnue\-readgld 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.
+.LP
+You should have received a copy of the GNU General Public License along
+with gnue\-readgld; see the file COPYING.  If not, write to the Free Software
+Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

Modified: trunk/gnue-appserver/samples/README
===================================================================
--- trunk/gnue-appserver/samples/README 2004-08-26 16:05:57 UTC (rev 6218)
+++ trunk/gnue-appserver/samples/README 2004-08-26 16:28:47 UTC (rev 6219)
@@ -37,7 +37,7 @@
 
   This will create all tables needed for the classrepository
 
-gnue-gcd2sql --connection=gnue auth.gcd sample.gcd
+gnue-readgcd --connection=gnue auth.gcd sample.gcd
 
   This will create the sample classes and updates the classrepository
 

Modified: trunk/gnue-appserver/samples/setup-db.sh
===================================================================
--- trunk/gnue-appserver/samples/setup-db.sh    2004-08-26 16:05:57 UTC (rev 
6218)
+++ trunk/gnue-appserver/samples/setup-db.sh    2004-08-26 16:28:47 UTC (rev 
6219)
@@ -1,5 +1,5 @@
 #!/bin/sh
 
 gnue-schema --connection=gnue --createdb base.gsd
-gnue-gcd2sql --connection=gnue auth.gcd sample.gcd
+gnue-readgcd --connection=gnue auth.gcd sample.gcd
 gnue-schema --connection=gnue sample.gsd

Deleted: trunk/gnue-appserver/scripts/gnue-gcd2sql
===================================================================
--- trunk/gnue-appserver/scripts/gnue-gcd2sql   2004-08-26 16:05:57 UTC (rev 
6218)
+++ trunk/gnue-appserver/scripts/gnue-gcd2sql   2004-08-26 16:28:47 UTC (rev 
6219)
@@ -1,33 +0,0 @@
-#!/usr/bin/env python
-#
-# 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 os, sys
-
-if hasattr(sys, 'frozen'):
-  sys.path.append(os.path.abspath(os.path.dirname(sys.argv[0])))
-
-from gnue.appserver.gcd import gcd2sql
-
-if __name__ == '__main__':
-  gcd2sql = gcd2sql.gcdConverter ()
-  gcd2sql.run ();

Copied: trunk/gnue-appserver/scripts/gnue-readgcd (from rev 6217, 
trunk/gnue-appserver/scripts/gnue-gcd2sql)
===================================================================
--- trunk/gnue-appserver/scripts/gnue-gcd2sql   2004-08-26 15:37:34 UTC (rev 
6217)
+++ trunk/gnue-appserver/scripts/gnue-readgcd   2004-08-26 16:28:47 UTC (rev 
6219)
@@ -0,0 +1,33 @@
+#!/usr/bin/env python
+#
+# 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 os, sys
+
+if hasattr(sys, 'frozen'):
+  sys.path.append(os.path.abspath(os.path.dirname(sys.argv[0])))
+
+from gnue.appserver.gcd import readgcd
+
+if __name__ == '__main__':
+  readgcd = readgcd.gcdConverter ()
+  readgcd.run ();


Property changes on: trunk/gnue-appserver/scripts/gnue-readgcd
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:keywords
   + Id

Modified: trunk/gnue-appserver/setup.cvs
===================================================================
--- trunk/gnue-appserver/setup.cvs      2004-08-26 16:05:57 UTC (rev 6218)
+++ trunk/gnue-appserver/setup.cvs      2004-08-26 16:28:47 UTC (rev 6219)
@@ -33,7 +33,7 @@
 # Create our shell script..
 createShell ('gacvs', 'gnue-appserver')
 createShell ('ggcvs', 'gnue-gsdgen')
-createShell ('gcdcvs', 'gnue-gcd2sql')
+createShell ('gcdcvs', 'gnue-readgcd')
 createShell ('gldcvs', 'gnue-readgld')
 
 # Add our GNUe RPC resource files to the config directory...

Modified: trunk/gnue-appserver/setup.py
===================================================================
--- trunk/gnue-appserver/setup.py       2004-08-26 16:05:57 UTC (rev 6218)
+++ trunk/gnue-appserver/setup.py       2004-08-26 16:28:47 UTC (rev 6219)
@@ -64,7 +64,8 @@
     params ["package_dir"] = {"gnue.appserver": "src"}
     params ["scripts"]     = ["scripts/gnue-appserver",
                               "scripts/gnue-gsdgen",
-                              "scripts/gnue-gcd2sql"]
+                              "scripts/gnue-readgcd",
+                              "scripts/gnue-readgld"]
 
     # The Data
     datafiles   = ["src/classrep/repository.ini"]

Deleted: trunk/gnue-appserver/src/gcd/gcd2sql.py
===================================================================
--- trunk/gnue-appserver/src/gcd/gcd2sql.py     2004-08-26 16:05:57 UTC (rev 
6218)
+++ trunk/gnue-appserver/src/gcd/gcd2sql.py     2004-08-26 16:28:47 UTC (rev 
6219)
@@ -1,715 +0,0 @@
-# GNU Enterprise Application Server - Gnue Schema Definition Generator
-#
-# Copyright 2001-2004 Free Software Foundation
-#
-# 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.
-#
-# $Id$
-
-import sys
-import os
-import whrandom
-
-from gnue.common.apps import i18n
-from gnue.common.apps.GClientApp import *
-from gnue.common.utils.FileUtils import openResource
-from gnue.common.datasources import GDataSource, GConditions
-
-from gnue.appserver import VERSION
-from gnue.appserver.gcd import GCParser
-
-
-# =============================================================================
-# Exceptions
-# =============================================================================
-
-class Error (gException):
-  pass
-
-class ModuleNotFoundError (Error):
-  def __init__ (self, module):
-    msg = u_("Module '%s' not found in class repository") % module
-    Error.__init__ (self, msg)
-
-class ProcedureNotFoundError (Error):
-  def __init__ (self, procedure):
-    msg = u_("Procedure '%s' not found in class repository") % procedure
-    Error.__init__ (self, msg)
-
-
-# =============================================================================
-# Update a database schema from GNUe Class Definitions and update classrep.
-# =============================================================================
-
-class gcdConverter (GClientApp):
-
-  NAME    = "gcd2sql"
-  VERSION = VERSION
-  COMMAND = "gcd2sql"
-  USAGE   = "%s %s" % (GClientApp.USAGE, " [OPTIONS] file")
-  SUMMARY = _(
-"""Create or update a database schema from a GNUe Class Definition (gcd) file
-and maintain data for all gnue_* classes""")
-
-  # ---------------------------------------------------------------------------
-  # Constructor
-  # ---------------------------------------------------------------------------
-
-  def __init__ (self, connections = None):
-
-    self.addCommandOption ('connection', 'c', argument='connectionname',
-        help = _("Use the connection <connectionname> for creating the 
schema"))
-
-    self.addCommandOption ('output','o', argument='filename',
-        help = _("Also send the code for creating the schema to this file."))
-
-    self.addCommandOption ('file-only', 'f', default = False,
-        help = _("If this flag is set, only code is sent to the output file "
-                 "and the schema is not created automatically."))
-
-    self.addCommandOption ('username', 'u', argument="user",
-        help = _("Set the username for the database. If the database is to be "
-                 "created, this username will be it's owner."))
-
-    self.addCommandOption ('password', 'p', argument="password",
-        help = _("Set the password for the database."))
-
-    ConfigOptions = {}
-
-    GClientApp.__init__ (self, connections, 'gcd2sql', ConfigOptions)
-
-
-  # ---------------------------------------------------------------------------
-  # Verify the given commandline options
-  # ---------------------------------------------------------------------------
-
-  def __checkOptions (self):
-    """
-    This function checks wether the given command line arguments and options
-    are usefull or not.
-    """
-    self._args = [unicode (a, i18n.encoding) for a in self.ARGUMENTS]
-
-    if not len (self._args):
-      self.handleStartupError (_("No input file specified."))
-
-    try:
-      self._files = []
-
-      for filename in self._args:
-        self._files.append (openResource (filename))
-
-    except IOError:
-      self.handleStartupError (u_("Unable to open input file %s.") % filename)
-
-
-    if not self.OPTIONS ['connection']:
-      self.handleStartupError (_("No connection specified."))
-
-    self.outfile = self.OPTIONS ['output']
-
-    if self.OPTIONS ['file-only'] and self.outfile is None:
-      self.handleStartupError (_("Output to file only requested, but no "
-                                 "filename specified."))
-
-
-  # ---------------------------------------------------------------------------
-  # Main program
-  # ---------------------------------------------------------------------------
-
-  def run (self):
-    """
-    This is the main function of the whole process. It verifies the given
-    options, loads all schema definitions and then logs into the connection to
-    perform all actions requested.
-    """
-
-    self.__checkOptions ()
-
-    try:
-      self.tables     = []
-      self.modules    = {}
-      self.classes    = {}
-      self.properties = {}
-      self.procedures = {}
-      self.parameters = {}
-
-      for item in range (len (self._files)):
-        print o (u_("Loading gcd file '%s' ...") % self._args [item])
-
-        try:
-          schema = GCParser.loadFile (self._files [item])
-          schema.walk (self.__iterateObjects)
-
-        finally:
-          self._files [item].close ()
-
-    except Exception:
-      print sys.exc_info () [1]
-
-    else:
-      self.executeAndGenerateCode ()
-
-      self.updateRepository ()
-
-
-  # ---------------------------------------------------------------------------
-  # Iterate over all top level elements
-  # ---------------------------------------------------------------------------
-
-  def __iterateObjects (self, sObject):
-    """
-    This function iterates over all objects of a GCD tree and processes the
-    GCModule and GCClass instances.
-
-    @param sObject: current GCD object to be processed
-    """
-    if sObject._type == 'GCModule':
-      self.__translateModule (sObject)
-
-    elif sObject._type == 'GCClass':
-      self.__translateClass (sObject)
-
-  
-
-  # ---------------------------------------------------------------------------
-  # A module translates to a gnue_module data entry only
-  # ---------------------------------------------------------------------------
-
-  def __translateModule (self, aModule):
-    """
-    This function adds a dictionary for the given module to the modules data
-    block for later update of the class repository.
-
-    @param aModule: GCD Module object to be processed.
-    """
-
-    self.modules [aModule.name] = self.fetchTags (aModule, ['name', 'comment'])
-    self.modules [aModule.name] ['gnue_id'] = None
-
-
-  # ---------------------------------------------------------------------------
-  # A class translation needs a table creation/modification and a data entry
-  # ---------------------------------------------------------------------------
-
-  def __translateClass (self, aClass):
-    """
-    This function creates an entry for schema creation of the given class, as
-    well as a dictionary for the class repository update.
-
-    @param aClass: GCD Class object to be processed.
-    """
-
-    self.tables.append ({'name': aClass.fullName, 'fields': []})
-
-    if aClass.action == 'create':
-      self.tables [-1]['primarykey'] = {
-          'name'  : 'gnue_id_pk_%s' % aClass.fullName,
-          'fields': ['gnue_id']}
-
-    cDef = self.fetchTags (aClass, ['name', 'module', 'comment'])
-    cDef ['gnue_id'] = None
-
-    self.classes [aClass.fullName] = cDef
-
-    # After processing the class definition, iterate over all it's items
-    aClass.walk (self.__iterateClassObjects, defs = self.tables [-1])
-
-
-  # ---------------------------------------------------------------------------
-  # Iterate over all elements of a class definition
-  # ---------------------------------------------------------------------------
-
-  def __iterateClassObjects (self, sObject, defs):
-    """
-    This function processes all child objects of a GCD class instance. For all
-    properties a schema creation dictionary will be created. Properties,
-    Procedures and Parameters will be added to the class repository update
-    dictionaries.
-
-    @param sObject: current GCD object to be processed
-    @param defs: schema creation dictionary describing the table definition for
-        the class.
-    """
-
-    if sObject._type == 'GCProperty':
-      fDef = {'name'    : sObject.fullName,
-              'type'    : sObject.datatype,
-              'nullable': sObject.nullable}
-      
-      if sObject.length is not None and sObject.length:
-        fDef ['length'] = sObject.length
-      if sObject.scale is not None and sObject.scale:
-        fDef ['precision'] = sObject.scale
-
-      defs ['fields'].append (fDef)
-
-      # Create a foreign key constraint for class references
-      if sObject.isReference:
-        cDef = {'name'     : "fk_%s_%s" % (defs ['name'], fDef ['name']),
-                'fields'   : [fDef ['name']],
-                'reftable' : sObject.type,
-                'reffields': ['gnue_id']}
-
-        if not defs.has_key ('constraints'):
-          defs ['constraints'] = [cDef]
-        else:
-          defs ['constraints'].append (cDef)
-
-      fqName = "%s.%s" % (sObject._parent.fullName, sObject.fullName)
-      propDef = self.fetchTags (sObject, ['name', 'length', 'scale',
-                                          'nullable', 'comment'])
-      if sObject.isReference:
-        propDef ['gnue_type']   = sObject.type
-        propDef ['gnue_length'] = None
-
-      elif sObject.fullName == 'gnue_id':
-        propDef ['gnue_type']   = 'id'
-        propDef ['gnue_length'] = None
-      else:
-        propDef ['gnue_type'] = sObject.datatype
-
-      propDef ['gnue_id']     = None
-      propDef ['gnue_class']  = sObject._parent.fullName
-      propDef ['gnue_module'] = sObject.module
-      self.properties [fqName] = propDef
-
-
-    # Process a procedure of the class
-    elif sObject._type == 'GCProcedure':
-      fqName = "%s.%s" % (sObject._parent.fullName, sObject.fullName)
-      pDef = self.fetchTags (sObject, ['name', 'module', 'nullable',
-                                   'language', 'length', 'scale', 'comment'])
-      pDef ['gnue_id']    = None
-      pDef ['gnue_class'] = sObject._parent.fullName
-      pDef ['gnue_type']  = sObject.datatype
-      pDef ['gnue_code']  = sObject.getChildrenAsContent ()
-      self.procedures [fqName] = pDef
-
-      sObject.walk (self.__iterateProcedure)
-
-
-  # ---------------------------------------------------------------------------
-  # Iterate over all child elements of a procedure
-  # ---------------------------------------------------------------------------
-
-  def __iterateProcedure (self, sObject):
-    """
-    This function processes any parameter definitions for a GCD procedure
-    instance. A dictionary for class repository update will be created.
-
-    @param sObject: the GCD parameter object to be processed
-    """
-    if sObject._type == 'GCParameter':
-      pDef = self.fetchTags (sObject, ['name', 'comment', 'length', 'scale'])
-      pDef ['gnue_type']      = sObject.datatype
-      pDef ['gnue_procedure'] = "%s.%s" % (sObject._parent._parent.fullName,
-                                           sObject._parent.fullName)
-      fqName = "%s.%s" % (pDef ['gnue_procedure'], sObject.name)
-      self.parameters [fqName] = pDef
-
-
-  # ---------------------------------------------------------------------------
-  # Get a dictionary with all keys listed in tags and values from sObject
-  # ---------------------------------------------------------------------------
-
-  def fetchTags (self, sObject, tags):
-    """
-    This function creates a dictionary with all attributes from sObject listed
-    in tags, where the keys are constructed by 'gnue_%s' % attributename.
-
-    @param sObject: Schema object to retriev attributes from
-    @param tags: list of all attributes to retrieve
-    @return: dictionary with the attribute names as keys and their values
-    """
-    res = {}
-    for item in tags:
-      if hasattr (sObject, item):
-        res ["gnue_%s" % item] = getattr (sObject, item)
-    return res
-
-
-  # ---------------------------------------------------------------------------
-  # Execute and generate the code
-  # ---------------------------------------------------------------------------
-
-  def executeAndGenerateCode (self):
-    """
-    This function logs into the given connection and calls it for an update of
-    it's schema according to the loaded table definitions. Additionally the
-    schema creation code is generated by this call, which will be stored in the
-    given output file (if requested by options).
-    """
-
-    connection = self.connections.getConnection (self.OPTIONS ['connection'])
-
-    connection.parameters ['username'] = self.OPTIONS ['username'] or "gnue"
-    connection.parameters ['password'] = self.OPTIONS ['password'] or "gnue"
-
-    self.connections.loginToConnection (connection)
-
-    print _("Updating schema ...")
-    code = connection.updateSchema (self.tables, self.OPTIONS ['file-only'])
-
-    if self.outfile is not None:
-      dest = open (self.outfile, 'w')
-
-      for item in code:
-        for line in item:
-          dest.write (line + "\n")
-
-      dest.close ()
-
-
-  # ---------------------------------------------------------------------------
-  # Update the class repository
-  # ---------------------------------------------------------------------------
-
-  def updateRepository (self):
-    print _("Updating class repository ...")
-
-    self._updateModules ()
-    self._updateClasses ()
-    self._updateProperties ()
-    self._updateProcedures ()
-    self._updateParameter ()
-
-
-  # ---------------------------------------------------------------------------
-  # Update/add modules to the class repository
-  # ---------------------------------------------------------------------------
-
-  def _updateModules (self):
-    """
-    """
-    attributes = {'name'    : "dts_gnueModule",
-                  'database': self.OPTIONS ['connection'],
-                  'table'   : 'gnue_module'}
-    fieldList = ['gnue_id', 'gnue_name', 'gnue_comment']
-
-    self._dtsModules = GDataSource.DataSourceWrapper (
-                          connections = self.connections,
-                          attributes  = attributes,
-                          fields      = fieldList,
-                          unicodeMode = True)
-
-    stat = [0, 0, 0]      # inserted, updated, unchanged
-
-    for module in self.modules.values ():
-      cond = GConditions.buildConditionFromDict ( \
-          {'gnue_name': module ['gnue_name']})
-      resultSet = self._dtsModules.createResultSet (cond)
-
-      if resultSet.firstRecord () is None:
-        resultSet.insertRecord ()
-        modifier = 0
-        module ['gnue_id'] = self.__generateId ()
-      else:
-        module ['gnue_id'] = resultSet.current.getField ('gnue_id')
-        modifier = 1
-
-      if not self.doUpdate (resultSet, module):
-        modifier += 1
-
-      stat [modifier] += 1
-
-    if stat [0] + stat [1]:
-      self.connections.commitAll ()
-
-    print o (u_("  Modules   : %(ins)3d inserted, %(upd)3d updated, %(kept)3d "
-                "unchanged.") \
-             % {'ins': stat [0], 'upd': stat [1], 'kept': stat [2]})
-
-
-  # ---------------------------------------------------------------------------
-  # Update/add classes to the class repository
-  # ---------------------------------------------------------------------------
-
-  def _updateClasses (self):
-    """
-    """
-    attributes = {'name'    : "dts_gnueClass",
-                  'database': self.OPTIONS ['connection'],
-                  'table'   : 'gnue_class'}
-    fieldList = ['gnue_id', 'gnue_name', 'gnue_module', 'gnue_comment']
-
-    datasource = GDataSource.DataSourceWrapper (
-          connections = self.connections,
-          attributes  = attributes,
-          fields      = fieldList,
-          unicodeMode = True)
-
-    stat = [0, 0, 0]      # inserted, updated, unchanged
-
-    for klass in self.classes.values ():
-      moduleId = self.__findModule (klass ['gnue_module'])
-      cond = GConditions.buildConditionFromDict ( \
-          {'gnue_name': klass ['gnue_name'],
-           'gnue_module': moduleId})
-      resultSet = datasource.createResultSet (cond)
-
-      if resultSet.firstRecord () is None:
-        resultSet.insertRecord ()
-        modifier = 0
-        klass ['gnue_id'] = self.__generateId ()
-      else:
-        klass ['gnue_id'] = resultSet.current.getField ('gnue_id')
-        modifier = 1
-
-      # replace the module's name by it's gnue_id
-      klass ['gnue_module'] = moduleId
-
-      if not self.doUpdate (resultSet, klass):
-        modifier += 1
-
-      stat [modifier] += 1
-
-    if stat [0] + stat [1]:
-      self.connections.commitAll ()
-
-    print o (u_("  Classes   : %(ins)3d inserted, %(upd)3d updated, %(kept)3d "
-                "unchanged.") \
-          % {'ins': stat [0], 'upd': stat [1], 'kept': stat [2]})
-
-
-  # ---------------------------------------------------------------------------
-  # Update/add Properties to the class repository
-  # ---------------------------------------------------------------------------
-
-  def _updateProperties (self):
-    """
-    """
-    attributes = {'name'    : "dts_gnueProperty",
-                  'database': self.OPTIONS ['connection'],
-                  'table'   : 'gnue_property'}
-    fieldList = ['gnue_id', 'gnue_module', 'gnue_class', 'gnue_name',
-                 'gnue_type', 'gnue_length', 'gnue_scale', 'gnue_nullable',
-                 'gnue_comment']
-
-    datasource = GDataSource.DataSourceWrapper (
-          connections = self.connections,
-          attributes  = attributes,
-          fields      = fieldList,
-          unicodeMode = True)
-
-    stat = [0, 0, 0]      # inserted, updated, unchanged
-
-    for prop in self.properties.values ():
-      # make sure we have a valid gnue_id for the referenced module
-      moduleId = self.__findModule (prop ['gnue_module'])
-
-      cond = GConditions.buildConditionFromDict ( \
-          {'gnue_name'  : prop ['gnue_name'],
-           'gnue_module': moduleId,
-           'gnue_class' : self.classes [prop ['gnue_class']] ['gnue_id']})
-      resultSet = datasource.createResultSet (cond)
-
-      if resultSet.firstRecord () is None:
-        resultSet.insertRecord ()
-        modifier = 0
-        prop ['gnue_id'] = self.__generateId ()
-      else:
-        prop ['gnue_id'] = resultSet.current.getField ('gnue_id')
-        modifier = 1
-
-      # replace module-name and class-name by their gnue_id's
-      prop ['gnue_module'] = moduleId
-      prop ['gnue_class']  = self.classes [prop ['gnue_class']] ['gnue_id']
-
-      if not self.doUpdate (resultSet, prop):
-        modifier += 1
-
-      stat [modifier] += 1
-
-    if stat [0] + stat [1]:
-      self.connections.commitAll ()
-
-    print o (u_("  Properties: %(ins)3d inserted, %(upd)3d updated, %(kept)3d "
-                "unchanged.") \
-             % {'ins': stat [0], 'upd': stat [1], 'kept': stat [2]})
-
-
-  # ---------------------------------------------------------------------------
-  # Update/add Procedures to the class repository
-  # ---------------------------------------------------------------------------
-
-  def _updateProcedures (self):
-    attributes = {'name'    : "dts_gnueProcedure",
-                  'database': self.OPTIONS ['connection'],
-                  'table'   : 'gnue_procedure'}
-    fieldList = ['gnue_id', 'gnue_module', 'gnue_class', 'gnue_name',
-                 'gnue_type', 'gnue_length', 'gnue_scale', 'gnue_nullable',
-                 'gnue_comment', 'gnue_code', 'gnue_language']
-
-    self._dtsProcedure = GDataSource.DataSourceWrapper (
-                            connections = self.connections,
-                            attributes  = attributes,
-                            fields      = fieldList,
-                            unicodeMode = True)
-
-    stat = [0, 0, 0]      # inserted, updated, unchanged
-
-    for proc in self.procedures.values ():
-      moduleId = self.__findModule (proc ['gnue_module'])
-      cond = GConditions.buildConditionFromDict ( \
-          {'gnue_name'  : proc ['gnue_name'],
-           'gnue_module': moduleId,
-           'gnue_class' : self.classes [proc ['gnue_class']] ['gnue_id']})
-      resultSet = self._dtsProcedure.createResultSet (cond)
-
-      if resultSet.firstRecord () is None:
-        resultSet.insertRecord ()
-        modifier = 0
-        proc ['gnue_id'] = self.__generateId ()
-      else:
-        proc ['gnue_id'] = resultSet.current.getField ('gnue_id')
-        modifier = 1
-
-      # replace module-name and class-name by their gnue_id's
-      proc ['gnue_module'] = moduleId
-      proc ['gnue_class']  = self.classes [proc ['gnue_class']] ['gnue_id']
-
-      if not self.doUpdate (resultSet, proc):
-        modifier += 1
-
-      stat [modifier] += 1
-
-    if stat [0] + stat [1]:
-      self.connections.commitAll ()
-
-    print o (u_("  Procedures: %(ins)3d inserted, %(upd)3d updated, %(kept)3d "
-                "unchanged.") \
-              % {'ins': stat [0], 'upd': stat [1], 'kept': stat [2]})
-
-
-  # ---------------------------------------------------------------------------
-  # Update/add Procedures to the class repository
-  # ---------------------------------------------------------------------------
-
-  def _updateParameter (self):
-    attributes = {'name'    : "dts_gnueParameter",
-                  'database': self.OPTIONS ['connection'],
-                  'table'   : 'gnue_parameter'}
-    fieldList = ['gnue_id', 'gnue_procedure', 'gnue_name', 'gnue_type',
-                 'gnue_scale', 'gnue_length', 'gnue_comment']
-
-    self._dtsParameter = GDataSource.DataSourceWrapper (
-                            connections = self.connections,
-                            attributes  = attributes,
-                            fields      = fieldList,
-                            unicodeMode = True)
-
-    stat = [0, 0, 0]      # inserted, updated, unchanged
-
-    for param in self.parameters.values ():
-
-      if self.procedures.has_key (param ['gnue_procedure']):
-        procId = self.procedures [param ['gnue_procedure']] ['gnue_id']
-      else:
-        raise ProcedureNotFoundError, (param ['gnue_procedure'])
-
-      cond = GConditions.buildConditionFromDict ( \
-          {'gnue_name'  : param ['gnue_name'],
-           'gnue_procedure': procId})
-      resultSet = self._dtsParameter.createResultSet (cond)
-
-      if resultSet.firstRecord () is None:
-        resultSet.insertRecord ()
-        modifier = 0
-        param ['gnue_id'] = self.__generateId ()
-      else:
-        param ['gnue_id'] = resultSet.current.getField ('gnue_id')
-        modifier = 1
-
-      # replace module-name and class-name by their gnue_id's
-      param ['gnue_procedure'] = procId
-
-      if not self.doUpdate (resultSet, param):
-        modifier += 1
-
-      stat [modifier] += 1
-
-    if stat [0] + stat [1]:
-      self.connections.commitAll ()
-
-    print o (u_("  Parameters: %(ins)3d inserted, %(upd)3d updated, %(kept)3d "
-                "unchanged.") \
-              % {'ins': stat [0], 'upd': stat [1], 'kept': stat [2]})
-
-
-  # ---------------------------------------------------------------------------
-  # Perform an update on the given resultset using a given data dictionary
-  # ---------------------------------------------------------------------------
-
-  def doUpdate (self, resultSet, data):
-    """
-    This function sets all fields in the current record of the resultset base
-    on the key/values given by the data dictionary. It returns TRUE, if a field
-    value has been changed, otherwise FALSE. If a field was changed, the record
-    gets posted.
-
-    @param resultSet: resultset with the current record to be updated
-    @param data: dictionary with keys and values used for updates
-    @return: TRUE if a field has been changed, FALSE if no field has been
-        changed.
-    """
-    doPost = False
-
-    for key in data:
-      if resultSet.current.getField (key) != data [key]:
-        resultSet.current.setField (key, data [key])
-        doPost = True
-
-    if doPost:
-      resultSet.post ()
-
-    return doPost
-
-
-  # ---------------------------------------------------------------------------
-  # Find a module by name
-  # ---------------------------------------------------------------------------
-
-  def __findModule (self, module):
-    if self.modules.has_key (module):
-      return self.modules [module]['gnue_id']
-    else:
-      mc = GConditions.buildConditionFromDict ({'gnue_name': module})
-      rs = self._dtsModules.createResultSet (mc)
-      if rs.firstRecord () is None:
-        raise ModuleNotFoundError, (module)
-      return rs.current.getField ('gnue_id')
-
-
-  # ---------------------------------------------------------------------------
-  # Generate a new object id
-  # ---------------------------------------------------------------------------
-
-  def __generateId (self):
-    """
-    This function generates a new gnue_id like it is done by appserver. Once
-    this algorithm should be replace by a better one.
-    """
-    result = u''
-    for i in range (0, 32):
-      result = result + str (int (whrandom.random () * 10))
-    return result
-
-
-if __name__ == "__main__":
-  gcdConverter ().run ()

Copied: trunk/gnue-appserver/src/gcd/readgcd.py (from rev 6217, 
trunk/gnue-appserver/src/gcd/gcd2sql.py)
===================================================================
--- trunk/gnue-appserver/src/gcd/gcd2sql.py     2004-08-26 15:37:34 UTC (rev 
6217)
+++ trunk/gnue-appserver/src/gcd/readgcd.py     2004-08-26 16:28:47 UTC (rev 
6219)
@@ -0,0 +1,715 @@
+# GNU Enterprise Application Server - Gnue Schema Definition Generator
+#
+# Copyright 2001-2004 Free Software Foundation
+#
+# 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.
+#
+# $Id$
+
+import sys
+import os
+import whrandom
+
+from gnue.common.apps import i18n
+from gnue.common.apps.GClientApp import *
+from gnue.common.utils.FileUtils import openResource
+from gnue.common.datasources import GDataSource, GConditions
+
+from gnue.appserver import VERSION
+from gnue.appserver.gcd import GCParser
+
+
+# =============================================================================
+# Exceptions
+# =============================================================================
+
+class Error (gException):
+  pass
+
+class ModuleNotFoundError (Error):
+  def __init__ (self, module):
+    msg = u_("Module '%s' not found in class repository") % module
+    Error.__init__ (self, msg)
+
+class ProcedureNotFoundError (Error):
+  def __init__ (self, procedure):
+    msg = u_("Procedure '%s' not found in class repository") % procedure
+    Error.__init__ (self, msg)
+
+
+# =============================================================================
+# Update a database schema from GNUe Class Definitions and update classrep.
+# =============================================================================
+
+class gcdConverter (GClientApp):
+
+  NAME    = "readgcd"
+  VERSION = VERSION
+  COMMAND = "readgcd"
+  USAGE   = "%s %s" % (GClientApp.USAGE, " [OPTIONS] file")
+  SUMMARY = _(
+"""Create or update a database schema from a GNUe Class Definition (gcd) file
+and maintain data for all gnue_* classes""")
+
+  # ---------------------------------------------------------------------------
+  # Constructor
+  # ---------------------------------------------------------------------------
+
+  def __init__ (self, connections = None):
+
+    self.addCommandOption ('connection', 'c', argument='connectionname',
+        help = _("Use the connection <connectionname> for creating the 
schema"))
+
+    self.addCommandOption ('output','o', argument='filename',
+        help = _("Also send the code for creating the schema to this file."))
+
+    self.addCommandOption ('file-only', 'f', default = False,
+        help = _("If this flag is set, only code is sent to the output file "
+                 "and the schema is not created automatically."))
+
+    self.addCommandOption ('username', 'u', argument="user",
+        help = _("Set the username for the database. If the database is to be "
+                 "created, this username will be it's owner."))
+
+    self.addCommandOption ('password', 'p', argument="password",
+        help = _("Set the password for the database."))
+
+    ConfigOptions = {}
+
+    GClientApp.__init__ (self, connections, 'readgcd', ConfigOptions)
+
+
+  # ---------------------------------------------------------------------------
+  # Verify the given commandline options
+  # ---------------------------------------------------------------------------
+
+  def __checkOptions (self):
+    """
+    This function checks wether the given command line arguments and options
+    are usefull or not.
+    """
+    self._args = [unicode (a, i18n.encoding) for a in self.ARGUMENTS]
+
+    if not len (self._args):
+      self.handleStartupError (_("No input file specified."))
+
+    try:
+      self._files = []
+
+      for filename in self._args:
+        self._files.append (openResource (filename))
+
+    except IOError:
+      self.handleStartupError (u_("Unable to open input file %s.") % filename)
+
+
+    if not self.OPTIONS ['connection']:
+      self.handleStartupError (_("No connection specified."))
+
+    self.outfile = self.OPTIONS ['output']
+
+    if self.OPTIONS ['file-only'] and self.outfile is None:
+      self.handleStartupError (_("Output to file only requested, but no "
+                                 "filename specified."))
+
+
+  # ---------------------------------------------------------------------------
+  # Main program
+  # ---------------------------------------------------------------------------
+
+  def run (self):
+    """
+    This is the main function of the whole process. It verifies the given
+    options, loads all schema definitions and then logs into the connection to
+    perform all actions requested.
+    """
+
+    self.__checkOptions ()
+
+    try:
+      self.tables     = []
+      self.modules    = {}
+      self.classes    = {}
+      self.properties = {}
+      self.procedures = {}
+      self.parameters = {}
+
+      for item in range (len (self._files)):
+        print o (u_("Loading gcd file '%s' ...") % self._args [item])
+
+        try:
+          schema = GCParser.loadFile (self._files [item])
+          schema.walk (self.__iterateObjects)
+
+        finally:
+          self._files [item].close ()
+
+    except Exception:
+      print sys.exc_info () [1]
+
+    else:
+      self.executeAndGenerateCode ()
+
+      self.updateRepository ()
+
+
+  # ---------------------------------------------------------------------------
+  # Iterate over all top level elements
+  # ---------------------------------------------------------------------------
+
+  def __iterateObjects (self, sObject):
+    """
+    This function iterates over all objects of a GCD tree and processes the
+    GCModule and GCClass instances.
+
+    @param sObject: current GCD object to be processed
+    """
+    if sObject._type == 'GCModule':
+      self.__translateModule (sObject)
+
+    elif sObject._type == 'GCClass':
+      self.__translateClass (sObject)
+
+  
+
+  # ---------------------------------------------------------------------------
+  # A module translates to a gnue_module data entry only
+  # ---------------------------------------------------------------------------
+
+  def __translateModule (self, aModule):
+    """
+    This function adds a dictionary for the given module to the modules data
+    block for later update of the class repository.
+
+    @param aModule: GCD Module object to be processed.
+    """
+
+    self.modules [aModule.name] = self.fetchTags (aModule, ['name', 'comment'])
+    self.modules [aModule.name] ['gnue_id'] = None
+
+
+  # ---------------------------------------------------------------------------
+  # A class translation needs a table creation/modification and a data entry
+  # ---------------------------------------------------------------------------
+
+  def __translateClass (self, aClass):
+    """
+    This function creates an entry for schema creation of the given class, as
+    well as a dictionary for the class repository update.
+
+    @param aClass: GCD Class object to be processed.
+    """
+
+    self.tables.append ({'name': aClass.fullName, 'fields': []})
+
+    if aClass.action == 'create':
+      self.tables [-1]['primarykey'] = {
+          'name'  : 'gnue_id_pk_%s' % aClass.fullName,
+          'fields': ['gnue_id']}
+
+    cDef = self.fetchTags (aClass, ['name', 'module', 'comment'])
+    cDef ['gnue_id'] = None
+
+    self.classes [aClass.fullName] = cDef
+
+    # After processing the class definition, iterate over all it's items
+    aClass.walk (self.__iterateClassObjects, defs = self.tables [-1])
+
+
+  # ---------------------------------------------------------------------------
+  # Iterate over all elements of a class definition
+  # ---------------------------------------------------------------------------
+
+  def __iterateClassObjects (self, sObject, defs):
+    """
+    This function processes all child objects of a GCD class instance. For all
+    properties a schema creation dictionary will be created. Properties,
+    Procedures and Parameters will be added to the class repository update
+    dictionaries.
+
+    @param sObject: current GCD object to be processed
+    @param defs: schema creation dictionary describing the table definition for
+        the class.
+    """
+
+    if sObject._type == 'GCProperty':
+      fDef = {'name'    : sObject.fullName,
+              'type'    : sObject.datatype,
+              'nullable': sObject.nullable}
+      
+      if sObject.length is not None and sObject.length:
+        fDef ['length'] = sObject.length
+      if sObject.scale is not None and sObject.scale:
+        fDef ['precision'] = sObject.scale
+
+      defs ['fields'].append (fDef)
+
+      # Create a foreign key constraint for class references
+      if sObject.isReference:
+        cDef = {'name'     : "fk_%s_%s" % (defs ['name'], fDef ['name']),
+                'fields'   : [fDef ['name']],
+                'reftable' : sObject.type,
+                'reffields': ['gnue_id']}
+
+        if not defs.has_key ('constraints'):
+          defs ['constraints'] = [cDef]
+        else:
+          defs ['constraints'].append (cDef)
+
+      fqName = "%s.%s" % (sObject._parent.fullName, sObject.fullName)
+      propDef = self.fetchTags (sObject, ['name', 'length', 'scale',
+                                          'nullable', 'comment'])
+      if sObject.isReference:
+        propDef ['gnue_type']   = sObject.type
+        propDef ['gnue_length'] = None
+
+      elif sObject.fullName == 'gnue_id':
+        propDef ['gnue_type']   = 'id'
+        propDef ['gnue_length'] = None
+      else:
+        propDef ['gnue_type'] = sObject.datatype
+
+      propDef ['gnue_id']     = None
+      propDef ['gnue_class']  = sObject._parent.fullName
+      propDef ['gnue_module'] = sObject.module
+      self.properties [fqName] = propDef
+
+
+    # Process a procedure of the class
+    elif sObject._type == 'GCProcedure':
+      fqName = "%s.%s" % (sObject._parent.fullName, sObject.fullName)
+      pDef = self.fetchTags (sObject, ['name', 'module', 'nullable',
+                                   'language', 'length', 'scale', 'comment'])
+      pDef ['gnue_id']    = None
+      pDef ['gnue_class'] = sObject._parent.fullName
+      pDef ['gnue_type']  = sObject.datatype
+      pDef ['gnue_code']  = sObject.getChildrenAsContent ()
+      self.procedures [fqName] = pDef
+
+      sObject.walk (self.__iterateProcedure)
+
+
+  # ---------------------------------------------------------------------------
+  # Iterate over all child elements of a procedure
+  # ---------------------------------------------------------------------------
+
+  def __iterateProcedure (self, sObject):
+    """
+    This function processes any parameter definitions for a GCD procedure
+    instance. A dictionary for class repository update will be created.
+
+    @param sObject: the GCD parameter object to be processed
+    """
+    if sObject._type == 'GCParameter':
+      pDef = self.fetchTags (sObject, ['name', 'comment', 'length', 'scale'])
+      pDef ['gnue_type']      = sObject.datatype
+      pDef ['gnue_procedure'] = "%s.%s" % (sObject._parent._parent.fullName,
+                                           sObject._parent.fullName)
+      fqName = "%s.%s" % (pDef ['gnue_procedure'], sObject.name)
+      self.parameters [fqName] = pDef
+
+
+  # ---------------------------------------------------------------------------
+  # Get a dictionary with all keys listed in tags and values from sObject
+  # ---------------------------------------------------------------------------
+
+  def fetchTags (self, sObject, tags):
+    """
+    This function creates a dictionary with all attributes from sObject listed
+    in tags, where the keys are constructed by 'gnue_%s' % attributename.
+
+    @param sObject: Schema object to retriev attributes from
+    @param tags: list of all attributes to retrieve
+    @return: dictionary with the attribute names as keys and their values
+    """
+    res = {}
+    for item in tags:
+      if hasattr (sObject, item):
+        res ["gnue_%s" % item] = getattr (sObject, item)
+    return res
+
+
+  # ---------------------------------------------------------------------------
+  # Execute and generate the code
+  # ---------------------------------------------------------------------------
+
+  def executeAndGenerateCode (self):
+    """
+    This function logs into the given connection and calls it for an update of
+    it's schema according to the loaded table definitions. Additionally the
+    schema creation code is generated by this call, which will be stored in the
+    given output file (if requested by options).
+    """
+
+    connection = self.connections.getConnection (self.OPTIONS ['connection'])
+
+    connection.parameters ['username'] = self.OPTIONS ['username'] or "gnue"
+    connection.parameters ['password'] = self.OPTIONS ['password'] or "gnue"
+
+    self.connections.loginToConnection (connection)
+
+    print _("Updating schema ...")
+    code = connection.updateSchema (self.tables, self.OPTIONS ['file-only'])
+
+    if self.outfile is not None:
+      dest = open (self.outfile, 'w')
+
+      for item in code:
+        for line in item:
+          dest.write (line + "\n")
+
+      dest.close ()
+
+
+  # ---------------------------------------------------------------------------
+  # Update the class repository
+  # ---------------------------------------------------------------------------
+
+  def updateRepository (self):
+    print _("Updating class repository ...")
+
+    self._updateModules ()
+    self._updateClasses ()
+    self._updateProperties ()
+    self._updateProcedures ()
+    self._updateParameter ()
+
+
+  # ---------------------------------------------------------------------------
+  # Update/add modules to the class repository
+  # ---------------------------------------------------------------------------
+
+  def _updateModules (self):
+    """
+    """
+    attributes = {'name'    : "dts_gnueModule",
+                  'database': self.OPTIONS ['connection'],
+                  'table'   : 'gnue_module'}
+    fieldList = ['gnue_id', 'gnue_name', 'gnue_comment']
+
+    self._dtsModules = GDataSource.DataSourceWrapper (
+                          connections = self.connections,
+                          attributes  = attributes,
+                          fields      = fieldList,
+                          unicodeMode = True)
+
+    stat = [0, 0, 0]      # inserted, updated, unchanged
+
+    for module in self.modules.values ():
+      cond = GConditions.buildConditionFromDict ( \
+          {'gnue_name': module ['gnue_name']})
+      resultSet = self._dtsModules.createResultSet (cond)
+
+      if resultSet.firstRecord () is None:
+        resultSet.insertRecord ()
+        modifier = 0
+        module ['gnue_id'] = self.__generateId ()
+      else:
+        module ['gnue_id'] = resultSet.current.getField ('gnue_id')
+        modifier = 1
+
+      if not self.doUpdate (resultSet, module):
+        modifier += 1
+
+      stat [modifier] += 1
+
+    if stat [0] + stat [1]:
+      self.connections.commitAll ()
+
+    print o (u_("  Modules   : %(ins)3d inserted, %(upd)3d updated, %(kept)3d "
+                "unchanged.") \
+             % {'ins': stat [0], 'upd': stat [1], 'kept': stat [2]})
+
+
+  # ---------------------------------------------------------------------------
+  # Update/add classes to the class repository
+  # ---------------------------------------------------------------------------
+
+  def _updateClasses (self):
+    """
+    """
+    attributes = {'name'    : "dts_gnueClass",
+                  'database': self.OPTIONS ['connection'],
+                  'table'   : 'gnue_class'}
+    fieldList = ['gnue_id', 'gnue_name', 'gnue_module', 'gnue_comment']
+
+    datasource = GDataSource.DataSourceWrapper (
+          connections = self.connections,
+          attributes  = attributes,
+          fields      = fieldList,
+          unicodeMode = True)
+
+    stat = [0, 0, 0]      # inserted, updated, unchanged
+
+    for klass in self.classes.values ():
+      moduleId = self.__findModule (klass ['gnue_module'])
+      cond = GConditions.buildConditionFromDict ( \
+          {'gnue_name': klass ['gnue_name'],
+           'gnue_module': moduleId})
+      resultSet = datasource.createResultSet (cond)
+
+      if resultSet.firstRecord () is None:
+        resultSet.insertRecord ()
+        modifier = 0
+        klass ['gnue_id'] = self.__generateId ()
+      else:
+        klass ['gnue_id'] = resultSet.current.getField ('gnue_id')
+        modifier = 1
+
+      # replace the module's name by it's gnue_id
+      klass ['gnue_module'] = moduleId
+
+      if not self.doUpdate (resultSet, klass):
+        modifier += 1
+
+      stat [modifier] += 1
+
+    if stat [0] + stat [1]:
+      self.connections.commitAll ()
+
+    print o (u_("  Classes   : %(ins)3d inserted, %(upd)3d updated, %(kept)3d "
+                "unchanged.") \
+          % {'ins': stat [0], 'upd': stat [1], 'kept': stat [2]})
+
+
+  # ---------------------------------------------------------------------------
+  # Update/add Properties to the class repository
+  # ---------------------------------------------------------------------------
+
+  def _updateProperties (self):
+    """
+    """
+    attributes = {'name'    : "dts_gnueProperty",
+                  'database': self.OPTIONS ['connection'],
+                  'table'   : 'gnue_property'}
+    fieldList = ['gnue_id', 'gnue_module', 'gnue_class', 'gnue_name',
+                 'gnue_type', 'gnue_length', 'gnue_scale', 'gnue_nullable',
+                 'gnue_comment']
+
+    datasource = GDataSource.DataSourceWrapper (
+          connections = self.connections,
+          attributes  = attributes,
+          fields      = fieldList,
+          unicodeMode = True)
+
+    stat = [0, 0, 0]      # inserted, updated, unchanged
+
+    for prop in self.properties.values ():
+      # make sure we have a valid gnue_id for the referenced module
+      moduleId = self.__findModule (prop ['gnue_module'])
+
+      cond = GConditions.buildConditionFromDict ( \
+          {'gnue_name'  : prop ['gnue_name'],
+           'gnue_module': moduleId,
+           'gnue_class' : self.classes [prop ['gnue_class']] ['gnue_id']})
+      resultSet = datasource.createResultSet (cond)
+
+      if resultSet.firstRecord () is None:
+        resultSet.insertRecord ()
+        modifier = 0
+        prop ['gnue_id'] = self.__generateId ()
+      else:
+        prop ['gnue_id'] = resultSet.current.getField ('gnue_id')
+        modifier = 1
+
+      # replace module-name and class-name by their gnue_id's
+      prop ['gnue_module'] = moduleId
+      prop ['gnue_class']  = self.classes [prop ['gnue_class']] ['gnue_id']
+
+      if not self.doUpdate (resultSet, prop):
+        modifier += 1
+
+      stat [modifier] += 1
+
+    if stat [0] + stat [1]:
+      self.connections.commitAll ()
+
+    print o (u_("  Properties: %(ins)3d inserted, %(upd)3d updated, %(kept)3d "
+                "unchanged.") \
+             % {'ins': stat [0], 'upd': stat [1], 'kept': stat [2]})
+
+
+  # ---------------------------------------------------------------------------
+  # Update/add Procedures to the class repository
+  # ---------------------------------------------------------------------------
+
+  def _updateProcedures (self):
+    attributes = {'name'    : "dts_gnueProcedure",
+                  'database': self.OPTIONS ['connection'],
+                  'table'   : 'gnue_procedure'}
+    fieldList = ['gnue_id', 'gnue_module', 'gnue_class', 'gnue_name',
+                 'gnue_type', 'gnue_length', 'gnue_scale', 'gnue_nullable',
+                 'gnue_comment', 'gnue_code', 'gnue_language']
+
+    self._dtsProcedure = GDataSource.DataSourceWrapper (
+                            connections = self.connections,
+                            attributes  = attributes,
+                            fields      = fieldList,
+                            unicodeMode = True)
+
+    stat = [0, 0, 0]      # inserted, updated, unchanged
+
+    for proc in self.procedures.values ():
+      moduleId = self.__findModule (proc ['gnue_module'])
+      cond = GConditions.buildConditionFromDict ( \
+          {'gnue_name'  : proc ['gnue_name'],
+           'gnue_module': moduleId,
+           'gnue_class' : self.classes [proc ['gnue_class']] ['gnue_id']})
+      resultSet = self._dtsProcedure.createResultSet (cond)
+
+      if resultSet.firstRecord () is None:
+        resultSet.insertRecord ()
+        modifier = 0
+        proc ['gnue_id'] = self.__generateId ()
+      else:
+        proc ['gnue_id'] = resultSet.current.getField ('gnue_id')
+        modifier = 1
+
+      # replace module-name and class-name by their gnue_id's
+      proc ['gnue_module'] = moduleId
+      proc ['gnue_class']  = self.classes [proc ['gnue_class']] ['gnue_id']
+
+      if not self.doUpdate (resultSet, proc):
+        modifier += 1
+
+      stat [modifier] += 1
+
+    if stat [0] + stat [1]:
+      self.connections.commitAll ()
+
+    print o (u_("  Procedures: %(ins)3d inserted, %(upd)3d updated, %(kept)3d "
+                "unchanged.") \
+              % {'ins': stat [0], 'upd': stat [1], 'kept': stat [2]})
+
+
+  # ---------------------------------------------------------------------------
+  # Update/add Procedures to the class repository
+  # ---------------------------------------------------------------------------
+
+  def _updateParameter (self):
+    attributes = {'name'    : "dts_gnueParameter",
+                  'database': self.OPTIONS ['connection'],
+                  'table'   : 'gnue_parameter'}
+    fieldList = ['gnue_id', 'gnue_procedure', 'gnue_name', 'gnue_type',
+                 'gnue_scale', 'gnue_length', 'gnue_comment']
+
+    self._dtsParameter = GDataSource.DataSourceWrapper (
+                            connections = self.connections,
+                            attributes  = attributes,
+                            fields      = fieldList,
+                            unicodeMode = True)
+
+    stat = [0, 0, 0]      # inserted, updated, unchanged
+
+    for param in self.parameters.values ():
+
+      if self.procedures.has_key (param ['gnue_procedure']):
+        procId = self.procedures [param ['gnue_procedure']] ['gnue_id']
+      else:
+        raise ProcedureNotFoundError, (param ['gnue_procedure'])
+
+      cond = GConditions.buildConditionFromDict ( \
+          {'gnue_name'  : param ['gnue_name'],
+           'gnue_procedure': procId})
+      resultSet = self._dtsParameter.createResultSet (cond)
+
+      if resultSet.firstRecord () is None:
+        resultSet.insertRecord ()
+        modifier = 0
+        param ['gnue_id'] = self.__generateId ()
+      else:
+        param ['gnue_id'] = resultSet.current.getField ('gnue_id')
+        modifier = 1
+
+      # replace module-name and class-name by their gnue_id's
+      param ['gnue_procedure'] = procId
+
+      if not self.doUpdate (resultSet, param):
+        modifier += 1
+
+      stat [modifier] += 1
+
+    if stat [0] + stat [1]:
+      self.connections.commitAll ()
+
+    print o (u_("  Parameters: %(ins)3d inserted, %(upd)3d updated, %(kept)3d "
+                "unchanged.") \
+              % {'ins': stat [0], 'upd': stat [1], 'kept': stat [2]})
+
+
+  # ---------------------------------------------------------------------------
+  # Perform an update on the given resultset using a given data dictionary
+  # ---------------------------------------------------------------------------
+
+  def doUpdate (self, resultSet, data):
+    """
+    This function sets all fields in the current record of the resultset base
+    on the key/values given by the data dictionary. It returns TRUE, if a field
+    value has been changed, otherwise FALSE. If a field was changed, the record
+    gets posted.
+
+    @param resultSet: resultset with the current record to be updated
+    @param data: dictionary with keys and values used for updates
+    @return: TRUE if a field has been changed, FALSE if no field has been
+        changed.
+    """
+    doPost = False
+
+    for key in data:
+      if resultSet.current.getField (key) != data [key]:
+        resultSet.current.setField (key, data [key])
+        doPost = True
+
+    if doPost:
+      resultSet.post ()
+
+    return doPost
+
+
+  # ---------------------------------------------------------------------------
+  # Find a module by name
+  # ---------------------------------------------------------------------------
+
+  def __findModule (self, module):
+    if self.modules.has_key (module):
+      return self.modules [module]['gnue_id']
+    else:
+      mc = GConditions.buildConditionFromDict ({'gnue_name': module})
+      rs = self._dtsModules.createResultSet (mc)
+      if rs.firstRecord () is None:
+        raise ModuleNotFoundError, (module)
+      return rs.current.getField ('gnue_id')
+
+
+  # ---------------------------------------------------------------------------
+  # Generate a new object id
+  # ---------------------------------------------------------------------------
+
+  def __generateId (self):
+    """
+    This function generates a new gnue_id like it is done by appserver. Once
+    this algorithm should be replace by a better one.
+    """
+    result = u''
+    for i in range (0, 32):
+      result = result + str (int (whrandom.random () * 10))
+    return result
+
+
+if __name__ == "__main__":
+  gcdConverter ().run ()

Modified: trunk/gnue-common/packaging/win32/GNUe-Appserver-debug.iss
===================================================================
--- trunk/gnue-common/packaging/win32/GNUe-Appserver-debug.iss  2004-08-26 
16:05:57 UTC (rev 6218)
+++ trunk/gnue-common/packaging/win32/GNUe-Appserver-debug.iss  2004-08-26 
16:28:47 UTC (rev 6219)
@@ -30,7 +30,8 @@
 [Files]
 Source: c:\gnue\bin\gnue-appserver.exe; DestDir: {app}\bin; Components: main; 
Flags: ignoreversion
 Source: c:\gnue\bin\gnue-gsdgen.exe; DestDir: {app}\bin; Components: main; 
Flags: ignoreversion
-Source: c:\gnue\bin\gnue-gcd2sql.exe; DestDir: {app}\bin; Components: main; 
Flags: ignoreversion
+Source: c:\gnue\bin\gnue-readgcd.exe; DestDir: {app}\bin; Components: main; 
Flags: ignoreversion
+Source: c:\gnue\bin\gnue-readgld.exe; DestDir: {app}\bin; Components: main; 
Flags: ignoreversion
 Source: c:\gnue\bin\gnue\appserver\*.*; DestDir: {app}\bin\gnue\appserver; 
Flags: recursesubdirs ignoreversion; Components: main
 Source: c:\gnue\share\locale\de\LC_MESSAGES\gnue-appserver.mo; DestDir: 
{app}\share\locale\de\LC_MESSAGES\; Flags: recursesubdirs; Components: 
translations
 Source: c:\gnue\share\locale\es_MX\LC_MESSAGES\gnue-appserver.mo; DestDir: 
{app}\share\locale\es_MX\LC_MESSAGES\; Flags: recursesubdirs; Components: 
translations

Modified: trunk/gnue-common/packaging/win32/GNUe-Appserver.iss
===================================================================
--- trunk/gnue-common/packaging/win32/GNUe-Appserver.iss        2004-08-26 
16:05:57 UTC (rev 6218)
+++ trunk/gnue-common/packaging/win32/GNUe-Appserver.iss        2004-08-26 
16:28:47 UTC (rev 6219)
@@ -30,7 +30,8 @@
 [Files]
 Source: c:\gnue\bin\gnue-appserver.exe; DestDir: {app}\bin; Components: main; 
Flags: ignoreversion
 Source: c:\gnue\bin\gnue-gsdgen.exe; DestDir: {app}\bin; Components: main; 
Flags: ignoreversion
-Source: c:\gnue\bin\gnue-gcd2sql.exe; DestDir: {app}\bin; Components: main; 
Flags: ignoreversion
+Source: c:\gnue\bin\gnue-readgcd.exe; DestDir: {app}\bin; Components: main; 
Flags: ignoreversion
+Source: c:\gnue\bin\gnue-readgld.exe; DestDir: {app}\bin; Components: main; 
Flags: ignoreversion
 Source: c:\gnue\bin\gnue\appserver\*.*; DestDir: {app}\bin\gnue\appserver; 
Flags: recursesubdirs ignoreversion; Components: main
 Source: c:\gnue\share\locale\de\LC_MESSAGES\gnue-appserver.mo; DestDir: 
{app}\share\locale\de\LC_MESSAGES\; Flags: recursesubdirs; Components: 
translations
 Source: c:\gnue\share\locale\es_MX\LC_MESSAGES\gnue-appserver.mo; DestDir: 
{app}\share\locale\es_MX\LC_MESSAGES\; Flags: recursesubdirs; Components: 
translations

Modified: trunk/gnue-common/packaging/win32/setup.py
===================================================================
--- trunk/gnue-common/packaging/win32/setup.py  2004-08-26 16:05:57 UTC (rev 
6218)
+++ trunk/gnue-common/packaging/win32/setup.py  2004-08-26 16:28:47 UTC (rev 
6219)
@@ -10,7 +10,8 @@
            "gnue-designer",
            "gnue-forms",
            "gnue-gsdgen",
-           "gnue-gcd2sql",
+           "gnue-readgcd",
+           "gnue-readgld",
            "gnue-import",
            "gnue-navigator",
            "gnue-reports",

Modified: trunk/gnue-common/utils/update-tool-docs
===================================================================
--- trunk/gnue-common/utils/update-tool-docs    2004-08-26 16:05:57 UTC (rev 
6218)
+++ trunk/gnue-common/utils/update-tool-docs    2004-08-26 16:28:47 UTC (rev 
6219)
@@ -30,7 +30,8 @@
 gcvs $GDTD gld       gnue-appserver/doc/gld.dtd
 (cd gnue-appserver/doc/man && gacvs --selfdoc manpage --selfdoc-file 
gnue-appserver.1)
 (cd gnue-appserver/doc/man && ggcvs --selfdoc manpage --selfdoc-file 
gnue-gsdgen.1)
-(cd gnue-appserver/doc/man && gcdcvs --selfdoc manpage --selfdoc-file 
gnue-gcd2sql.1)
+(cd gnue-appserver/doc/man && gcdcvs --selfdoc manpage --selfdoc-file 
gnue-readgcd.1)
+(cd gnue-appserver/doc/man && gldcvs --selfdoc manpage --selfdoc-file 
gnue-readgld.1)
 
 # Navigator
 gcvs $GDTD navigator gnue-navigator/doc/gnue-navigator.dtd





reply via email to

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