From f4e8f1e9f9d01089bc5feec216a186f0664a94f5 Mon Sep 17 00:00:00 2001 From: "Achim D. Brucker" Date: Fri, 6 Apr 2007 12:14:22 +0000 Subject: [PATCH] added simple routine for reading ArgoUML files git-svn-id: https://projects.brucker.ch/su4sml/svn/infsec-import/trunk/src/su4sml@6311 3260e6d1-4efc-4170-b0a7-36055960796d --- src/rep_parser.sml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/rep_parser.sml b/src/rep_parser.sml index 00513ab..6af3d14 100644 --- a/src/rep_parser.sml +++ b/src/rep_parser.sml @@ -27,6 +27,7 @@ structure RepParser : sig val transformXMI : XMI.XmiContent -> Rep.Classifier list val readFile : string -> Rep.Classifier list + val importArgoUML : string -> Rep.Classifier list val test: (string * string list) -> OS.Process.status (* generic exception if something is wrong *) end = @@ -500,6 +501,24 @@ fun readFile f = (info ("opening "^f); (map Rep.normalize o transformXMI o XmiParser.readFile) f) (* handle ex as (IllFormed msg) => raise ex *) +exception FileNotFound of string + +fun importArgoUML file = + let + val tmpFile = OS.FileSys.tmpName () + val base = if String.isSuffix ".zargo" file + then String.substring(file,0, (String.size file) -6) + else file + val _ = print ("*** Syscall: unzip -ca "^base^".zargo "^base^".xmi > "^tmpFile^"\n") + val _ = OS.Process.system ("unzip -ca "^base^".zargo "^base^".xmi > "^tmpFile) + val model = readFile tmpFile + val _ = OS.FileSys.remove tmpFile + + in + model + end + + fun printStackTrace e = let val ss = CompilerExt.exnHistory e