[rhmessaging-commits] rhmessaging commits: r1357 - in mgmt/mint: python/mint and 1 other directory.

rhmessaging-commits at lists.jboss.org rhmessaging-commits at lists.jboss.org
Mon Nov 26 11:30:24 EST 2007


Author: nunofsantos
Date: 2007-11-26 11:30:24 -0500 (Mon, 26 Nov 2007)
New Revision: 1357

Added:
   mgmt/mint/python/mint/schemaparser.py
Removed:
   mgmt/mint/schemaparser.py
Log:
moving schemaparser.py to python/mint

Copied: mgmt/mint/python/mint/schemaparser.py (from rev 1355, mgmt/mint/schemaparser.py)
===================================================================
--- mgmt/mint/python/mint/schemaparser.py	                        (rev 0)
+++ mgmt/mint/python/mint/schemaparser.py	2007-11-26 16:30:24 UTC (rev 1357)
@@ -0,0 +1,151 @@
+import mllib
+from sqlobject import *
+
+class SchemaParser:
+  """parses broker XML schema"""
+
+  def __init__(self):
+    self.options = dict()
+    self.parseConfigFile()
+    self.style = MixedCaseUnderscoreStyle()
+    self.pythonOutput = "from sqlobject import *\n"
+    self.pythonOutput += "from datetime import datetime\n"
+    self.additionalPythonOutput = ""
+    self.currentClass = ""
+    self.finalPythonOutput = "\nclassToSchemaNameMap = dict()\n"
+    self.finalPythonOutput += "schemaNameToClassMap = dict()\n"
+    self.pythonOutput += "conn = connectionForURI(\"%s\")\n" % (self.options["dsn"])
+    self.pythonOutput += "sqlhub.processConnection = conn\n\n"
+    # mapping between xml schema types and database column types
+    # see xml/MintTypes.xml
+    self.dataTypesMap = dict()
+    self.dataTypesMap["objId"] = "ForeignKey"
+    self.dataTypesMap["uint8"] = self.dataTypesMap["hilo8"] = self.dataTypesMap["count8"] = "SmallIntCol"
+    self.dataTypesMap["uint16"] = self.dataTypesMap["hilo16"] = self.dataTypesMap["count16"] = "SmallIntCol"
+    self.dataTypesMap["uint32"] = self.dataTypesMap["hilo32"] = self.dataTypesMap["count32"] = "IntCol"
+    self.dataTypesMap["uint64"] = self.dataTypesMap["hilo64"] = self.dataTypesMap["count64"] = "BigIntCol"
+    self.dataTypesMap["bool"] = "BoolCol"
+    self.dataTypesMap["sstr"] = self.dataTypesMap["lstr"] = "StringCol"
+    
+  def attrNameFromDbColumn(self, name, removeSuffix=""):
+    return self.style.dbColumnToPythonAttr(name.replace(removeSuffix, ""))
+  
+  def generateAttrib(self, attribName, attribType, params=""):
+    if (params.find("default") < 0):
+      if (params == ""):
+        params = "default=None"
+      else:
+        params += ", default=None"
+    self.pythonOutput += "  %s = %s(%s)\n" % (attribName, attribType, params)
+
+  def generateTimestampAttrib(self, col):
+    self.generateAttrib(col + "Time", "TimestampCol") #, "default=datetime.min")
+
+  def generateForeignKeyAttrib(self, name, reference):
+    params = "'%s', cascade='null'" % (reference)
+    self.generateAttrib(name, "ForeignKey", params)
+    
+  def generateHiLoAttrib(self, name, type):
+    self.generateAttrib(name, type)
+    self.generateAttrib(name + "Low", type)
+    self.generateAttrib(name + "High", type)
+
+  def generateMultipleJoin(self, tableFrom, tableTo):
+    attrib = tableTo.lower() + "s"
+    self.additionalPythonOutput += "\n%s.sqlmeta.addJoin(MultipleJoin('%s', joinMethodName='%s'))\n" % (tableFrom, tableTo, attrib)
+
+  def generateClassAttribs(self, schemaName, elements):
+    for elem in elements:
+      if (elem["@name"].endswith("Ref")):
+        reference = self.style.dbTableToPythonClass(elem["@name"]).replace("Ref", "")
+        attrib = reference[0].lower() + reference[1:]
+        self.generateForeignKeyAttrib(attrib, reference)
+        self.generateMultipleJoin(reference, self.currentClass)
+      elif (elem["@type"].startswith("hilo")):
+        self.generateHiLoAttrib(self.attrNameFromDbColumn(elem["@name"]), self.dataTypesMap[elem["@type"]])
+      else:
+        args = ""
+        if (elem["@type"] == "sstr"):
+          args += "length=1000"
+        elif (elem["@type"] == "lstr"):
+          args += "length=4000"
+        self.generateAttrib(self.attrNameFromDbColumn(elem["@name"]), self.dataTypesMap[elem["@type"]], args)
+
+  def startClass(self, schemaName, stats=False):
+    if (stats):
+      pythonName = self.style.dbTableToPythonClass(schemaName + "_stats")
+      colPythonName = self.style.dbColumnToPythonAttr(schemaName)
+      keyPythonName = self.style.dbTableToPythonClass(schemaName)
+    else:
+      pythonName = self.style.dbTableToPythonClass(schemaName)
+      statsPythonName = self.style.dbTableToPythonClass(schemaName + "_stats")
+    self.currentClass = pythonName
+    self.pythonOutput += "\nclass %s(SQLObject):\n" % (pythonName)
+    self.generateAttrib("idOriginal", "BigIntCol")
+    self.generateTimestampAttrib("rec")
+    if (stats):
+      self.generateForeignKeyAttrib(colPythonName, keyPythonName)
+    else:
+      self.generateTimestampAttrib("creation")
+      self.generateTimestampAttrib("deletion")
+      self.generateAttrib("managedBroker", "StringCol", "length=1000")
+      self.generateForeignKeyAttrib("stats", statsPythonName)
+      self.generateForeignKeyAttrib("statsPrev", statsPythonName)
+      self.finalPythonOutput += "classToSchemaNameMap['%s'] = '%s'\n" % (pythonName, schemaName)
+      self.finalPythonOutput += "schemaNameToClassMap['%s'] = %s\n" % (schemaName, pythonName)
+      
+  def generateMethod(self, elem):
+    if (elem["@desc"] != None):
+      comment = '    """' + elem["@desc"] + '"""\n'
+    else:
+      comment = ""
+    formalArgs = ", "
+    actualArgs = "    actualArgs = dict()\n"
+    for arg in elem.query["arg"]:
+      formalArgs += "%s, " % (arg["@name"])
+      actualArgs += "    actualArgs[\"%s\"] = %s\n" % (arg["@name"], arg["@name"])
+    if (formalArgs != ", "):
+      formalArgs = formalArgs[:-2]
+    else:
+      formalArgs = ""
+    self.pythonOutput += "\n  def %s(self, model, managedBrokerLabel, callbackMethod%s):\n" % (elem["@name"], formalArgs)
+    self.pythonOutput += comment
+    self.pythonOutput += actualArgs
+    self.pythonOutput += "    methodId = model.registerCallback(callbackMethod)\n"
+    self.pythonOutput += "    model.getConnectedBroker(managedBrokerLabel).method(methodId, self.idOriginal, \\\n"
+    self.pythonOutput += "      classToSchemaNameMap[self.__class__.__name__], \"%s\", " % (elem["@name"])
+    self.pythonOutput += "args=actualArgs, packageName=\"qpid\")\n"
+
+  def endClass(self):
+    if (self.additionalPythonOutput != ""):
+      self.pythonOutput += self.additionalPythonOutput + "\n"
+      self.additionalPythonOutput = ""
+    if (self.pythonOutput.endswith("(SQLObject):\n")):
+        self.pythonOutput += "  pass\n"
+    self.currentClass = ""
+    
+  def parseConfigFile(self):
+    config = mllib.xml_parse("config.xml")
+    configOptions = config.query["config/configOption"]
+    for opt in configOptions:
+      self.options[opt["@name"]] = opt["@value"]
+
+  def generateCode(self):
+    outputFile = open(self.options["pythonOutput"], "w")
+    schema = mllib.xml_parse(self.options["schemaXML"])
+    classes = schema.query["schema/class"]
+    for cls in classes:
+      self.startClass(cls["@name"])
+      self.generateClassAttribs(cls["@name"], cls.query["configElement"])
+      for elem in cls.query["method"]:
+        self.generateMethod(elem)
+      self.endClass()
+      self.startClass(cls["@name"], stats=True)
+      self.generateClassAttribs(cls["@name"], cls.query["instElement"])
+      self.endClass()
+    outputFile.write(self.pythonOutput + self.finalPythonOutput)
+    outputFile.close()
+
+
+parser = SchemaParser()
+parser.generateCode()

Deleted: mgmt/mint/schemaparser.py
===================================================================
--- mgmt/mint/schemaparser.py	2007-11-26 14:46:02 UTC (rev 1356)
+++ mgmt/mint/schemaparser.py	2007-11-26 16:30:24 UTC (rev 1357)
@@ -1,151 +0,0 @@
-import mllib
-from sqlobject import *
-
-class SchemaParser:
-  """parses broker XML schema"""
-
-  def __init__(self):
-    self.options = dict()
-    self.parseConfigFile()
-    self.style = MixedCaseUnderscoreStyle()
-    self.pythonOutput = "from sqlobject import *\n"
-    self.pythonOutput += "from datetime import datetime\n"
-    self.additionalPythonOutput = ""
-    self.currentClass = ""
-    self.finalPythonOutput = "\nclassToSchemaNameMap = dict()\n"
-    self.finalPythonOutput += "schemaNameToClassMap = dict()\n"
-    self.pythonOutput += "conn = connectionForURI(\"%s\")\n" % (self.options["dsn"])
-    self.pythonOutput += "sqlhub.processConnection = conn\n\n"
-    # mapping between xml schema types and database column types
-    # see xml/MintTypes.xml
-    self.dataTypesMap = dict()
-    self.dataTypesMap["objId"] = "ForeignKey"
-    self.dataTypesMap["uint8"] = self.dataTypesMap["hilo8"] = self.dataTypesMap["count8"] = "SmallIntCol"
-    self.dataTypesMap["uint16"] = self.dataTypesMap["hilo16"] = self.dataTypesMap["count16"] = "SmallIntCol"
-    self.dataTypesMap["uint32"] = self.dataTypesMap["hilo32"] = self.dataTypesMap["count32"] = "IntCol"
-    self.dataTypesMap["uint64"] = self.dataTypesMap["hilo64"] = self.dataTypesMap["count64"] = "BigIntCol"
-    self.dataTypesMap["bool"] = "BoolCol"
-    self.dataTypesMap["sstr"] = self.dataTypesMap["lstr"] = "StringCol"
-    
-  def attrNameFromDbColumn(self, name, removeSuffix=""):
-    return self.style.dbColumnToPythonAttr(name.replace(removeSuffix, ""))
-  
-  def generateAttrib(self, attribName, attribType, params=""):
-    if (params.find("default") < 0):
-      if (params == ""):
-        params = "default=None"
-      else:
-        params += ", default=None"
-    self.pythonOutput += "  %s = %s(%s)\n" % (attribName, attribType, params)
-
-  def generateTimestampAttrib(self, col):
-    self.generateAttrib(col + "Time", "TimestampCol") #, "default=datetime.min")
-
-  def generateForeignKeyAttrib(self, name, reference):
-    params = "'%s', cascade='null'" % (reference)
-    self.generateAttrib(name, "ForeignKey", params)
-    
-  def generateHiLoAttrib(self, name, type):
-    self.generateAttrib(name, type)
-    self.generateAttrib(name + "Low", type)
-    self.generateAttrib(name + "High", type)
-
-  def generateMultipleJoin(self, tableFrom, tableTo):
-    attrib = tableTo.lower() + "s"
-    self.additionalPythonOutput += "\n%s.sqlmeta.addJoin(MultipleJoin('%s', joinMethodName='%s'))\n" % (tableFrom, tableTo, attrib)
-
-  def generateClassAttribs(self, schemaName, elements):
-    for elem in elements:
-      if (elem["@name"].endswith("Ref")):
-        reference = self.style.dbTableToPythonClass(elem["@name"]).replace("Ref", "")
-        attrib = reference[0].lower() + reference[1:]
-        self.generateForeignKeyAttrib(attrib, reference)
-        self.generateMultipleJoin(reference, self.currentClass)
-      elif (elem["@type"].startswith("hilo")):
-        self.generateHiLoAttrib(self.attrNameFromDbColumn(elem["@name"]), self.dataTypesMap[elem["@type"]])
-      else:
-        args = ""
-        if (elem["@type"] == "sstr"):
-          args += "length=1000"
-        elif (elem["@type"] == "lstr"):
-          args += "length=4000"
-        self.generateAttrib(self.attrNameFromDbColumn(elem["@name"]), self.dataTypesMap[elem["@type"]], args)
-
-  def startClass(self, schemaName, stats=False):
-    if (stats):
-      pythonName = self.style.dbTableToPythonClass(schemaName + "_stats")
-      colPythonName = self.style.dbColumnToPythonAttr(schemaName)
-      keyPythonName = self.style.dbTableToPythonClass(schemaName)
-    else:
-      pythonName = self.style.dbTableToPythonClass(schemaName)
-      statsPythonName = self.style.dbTableToPythonClass(schemaName + "_stats")
-    self.currentClass = pythonName
-    self.pythonOutput += "\nclass %s(SQLObject):\n" % (pythonName)
-    self.generateAttrib("idOriginal", "BigIntCol")
-    self.generateTimestampAttrib("rec")
-    if (stats):
-      self.generateForeignKeyAttrib(colPythonName, keyPythonName)
-    else:
-      self.generateTimestampAttrib("creation")
-      self.generateTimestampAttrib("deletion")
-      self.generateAttrib("managedBroker", "StringCol", "length=1000")
-      self.generateForeignKeyAttrib("stats", statsPythonName)
-      self.generateForeignKeyAttrib("statsPrev", statsPythonName)
-      self.finalPythonOutput += "classToSchemaNameMap['%s'] = '%s'\n" % (pythonName, schemaName)
-      self.finalPythonOutput += "schemaNameToClassMap['%s'] = %s\n" % (schemaName, pythonName)
-      
-  def generateMethod(self, elem):
-    if (elem["@desc"] != None):
-      comment = '    """' + elem["@desc"] + '"""\n'
-    else:
-      comment = ""
-    formalArgs = ", "
-    actualArgs = "    actualArgs = dict()\n"
-    for arg in elem.query["arg"]:
-      formalArgs += "%s, " % (arg["@name"])
-      actualArgs += "    actualArgs[\"%s\"] = %s\n" % (arg["@name"], arg["@name"])
-    if (formalArgs != ", "):
-      formalArgs = formalArgs[:-2]
-    else:
-      formalArgs = ""
-    self.pythonOutput += "\n  def %s(self, model, managedBrokerLabel, callbackMethod%s):\n" % (elem["@name"], formalArgs)
-    self.pythonOutput += comment
-    self.pythonOutput += actualArgs
-    self.pythonOutput += "    methodId = model.registerCallback(callbackMethod)\n"
-    self.pythonOutput += "    model.getConnectedBroker(managedBrokerLabel).method(methodId, self.idOriginal, \\\n"
-    self.pythonOutput += "      classToSchemaNameMap[self.__class__.__name__], \"%s\", " % (elem["@name"])
-    self.pythonOutput += "args=actualArgs, packageName=\"qpid\")\n"
-
-  def endClass(self):
-    if (self.additionalPythonOutput != ""):
-      self.pythonOutput += self.additionalPythonOutput + "\n"
-      self.additionalPythonOutput = ""
-    if (self.pythonOutput.endswith("(SQLObject):\n")):
-        self.pythonOutput += "  pass\n"
-    self.currentClass = ""
-    
-  def parseConfigFile(self):
-    config = mllib.xml_parse("config.xml")
-    configOptions = config.query["config/configOption"]
-    for opt in configOptions:
-      self.options[opt["@name"]] = opt["@value"]
-
-  def generateCode(self):
-    outputFile = open(self.options["pythonOutput"], "w")
-    schema = mllib.xml_parse(self.options["schemaXML"])
-    classes = schema.query["schema/class"]
-    for cls in classes:
-      self.startClass(cls["@name"])
-      self.generateClassAttribs(cls["@name"], cls.query["configElement"])
-      for elem in cls.query["method"]:
-        self.generateMethod(elem)
-      self.endClass()
-      self.startClass(cls["@name"], stats=True)
-      self.generateClassAttribs(cls["@name"], cls.query["instElement"])
-      self.endClass()
-    outputFile.write(self.pythonOutput + self.finalPythonOutput)
-    outputFile.close()
-
-
-parser = SchemaParser()
-parser.generateCode()




More information about the rhmessaging-commits mailing list