|
From: <de...@us...> - 2003-12-20 02:26:31
|
Update of /cvsroot/pymerase/pymerase/pymerase/input
In directory sc8-pr-cvs1:/tmp/cvs-serv28505
Modified Files:
parseXMI.py
Log Message:
Support extracting xmi files from .zargo or .zuml files
Index: parseXMI.py
===================================================================
RCS file: /cvsroot/pymerase/pymerase/pymerase/input/parseXMI.py,v
retrieving revision 1.27
retrieving revision 1.28
diff -C2 -d -r1.27 -r1.28
*** parseXMI.py 10 Sep 2003 02:08:21 -0000 1.27
--- parseXMI.py 20 Dec 2003 02:26:28 -0000 1.28
***************
*** 48,51 ****
--- 48,53 ----
import re
import string
+ import tempfile
+ import zipfile
from smw.metamodel import UML14
***************
*** 624,628 ****
base, ext = os.path.splitext(filename)
! model = loadModel(source)
#try:
#except AttributeError, e:
--- 626,652 ----
base, ext = os.path.splitext(filename)
! # try and extract zipfile
! if zipfile.is_zipfile(source):
! # probably a zargo/zuml file
! zarchive = zipfile.ZipFile(source, 'r')
! zmodel_name = None
! for zfile in zarchive.infolist():
! if re.match(".*\.xmi$", zfile.filename):
! # have we already seen an xmi file?
! if zmodel_name is not None:
! raise RuntimeError("Unrecognized file type, too many xmi files")
! else:
! zmodel_name = zfile.filename
! if zmodel_name is None:
! raise RuntimeError("zipfile contained no XMI file")
!
! # save the extracted file in a way that makes smw happy
! extracted_file = tempfile.NamedTemporaryFile(suffix=".xmi")
! extracted_file.write(zarchive.read(zmodel_name))
! extracted_file.flush()
! model = loadModel(extracted_file.name)
! extracted_file.close()
! else:
! model = loadModel(source)
#try:
#except AttributeError, e:
|