]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/samples/ide/activegrid/util/xmlutils.py
Docview and IDE patch from Morag Hua with fix for bug #1217890
[wxWidgets.git] / wxPython / samples / ide / activegrid / util / xmlutils.py
diff --git a/wxPython/samples/ide/activegrid/util/xmlutils.py b/wxPython/samples/ide/activegrid/util/xmlutils.py
new file mode 100644 (file)
index 0000000..ac0ed7c
--- /dev/null
@@ -0,0 +1,128 @@
+#----------------------------------------------------------------------------
+# Name:         xmlutils.py
+# Purpose:      XML and Marshaller Utilities
+#
+# Author:       Jeff Norton
+#
+# Created:      6/2/05
+# CVS-ID:       $Id$
+# Copyright:    (c) 2004-2005 ActiveGrid, Inc.
+# License:      wxWindows License
+#----------------------------------------------------------------------------
+
+import os
+import activegrid.util.objutils as objutils
+import activegrid.util.xmlmarshaller as xmlmarshaller
+
+agKnownTypes = None
+
+def defaultLoad(fileObject, knownTypes=None):
+    xml = fileObject.read()
+    loadedObject = unmarshal(xml, knownTypes=knownTypes)
+    if hasattr(fileObject, 'name'):
+        loadedObject.fileName = os.path.abspath(fileObject.name)
+    loadedObject.initialize()
+    return loadedObject
+
+def unmarshal(xml, knownTypes=None):
+    if not knownTypes: knownTypes = getAgKnownTypes()
+    return xmlmarshaller.unmarshal(xml, knownTypes=knownTypes)    
+
+def defaultSave(fileObject, objectToSave, prettyPrint=True, knownTypes=None, encoding='utf-8'):
+    xml = marshal(objectToSave, prettyPrint=prettyPrint, knownTypes=knownTypes, encoding=encoding)
+    fileObject.write(xml)
+    fileObject.flush()
+
+def marshal(objectToSave, prettyPrint=True, knownTypes=None, encoding='utf-8'):
+    if not knownTypes: knownTypes = getAgKnownTypes()
+    return xmlmarshaller.marshal(objectToSave, prettyPrint=prettyPrint, knownTypes=knownTypes, encoding=encoding)
+    
+def cloneObject(objectToClone, knownTypes=None, encoding='utf-8'):
+    if not knownTypes: knownTypes = getAgKnownTypes()
+    xml = xmlmarshaller.marshal(objectToClone, prettyPrint=True, knownTypes=knownTypes, encoding=encoding)
+    clonedObject = xmlmarshaller.unmarshal(xml, knownTypes=knownTypes)
+    if hasattr(objectToClone, 'fileName'):
+        clonedObject.fileName = objectToClone.fileName
+    try:
+        clonedObject.initialize()
+    except AttributeError:
+        pass
+    return clonedObject
+
+def getAgKnownTypes():
+    import activegrid.model.processmodel
+    import activegrid.model.schema
+    import activegrid.data.dataservice
+    import activegrid.server.deployment
+    global agKnownTypes
+    if agKnownTypes == None:
+        tmpAgKnownTypes = {} 
+        AG_TYPE_MAPPING = { 
+            "ag:append"          : "activegrid.model.processmodel.AppendOperation",
+            "ag:body"            : "activegrid.model.processmodel.Body",
+            "ag:cssRule"         : "activegrid.model.processmodel.CssRule",
+            "ag:datasource"      : "activegrid.data.dataservice.DataSource",
+            "ag:debug"           : "activegrid.model.processmodel.DebugOperation",
+            "ag:deployment"      : "activegrid.server.deployment.Deployment",
+            "ag:glue"            : "activegrid.model.processmodel.Glue",
+            "ag:hr"              : "activegrid.model.processmodel.HorizontalRow",
+            "ag:image"           : "activegrid.model.processmodel.Image",
+            "ag:inputs"          : "activegrid.model.processmodel.Inputs",
+            "ag:label"           : "activegrid.model.processmodel.Label",
+            "ag:processmodel"    : "activegrid.model.processmodel.ProcessModel",
+            "ag:processmodelref" : "activegrid.server.deployment.ProcessModelRef",
+            "ag:query"           : "activegrid.model.processmodel.Query",
+            "ag:restParameter"   : "activegrid.server.deployment.RestParameter",
+            "ag:restService"     : "activegrid.server.deployment.RestService",
+            "ag:schemaOptions"   : "activegrid.model.schema.SchemaOptions",
+            "ag:schemaref"       : "activegrid.server.deployment.SchemaRef",
+            "ag:serviceref"      : "activegrid.server.deployment.ServiceRef",
+            "ag:set"             : "activegrid.model.processmodel.SetOperation",
+            "ag:text"            : "activegrid.model.processmodel.Text",
+            "ag:title"           : "activegrid.model.processmodel.Title",
+            "ag:view"            : "activegrid.model.processmodel.View",
+            "bpws:case"          : "activegrid.model.processmodel.BPELCase",
+            "bpws:catch"         : "activegrid.model.processmodel.BPELCatch",
+            "bpws:faultHandlers" : "activegrid.model.processmodel.BPELFaultHandlers",
+            "bpws:invoke"        : "activegrid.model.processmodel.BPELInvoke",
+            "bpws:onMessage"     : "activegrid.model.processmodel.BPELOnMessage",
+            "bpws:otherwise"     : "activegrid.model.processmodel.BPELOtherwise",
+            "bpws:pick"          : "activegrid.model.processmodel.BPELPick",
+            "bpws:process"       : "activegrid.model.processmodel.BPELProcess",
+            "bpws:receive"       : "activegrid.model.processmodel.BPELReceive",
+            "bpws:reply"         : "activegrid.model.processmodel.BPELReply",
+            "bpws:scope"         : "activegrid.model.processmodel.BPELScope",
+            "bpws:sequence"      : "activegrid.model.processmodel.BPELSequence",
+            "bpws:switch"        : "activegrid.model.processmodel.BPELSwitch",
+            "bpws:terminate"     : "activegrid.model.processmodel.BPELTerminate",
+            "bpws:variable"      : "activegrid.model.processmodel.BPELVariable",
+            "bpws:variables"     : "activegrid.model.processmodel.BPELVariables",
+            "bpws:while"         : "activegrid.model.processmodel.BPELWhile",
+            "wsdl:message"       : "activegrid.model.processmodel.WSDLMessage",
+            "wsdl:part"          : "activegrid.model.processmodel.WSDLPart",
+            "xforms:group"       : "activegrid.model.processmodel.XFormsGroup",
+            "xforms:input"       : "activegrid.model.processmodel.XFormsInput",
+            "xforms:label"       : "activegrid.model.processmodel.XFormsLabel",
+            "xforms:output"      : "activegrid.model.processmodel.XFormsOutput",
+            "xforms:secret"      : "activegrid.model.processmodel.XFormsSecret",
+            "xforms:submit"      : "activegrid.model.processmodel.XFormsSubmit",
+            "xs:all"             : "activegrid.model.schema.XsdSequence",
+            "xs:complexType"     : "activegrid.model.schema.XsdComplexType",
+            "xs:element"         : "activegrid.model.schema.XsdElement",
+            "xs:field"           : "activegrid.model.schema.XsdKeyField",
+            "xs:key"             : "activegrid.model.schema.XsdKey",
+            "xs:keyref"          : "activegrid.model.schema.XsdKeyRef",
+            "xs:schema"          : "activegrid.model.schema.Schema",
+            "xs:selector"        : "activegrid.model.schema.XsdKeySelector",              
+            "xs:sequence"        : "activegrid.model.schema.XsdSequence",
+          }
+                   
+        for keyName, className in AG_TYPE_MAPPING.iteritems():
+            try:
+                tmpAgKnownTypes[keyName] = objutils.classForName(className)
+            except KeyError:
+                print "Error mapping knownType", className
+                pass
+        if len(tmpAgKnownTypes) > 0:
+            agKnownTypes = tmpAgKnownTypes
+    return agKnownTypes