[rhmessaging-commits] rhmessaging commits: r2285 - mgmt/trunk/mint/python/mint.
rhmessaging-commits at lists.jboss.org
rhmessaging-commits at lists.jboss.org
Tue Aug 12 16:25:48 EDT 2008
Author: nunofsantos
Date: 2008-08-12 16:25:47 -0400 (Tue, 12 Aug 2008)
New Revision: 2285
Modified:
mgmt/trunk/mint/python/mint/schemaparser.py
Log:
handle reserved words based on a defined mapping, not on a case-by-case basis
Modified: mgmt/trunk/mint/python/mint/schemaparser.py
===================================================================
--- mgmt/trunk/mint/python/mint/schemaparser.py 2008-08-12 18:54:32 UTC (rev 2284)
+++ mgmt/trunk/mint/python/mint/schemaparser.py 2008-08-12 20:25:47 UTC (rev 2285)
@@ -27,7 +27,18 @@
self.dataTypesMap["bool"] = "BoolCol"
self.dataTypesMap["sstr"] = self.dataTypesMap["lstr"] = "StringCol"
self.dataTypesMap["map"] = "StringCol"
-
+ # mapping for identifiers in the XML schema that are reserved words in either SQL or Python
+ self.reservedWords = {"in": "inRsv", "In": "InRsv",
+ "connection": "clientConnection", "Connection": "ClientConnection",
+ "other": "otherRsv"}
+
+ def renameReservedWord(self, name):
+ if (name in self.reservedWords.keys()):
+ print "Notice: %s is a reserved word, automatically translating to %s" % (name, self.reservedWords[name])
+ return self.reservedWords[name]
+ else:
+ return name
+
def attrNameFromDbColumn(self, name, removeSuffix=""):
return self.style.dbColumnToPythonAttr(name.replace(removeSuffix, ""))
@@ -50,8 +61,7 @@
def generateForeignKeyAttrib(self, name, reference):
params = "'%s', cascade='null'" % (reference)
- if (name == "connection"):
- name = "clientConnection"
+ name = self.renameReservedWord(name)
self.generateAttrib(name, "ForeignKey", params)
def generateHiLoAttrib(self, name, type):
@@ -78,43 +88,39 @@
if (schemaName == "JournalStats"):
print schemaName
for elem in elements:
- # special handling due to name conflict with SqlObject.connection
- if (elem["@name"] == "connection"):
- elem["@name"] = "clientConnection"
+ elemName = self.renameReservedWord(elem["@name"])
if (elem["@type"] == "objId"):
- if (elem["@name"].endswith("Ref")):
+ if (elemName.endswith("Ref")):
reference = elem["@references"]
# handle cases where the referenced class is in a different namespace (ie, contains a ".")
namespaceIndex = reference.find(".")
if (namespaceIndex > 0):
reference = reference[namespaceIndex + 1:]
reference = self.style.dbTableToPythonClass(reference)
- if (reference == "Connection"):
- reference = "ClientConnection"
+ reference = self.renameReservedWord(reference)
attrib = reference[0].lower() + reference[1:]
self.generateForeignKeyAttrib(attrib, reference)
self.generateMultipleJoin(reference, self.currentClass)
else:
# if reference doesn't have a "Ref" prefix, handle as a large uint
- self.generateAttrib(self.attrNameFromDbColumn(elem["@name"]), self.dataTypesMap["uint64"])
+ self.generateAttrib(self.attrNameFromDbColumn(elemName), self.dataTypesMap["uint64"])
elif (elem["@type"].startswith("hilo")):
- self.generateHiLoAttrib(self.attrNameFromDbColumn(elem["@name"]), self.dataTypesMap[elem["@type"]])
+ self.generateHiLoAttrib(self.attrNameFromDbColumn(elemName), self.dataTypesMap[elem["@type"]])
elif (elem["@type"].startswith("mma")):
- self.generateMinMaxAvgAttrib(self.attrNameFromDbColumn(elem["@name"]), self.dataTypesMap[elem["@type"]])
+ self.generateMinMaxAvgAttrib(self.attrNameFromDbColumn(elemName), self.dataTypesMap[elem["@type"]])
else:
args = ""
if (elem["@type"] == "sstr"):
args += "length=1000"
elif (elem["@type"] == "lstr" or elem["@type"] == "ftable"):
args += "length=4000"
- self.generateAttrib(self.attrNameFromDbColumn(elem["@name"]), self.dataTypesMap[elem["@type"]], args)
+ self.generateAttrib(self.attrNameFromDbColumn(elemName), self.dataTypesMap[elem["@type"]], args)
self.pythonOutput += "\n"
self.pythonOutput += " classInfos = dict() # brokerId => classInfo\n"
def startClass(self, schemaName, stats=False):
- if (schemaName == "Connection"):
- schemaName = "ClientConnection"
+ schemaName = self.renameReservedWord(schemaName)
if (stats):
origPythonName = self.style.dbTableToPythonClass(schemaName)
pythonName = self.style.dbTableToPythonClass(schemaName + "_stats")
More information about the rhmessaging-commits
mailing list