// 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; } }