attributeTreeStreamer.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. // Licensed Materials - Property of IBM
  2. //
  3. // IBM Cognos Products: pps
  4. //
  5. // (C) Copyright IBM Corp. 2005, 2017
  6. //
  7. // US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  8. //This Javascript file defines a class that streams an attribute tree to and from XML
  9. function AttributeTreeStreamer() {
  10. this.getAttributeTreeFromXML = function(xmlDoc) {
  11. var attrTree = new AttributeTree();
  12. //Get to the root node
  13. var root = null;
  14. for (var i = 0; (i < xmlDoc.childNodes.length && root == null); i++) {
  15. if (xmlDoc.childNodes[i].nodeName == "admin")
  16. root = xmlDoc.childNodes[i];
  17. }
  18. //Also get the next item( the tree root )
  19. if (root.childNodes[0].getAttribute("name") == "TreeRoot")
  20. root = root.childNodes[0];
  21. if (root) {
  22. for (var i = 0; i < root.childNodes.length; i++)
  23. createAttributeNode(root.childNodes[i], attrTree.getRoot());
  24. }
  25. return attrTree;
  26. }
  27. function createAttributeNode(domNode, parentAttNode) {
  28. var node = null;
  29. var name = domNode.getAttribute("name");
  30. if (domNode.getAttribute("type") == "folder") {
  31. node = new AttributeTreeNodeFolder(name);
  32. for (var i = 0; i < domNode.childNodes.length; i++)
  33. createAttributeNode(domNode.childNodes[i],node);
  34. } else if (domNode.getAttribute("type") == "int") {
  35. node = new AttributeTreeNodeInt(name,
  36. parseInt(domNode.getAttribute("value")),
  37. domNode.getAttribute("subtype"),
  38. (domNode.getAttribute("specialized") == '1'));
  39. } else if (domNode.getAttribute("type") == "string") {
  40. node = new AttributeTreeNodeString(name,
  41. domNode.getAttribute("value"),
  42. domNode.getAttribute("subtype"),
  43. (domNode.getAttribute("specialized") == '1'));
  44. }
  45. if (node) {
  46. parentAttNode.addChild(name,node);
  47. }
  48. }
  49. this.getXMLFromAttributeTree = function(attributeTree) {
  50. //Create the XML document
  51. var xmlDoc;
  52. // code for IE
  53. if (window.ActiveXObject)
  54. {
  55. xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  56. }
  57. // code for Mozilla, Firefox, Opera, etc.
  58. else if (document.implementation && document.implementation.createDocument)
  59. {
  60. xmlDoc=document.implementation.createDocument("","",null);
  61. }
  62. //Create the root nodes;
  63. var admin = xmlDoc.createElement("admin");
  64. admin.setAttribute("version","1");
  65. var rootFolder = createXMLNode(xmlDoc, attributeTree.getRoot());
  66. admin.appendChild(rootFolder);
  67. xmlDoc.appendChild(admin);
  68. return xmlDoc;
  69. }
  70. function createXMLNode(doc, attTreeNode) {
  71. var node = doc.createElement("node");
  72. node.setAttribute("type",attTreeNode.type);
  73. node.setAttribute("name",attTreeNode.name);
  74. if (attTreeNode.type == "folder") {
  75. var children = attTreeNode.getChildren();
  76. for (var i = 0; i < children.length; i++)
  77. node.appendChild(createXMLNode(doc, children[i]));
  78. } else if (attTreeNode.type == "int") {
  79. node.setAttribute("subtype",attTreeNode.subType);
  80. node.setAttribute("specialized",(attTreeNode.specialized)? "1" : "0");
  81. node.setAttribute("value",attTreeNode.value);
  82. } else if (attTreeNode.type == "string") {
  83. node.setAttribute("subtype",attTreeNode.subType);
  84. node.setAttribute("specialized",(attTreeNode.specialized)? "1" : "0");
  85. node.setAttribute("value",attTreeNode.value);
  86. }
  87. return node;
  88. }
  89. }