123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- // Licensed Materials - Property of IBM
- //
- // IBM Cognos Products: pps
- //
- // (C) Copyright IBM Corp. 2005, 2017
- //
- // US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- //This Javascript file defines a class that streams an attribute tree to and from XML
- function AttributeTreeStreamer() {
- this.getAttributeTreeFromXML = function(xmlDoc) {
-
- var attrTree = new AttributeTree();
-
- //Get to the root node
-
- var root = null;
- for (var i = 0; (i < xmlDoc.childNodes.length && root == null); i++) {
- if (xmlDoc.childNodes[i].nodeName == "admin")
- root = xmlDoc.childNodes[i];
- }
- //Also get the next item( the tree root )
- if (root.childNodes[0].getAttribute("name") == "TreeRoot")
- root = root.childNodes[0];
-
- if (root) {
- for (var i = 0; i < root.childNodes.length; i++)
- createAttributeNode(root.childNodes[i], attrTree.getRoot());
- }
-
- return attrTree;
- }
-
- function createAttributeNode(domNode, parentAttNode) {
- var node = null;
- var name = domNode.getAttribute("name");
-
- if (domNode.getAttribute("type") == "folder") {
- node = new AttributeTreeNodeFolder(name);
-
- for (var i = 0; i < domNode.childNodes.length; i++)
- createAttributeNode(domNode.childNodes[i],node);
-
- } else if (domNode.getAttribute("type") == "int") {
- node = new AttributeTreeNodeInt(name,
- parseInt(domNode.getAttribute("value")),
- domNode.getAttribute("subtype"),
- (domNode.getAttribute("specialized") == '1'));
- } else if (domNode.getAttribute("type") == "string") {
- node = new AttributeTreeNodeString(name,
- domNode.getAttribute("value"),
- domNode.getAttribute("subtype"),
- (domNode.getAttribute("specialized") == '1'));
- }
-
- if (node) {
- parentAttNode.addChild(name,node);
- }
- }
-
- this.getXMLFromAttributeTree = function(attributeTree) {
-
- //Create the XML document
- var xmlDoc;
- // code for IE
- if (window.ActiveXObject)
- {
- xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
- }
- // code for Mozilla, Firefox, Opera, etc.
- else if (document.implementation && document.implementation.createDocument)
- {
- xmlDoc=document.implementation.createDocument("","",null);
- }
-
- //Create the root nodes;
-
- var admin = xmlDoc.createElement("admin");
- admin.setAttribute("version","1");
-
- var rootFolder = createXMLNode(xmlDoc, attributeTree.getRoot());
-
- admin.appendChild(rootFolder);
-
- xmlDoc.appendChild(admin);
-
- return xmlDoc;
- }
-
- function createXMLNode(doc, attTreeNode) {
-
- var node = doc.createElement("node");
- node.setAttribute("type",attTreeNode.type);
- node.setAttribute("name",attTreeNode.name);
- if (attTreeNode.type == "folder") {
-
- var children = attTreeNode.getChildren();
- for (var i = 0; i < children.length; i++)
- node.appendChild(createXMLNode(doc, children[i]));
-
- } else if (attTreeNode.type == "int") {
- node.setAttribute("subtype",attTreeNode.subType);
- node.setAttribute("specialized",(attTreeNode.specialized)? "1" : "0");
- node.setAttribute("value",attTreeNode.value);
-
- } else if (attTreeNode.type == "string") {
- node.setAttribute("subtype",attTreeNode.subType);
- node.setAttribute("specialized",(attTreeNode.specialized)? "1" : "0");
- node.setAttribute("value",attTreeNode.value);
-
- }
-
- return node;
-
- }
- }
|