|
From: <de...@us...> - 2003-06-21 01:34:30
|
Update of /cvsroot/pymerase/pymerase/pymerase/input
In directory sc8-pr-cvs1:/tmp/cvs-serv3961
Modified Files:
parseGenexSchemaXML.py
Log Message:
Remap table.dtd references in xml files to the known installed location
Index: parseGenexSchemaXML.py
===================================================================
RCS file: /cvsroot/pymerase/pymerase/pymerase/input/parseGenexSchemaXML.py,v
retrieving revision 1.29
retrieving revision 1.30
diff -C2 -d -r1.29 -r1.30
*** parseGenexSchemaXML.py 30 May 2003 00:54:32 -0000 1.29
--- parseGenexSchemaXML.py 21 Jun 2003 01:34:27 -0000 1.30
***************
*** 25,28 ****
--- 25,30 ----
from pymerase.output.dbAPI import fkeyTypes
+ import pymerase.config
+
from xml.sax import sax2exts, saxutils, handler, SAXNotSupportedException, SAXNotRecognizedException
from xml.sax.handler import feature_namespaces
***************
*** 153,160 ****
else:
err_msg = "unsupported fkey (%s) for table %s" % (fkey_type, tableName)
! #raise NotImplementedError(err_msg)
######################################
# Parsing related components
class GenexClassParser(xml.sax.ContentHandler):
def __init__(self, source, pymeraseConfig, classesInModel):
--- 155,173 ----
else:
err_msg = "unsupported fkey (%s) for table %s" % (fkey_type, tableName)
! raise NotImplementedError(err_msg)
######################################
# Parsing related components
+
+ class GenexEntityResolver(xml.sax.handler.EntityResolver):
+ """Attempt to map table.dtd file to a reasonable location
+ """
+ def resolveEntity(self, publicId, systemId):
+ """
+ """
+ if re.search("table\.dtd$", systemId):
+ return pymerase.config.table_dtd
+ return systemId
+
class GenexClassParser(xml.sax.ContentHandler):
def __init__(self, source, pymeraseConfig, classesInModel):
***************
*** 168,171 ****
--- 181,190 ----
self.currentTable = None
+ # create parser
+ self.parser = sax2exts.make_parser()
+ self.parser.setFeature(feature_namespaces, 0)
+ self.parser.setContentHandler(self)
+ self.parser.setEntityResolver(GenexEntityResolver())
+
def parse(self):
"""Read a genex source files and parse into generalized internal
***************
*** 189,193 ****
self.addFile(f)
except NotImplementedError, e:
! warn(e, RuntimeWarninge)
self.resolveForeignKeys()
--- 208,212 ----
self.addFile(f)
except NotImplementedError, e:
! warn(e, RuntimeWarning)
self.resolveForeignKeys()
***************
*** 200,211 ****
"""
self.current_pathname = pathname
- # create parser
-
- parser = sax2exts.make_parser()
- parser.setFeature(feature_namespaces, 0)
- parser.setContentHandler(self)
# parse file
! parser.parse(pathname)
def resolveForeignKeys(self):
--- 219,225 ----
"""
self.current_pathname = pathname
# parse file
! self.parser.parse(pathname)
def resolveForeignKeys(self):
|