parameters.js 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876
  1. /*
  2. *+------------------------------------------------------------------------+
  3. *| Licensed Materials - Property of IBM
  4. *| IBM Cognos Products: Viewer
  5. *| (C) Copyright IBM Corp. 2001, 2011
  6. *|
  7. *| US Government Users Restricted Rights - Use, duplication or
  8. *| disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  9. *|
  10. *+------------------------------------------------------------------------+
  11. */
  12. function CParameterValueStringOperators(sBetween, sNotBetween, sLessThan, sGreaterThan)
  13. {
  14. this.m_sBetween = sBetween;
  15. this.m_sNotBetween = sNotBetween;
  16. this.m_sLessThan = sLessThan;
  17. this.m_sGreaterThan = sGreaterThan;
  18. }
  19. function CParameterValues()
  20. {
  21. this.m_parameterValues = new CDictionary();
  22. }
  23. CParameterValues.prototype.length = function()
  24. {
  25. var parameterValues = this.m_parameterValues.keys();
  26. if(typeof parameterValues == "undefined" || parameterValues == null) {
  27. return 0;
  28. }
  29. return parameterValues.length;
  30. };
  31. CParameterValues.prototype.getParameterValue = function(name)
  32. {
  33. if(typeof name != "string" || name == "") {
  34. return null;
  35. }
  36. if(this.m_parameterValues.exists(name)) {
  37. return this.m_parameterValues.get(name);
  38. }
  39. return null;
  40. };
  41. CParameterValues.prototype.getAt = function(index)
  42. {
  43. if(index < this.length())
  44. {
  45. var parameterValues = this.m_parameterValues.keys();
  46. if(this.m_parameterValues.exists(parameterValues[index]))
  47. {
  48. return this.m_parameterValues.get(parameterValues[index]);
  49. }
  50. }
  51. return null;
  52. };
  53. CParameterValues.prototype.addParameterValue = function(paramName, parmValueItem)
  54. {
  55. var parameterValue = this.getParameterValue(paramName);
  56. if(parameterValue == null)
  57. {
  58. parameterValue = new CParameterValue();
  59. parameterValue.setName(paramName);
  60. }
  61. parameterValue.addParmValueItem(parmValueItem);
  62. this.m_parameterValues.add(paramName, parameterValue);
  63. };
  64. CParameterValues.prototype.removeParameterValue = function(name)
  65. {
  66. return (this.m_parameterValues.remove(name) != null);
  67. };
  68. CParameterValues.prototype.removeSimpleParmValueItem = function(name, useValue)
  69. {
  70. var parameterValue = this.getParameterValue(name);
  71. if(parameterValue == null) {
  72. return false;
  73. }
  74. return parameterValue.removeSimpleParmValueItem(useValue);
  75. };
  76. CParameterValues.prototype.addSimpleParmValueItem = function(name, useValue, displayValue, inclusiveValue)
  77. {
  78. // validate the parameter name (must be a string, and it must contain something)
  79. if(typeof name != "string" || name == "") {
  80. return null;
  81. }
  82. // validate the use value (must be a string, and it must contain something)
  83. if(typeof useValue != "string" || useValue == "") {
  84. return null;
  85. }
  86. // validate the display value (must be a string, we won't enforce it to contain a value)
  87. if(typeof displayValue != "string") {
  88. return null;
  89. }
  90. // the inclusive value must be either true or false (as a string)
  91. if(typeof inclusiveValue != "string" || (inclusiveValue != "false" && inclusiveValue != "true")) {
  92. return null;
  93. }
  94. var parameterValue = null;
  95. if(this.m_parameterValues.exists(name) == false)
  96. {
  97. parameterValue = new CParameterValue(name);
  98. this.m_parameterValues.add(name, parameterValue);
  99. }
  100. parameterValue = this.m_parameterValues.get(name);
  101. if(typeof parameterValue == "undefined" || parameterValue == null) {
  102. return null;
  103. }
  104. // check for duplicate use values
  105. var parmValueItems = parameterValue.getParmValueItems();
  106. for(var index = 0; index < parmValueItems.length; ++index)
  107. {
  108. var simpleParmValueItem = parmValueItems[index];
  109. if(simpleParmValueItem.getDisplayValue() == displayValue && simpleParmValueItem.getUseValue() == useValue)
  110. {
  111. return;
  112. }
  113. }
  114. return parameterValue.addSimpleParmValueItem(useValue, displayValue, inclusiveValue);
  115. };
  116. CParameterValues.prototype.getSimpleParmValueItem = function(name, useValue)
  117. {
  118. var parameterValue = this.getParameterValue(name);
  119. if(parameterValue != null)
  120. {
  121. return parameterValue.getSimpleParmValueItem(useValue);
  122. }
  123. return null;
  124. };
  125. CParameterValues.prototype.load = function(parameterValuesNode)
  126. {
  127. return this.loadWithOptions(parameterValuesNode, /*credentials*/true);
  128. };
  129. CParameterValues.prototype.loadWithOptions = function(parameterValuesNode, includeCredentials)
  130. {
  131. try
  132. {
  133. var parameterValueNodes = parameterValuesNode.childNodes;
  134. for(var param_value_idx = 0; param_value_idx < parameterValueNodes.length; ++param_value_idx)
  135. {
  136. var parameterValueNode = parameterValueNodes[param_value_idx];
  137. if(parameterValueNode.nodeType == 3) // skip over text nodes
  138. {
  139. continue;
  140. }
  141. var parameterValue = new CParameterValue();
  142. if(parameterValue.load(parameterValueNode))
  143. {
  144. var paramName = parameterValue.name();
  145. if(paramName != "")
  146. {
  147. if (includeCredentials==true || paramName.indexOf("credential:") != 0)
  148. {
  149. this.m_parameterValues.add(paramName, parameterValue);
  150. }
  151. }
  152. }
  153. else
  154. {
  155. delete parameterValue;
  156. }
  157. }
  158. }
  159. catch(e)
  160. {
  161. return false;
  162. }
  163. return true;
  164. };
  165. CParameterValues.prototype.buildXML = function(xmlBuilder, rootNode, sTag)
  166. {
  167. var parameterValuesElement = rootNode.createElement(sTag);
  168. xmlBuilder.XMLBuilderSetAttributeNodeNS(parameterValuesElement, "xmlns:xs", "http://www.w3.org/2001/XMLSchema");
  169. xmlBuilder.XMLBuilderSetAttributeNodeNS(parameterValuesElement, "xmlns:bus", "http://developer.cognos.com/schemas/bibus/3/");
  170. xmlBuilder.XMLBuilderSetAttributeNodeNS(parameterValuesElement, "xmlns:xsd", "http://www.w3.org/2001/XMLSchema");
  171. xmlBuilder.XMLBuilderSetAttributeNodeNS(parameterValuesElement, "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
  172. xmlBuilder.XMLBuilderSetAttributeNodeNS(parameterValuesElement, "SOAP-ENC:arrayType", "bus:parameterValue[]", "http://schemas.xmlsoap.org/soap/encoding/");
  173. xmlBuilder.XMLBuilderSetAttributeNodeNS(parameterValuesElement, "xsi:type", "SOAP-ENC:Array", "http://www.w3.org/2001/XMLSchema-instance");
  174. rootNode.documentElement.appendChild(parameterValuesElement);
  175. var parameterValues = this.m_parameterValues.keys();
  176. for(var parameterValueIdx = 0; parameterValueIdx < parameterValues.length; ++parameterValueIdx)
  177. {
  178. if(this.m_parameterValues.exists(parameterValues[parameterValueIdx]))
  179. {
  180. var parameterValue = this.m_parameterValues.get(parameterValues[parameterValueIdx]);
  181. parameterValue.generateXML(xmlBuilder, parameterValuesElement);
  182. }
  183. }
  184. return parameterValuesElement;
  185. };
  186. CParameterValues.prototype.generateXML = function(xmlBuilder, rootNode, sTag)
  187. {
  188. var sNodeName = "parameterValues";
  189. if(typeof sTag != "undefined" && sTag != null)
  190. {
  191. sNodeName = sTag;
  192. }
  193. XMLBuilderSerializeNode(this.buildXML(xmlBuilder, rootNode, sNodeName));
  194. return XMLBuilderSerializeNode(rootNode);
  195. };
  196. function CParameterValue(name)
  197. {
  198. this.m_name = name;
  199. this.m_parmValueItems = [];
  200. }
  201. CParameterValue.prototype.name = function()
  202. {
  203. return this.m_name;
  204. };
  205. CParameterValue.prototype.setName = function(name)
  206. {
  207. this.m_name = name;
  208. };
  209. CParameterValue.prototype.getParmValueItems = function()
  210. {
  211. return this.m_parmValueItems;
  212. };
  213. CParameterValue.prototype.length = function()
  214. {
  215. return this.m_parmValueItems.length;
  216. };
  217. CParameterValue.prototype.addParmValueItem = function(parmValueItem)
  218. {
  219. this.m_parmValueItems.push(parmValueItem);
  220. };
  221. CParameterValue.prototype.addSimpleParmValueItem = function(useValue, displayValue, inclusiveValue)
  222. {
  223. // validate the use value (must be a string, and it must contain something)
  224. if(typeof useValue != "string" || useValue == "") {
  225. return null;
  226. }
  227. // validate the display value (must be a string, we won't enforce it to contain a value)
  228. if(typeof displayValue != "string") {
  229. return null;
  230. }
  231. // the inclusive value must be either true or false (as a string)
  232. if(typeof inclusiveValue != "string" || (inclusiveValue != "false" && inclusiveValue != "true")) {
  233. return null;
  234. }
  235. var simpleParmValueItem = new CSimpleParmValueItem(useValue, displayValue, inclusiveValue);
  236. this.m_parmValueItems.push(simpleParmValueItem);
  237. return simpleParmValueItem;
  238. };
  239. CParameterValue.prototype.removeSimpleParmValueItem = function(useValue)
  240. {
  241. if(typeof useValue != "string" || useValue == "") {
  242. return false;
  243. }
  244. var arrayPlaceHolder = [];
  245. var bItemRemoved = false;
  246. for(var parm_value_idx = 0; parm_value_idx < this.length(); ++parm_value_idx)
  247. {
  248. var parmValueItem = this.m_parmValueItems[parm_value_idx];
  249. if(parmValueItem instanceof CSimpleParmValueItem)
  250. {
  251. if(parmValueItem.getUseValue() == useValue)
  252. {
  253. bItemRemoved = true;
  254. continue;
  255. }
  256. }
  257. arrayPlaceHolder.push(parmValueItem);
  258. }
  259. this.m_parmValueItems = arrayPlaceHolder;
  260. return bItemRemoved;
  261. };
  262. CParameterValue.prototype.getSimpleParmValueItem = function(useValue)
  263. {
  264. if(typeof useValue != "string" || useValue == "") {
  265. return null;
  266. }
  267. for(var parm_value_idx = 0; parm_value_idx < this.length(); ++parm_value_idx)
  268. {
  269. var parmValueItem = this.m_parmValueItems[parm_value_idx];
  270. if(parmValueItem instanceof CSimpleParmValueItem)
  271. {
  272. if(parmValueItem.getUseValue() == useValue)
  273. {
  274. return parmValueItem;
  275. }
  276. }
  277. }
  278. return null;
  279. };
  280. CParameterValue.prototype.load = function(parameterValueNode)
  281. {
  282. var parameterValueAttrType = parameterValueNode.getAttributeNode("xsi:type");
  283. // make sure the type is a parameterValue
  284. if(parameterValueAttrType == null || parameterValueAttrType.nodeValue != "bus:parameterValue") {
  285. return false;
  286. }
  287. var nameNode = XMLHelper_FindChildByTagName(parameterValueNode, "name", false);
  288. if(nameNode == null) {
  289. return false;
  290. }
  291. this.m_name = XMLHelper_GetText(nameNode);
  292. if(this.m_name == "") {
  293. return false;
  294. }
  295. var valueNode = XMLHelper_FindChildByTagName(parameterValueNode, "value", false);
  296. if(valueNode == null) {
  297. return false;
  298. }
  299. var valueAttrType = valueNode.getAttributeNode("xsi:type");
  300. if(valueAttrType == null || valueAttrType.nodeValue != "SOAP-ENC:Array") {
  301. return false;
  302. }
  303. var arrayType = valueNode.getAttributeNode("SOAP-ENC:arrayType");
  304. if(arrayType == null || arrayType.nodeValue.indexOf("bus:parmValueItem[") == -1) {
  305. return false;
  306. }
  307. var parmValueItemNodes = valueNode.childNodes;
  308. for(var parm_value_item_idx = 0; parm_value_item_idx < parmValueItemNodes.length; ++parm_value_item_idx)
  309. {
  310. var parmValueItemNode = parmValueItemNodes[parm_value_item_idx];
  311. if(parmValueItemNode.nodeType == 3) // skip over text nodes
  312. {
  313. continue;
  314. }
  315. var parmValueItemAttrType = parmValueItemNode.getAttributeNode("xsi:type");
  316. if(parmValueItemAttrType != null)
  317. {
  318. var parmValueItem;
  319. var bSuccess;
  320. switch(parmValueItemAttrType.nodeValue)
  321. {
  322. case "bus:simpleParmValueItem" :
  323. parmValueItem = new CSimpleParmValueItem("","","");
  324. break;
  325. case "bus:boundRangeParmValueItem" :
  326. parmValueItem = new CBoundRangeParmValueItem();
  327. break;
  328. case "bus:unboundedEndRangeParmValueItem" :
  329. parmValueItem = new CUnboundedEndRangeParmValueItem();
  330. break;
  331. case "bus:unboundedStartRangeParmValueItem" :
  332. parmValueItem = new CUnboundedStartRangeParmValueItem();
  333. break;
  334. case "bus:hierarchicalParmValueItem" :
  335. parmValueItem = new CHierarchicalParmValueItem();
  336. break;
  337. default:
  338. return false;
  339. }
  340. bSuccess = parmValueItem.load(parmValueItemNode);
  341. if(bSuccess)
  342. {
  343. this.m_parmValueItems.push(parmValueItem);
  344. }
  345. else
  346. {
  347. delete parmValueItem;
  348. }
  349. }
  350. }
  351. return true;
  352. };
  353. CParameterValue.prototype.generateXML = function(xmlBuilder, parameterValuesElement)
  354. {
  355. var rootNode = parameterValuesElement.ownerDocument;
  356. var parameterValueElement = rootNode.createElement("item");
  357. xmlBuilder.XMLBuilderSetAttributeNodeNS(parameterValueElement, "xsi:type", "bus:parameterValue", "http://www.w3.org/2001/XMLSchema-instance");
  358. parameterValuesElement.appendChild(parameterValueElement);
  359. var busNameElement = xmlBuilder.XMLBuilderCreateElementNS("http://developer.cognos.com/schemas/bibus/3/", "bus:name", rootNode);
  360. xmlBuilder.XMLBuilderSetAttributeNodeNS(busNameElement, "xsi:type", "xs:string", "http://www.w3.org/2001/XMLSchema-instance");
  361. busNameElement.appendChild(rootNode.createTextNode(this.m_name));
  362. parameterValueElement.appendChild(busNameElement);
  363. var busValueElement = xmlBuilder.XMLBuilderCreateElementNS("http://developer.cognos.com/schemas/bibus/3/", "bus:value", rootNode);
  364. xmlBuilder.XMLBuilderSetAttributeNodeNS(busValueElement, "SOAP-ENC:arrayType", "bus:parmValueItem[]", "http://schemas.xmlsoap.org/soap/encoding/");
  365. xmlBuilder.XMLBuilderSetAttributeNodeNS(busValueElement, "xsi:type", "SOAP-ENC:Array", "http://www.w3.org/2001/XMLSchema-instance");
  366. parameterValueElement.appendChild(busValueElement);
  367. for(var parmValueItemIdx = 0; parmValueItemIdx < this.m_parmValueItems.length; ++parmValueItemIdx)
  368. {
  369. if(typeof this.m_parmValueItems[parmValueItemIdx].generateXML != "undefined") {
  370. this.m_parmValueItems[parmValueItemIdx].generateXML(xmlBuilder, busValueElement);
  371. }
  372. }
  373. };
  374. CParameterValue.prototype.toString = function(parameterValueStringOperators)
  375. {
  376. var result = "";
  377. for(var parmValueItemIdx = 0; parmValueItemIdx < this.m_parmValueItems.length; ++parmValueItemIdx)
  378. {
  379. if(result != "")
  380. {
  381. result += ", ";
  382. }
  383. if(typeof this.m_parmValueItems[parmValueItemIdx].toString != "undefined")
  384. {
  385. result += this.m_parmValueItems[parmValueItemIdx].toString(parameterValueStringOperators);
  386. }
  387. }
  388. return result;
  389. };
  390. // This is an abstract base class, do not instantiate directly
  391. function CParmValueItem()
  392. {
  393. this.initialize("true");
  394. }
  395. CParmValueItem.prototype.getInclusiveValue = function()
  396. {
  397. return this.m_inclusiveValue;
  398. };
  399. CParmValueItem.prototype.setInclusiveValue = function(inclusiveValue)
  400. {
  401. this.m_inclusiveValue = inclusiveValue;
  402. };
  403. CParmValueItem.prototype.initialize = function(inclusiveValue)
  404. {
  405. this.m_inclusiveValue = inclusiveValue;
  406. };
  407. CParmValueItem.prototype.load = function(simpleParmValueItemNode)
  408. {
  409. // default to true incase the xml does not specify the inclusive value
  410. this.m_inclusiveValue = "true";
  411. var inclusiveValueNode = XMLHelper_FindChildByTagName(simpleParmValueItemNode, "inclusive", false);
  412. if(inclusiveValueNode != null)
  413. {
  414. var text = XMLHelper_GetText(inclusiveValueNode);
  415. if(text == "true" || text== "false") {
  416. this.m_inclusiveValue = text;
  417. }
  418. }
  419. };
  420. CParmValueItem.prototype.generateXML = function(xmlBuilder, parmValueItem)
  421. {
  422. var rootNode = parmValueItem.ownerDocument;
  423. var businclusiveElement = xmlBuilder.XMLBuilderCreateElementNS("http://developer.cognos.com/schemas/bibus/3/", "bus:inclusive", rootNode);
  424. xmlBuilder.XMLBuilderSetAttributeNodeNS(businclusiveElement, "xsi:type", "xs:boolean", "http://www.w3.org/2001/XMLSchema-instance");
  425. businclusiveElement.appendChild(rootNode.createTextNode(this.m_inclusiveValue));
  426. parmValueItem.appendChild(businclusiveElement);
  427. };
  428. function CSimpleParmValueItem(useValue, displayValue, inclusiveValue)
  429. {
  430. // initialize the base class
  431. CSimpleParmValueItem.baseclass.initialize.call(this, inclusiveValue);
  432. // The use value should be considered a constant, once it's set, it can never be changed
  433. this.m_useValue = useValue;
  434. this.m_displayValue = displayValue;
  435. }
  436. // set up the base class
  437. CSimpleParmValueItem.prototype = new CParmValueItem();
  438. CSimpleParmValueItem.prototype.constructor = CSimpleParmValueItem;
  439. CSimpleParmValueItem.baseclass = CParmValueItem.prototype;
  440. CSimpleParmValueItem.prototype.getUseValue = function()
  441. {
  442. return this.m_useValue;
  443. };
  444. CSimpleParmValueItem.prototype.getDisplayValue = function()
  445. {
  446. return this.m_displayValue;
  447. };
  448. CSimpleParmValueItem.prototype.getParmValueItem = function()
  449. {
  450. return this.m_parmValueItem;
  451. };
  452. CSimpleParmValueItem.prototype.setDisplayValue = function(displayValue)
  453. {
  454. this.m_displayValue = displayValue;
  455. };
  456. CSimpleParmValueItem.prototype.setUseValue = function(useValue)
  457. {
  458. this.m_useValue = useValue;
  459. };
  460. CSimpleParmValueItem.prototype.toString = function(parameterValueStringOperators)
  461. {
  462. return this.getDisplayValue();
  463. };
  464. CSimpleParmValueItem.prototype.load = function (simpleParmValueItemNode)
  465. {
  466. // call the base class
  467. CSimpleParmValueItem.baseclass.load.call(this, simpleParmValueItemNode);
  468. var useValueNode = XMLHelper_FindChildByTagName(simpleParmValueItemNode, "use", false);
  469. if(useValueNode == null) {
  470. return false;
  471. }
  472. var useValueText = XMLHelper_GetText(useValueNode);
  473. if(useValueText == "") {
  474. return false;
  475. }
  476. this.m_useValue = useValueText;
  477. var displayValueNode = XMLHelper_FindChildByTagName(simpleParmValueItemNode, "display", false);
  478. if(displayValueNode != null)
  479. {
  480. this.m_displayValue = XMLHelper_GetText(displayValueNode);
  481. }
  482. return true;
  483. };
  484. CSimpleParmValueItem.prototype.generateXML = function(xmlBuilder, busValueElement)
  485. {
  486. var rootNode = busValueElement.ownerDocument;
  487. var simpleParmValueItem = rootNode.createElement("item");
  488. xmlBuilder.XMLBuilderSetAttributeNodeNS(simpleParmValueItem, "xsi:type", "bus:simpleParmValueItem", "http://www.w3.org/2001/XMLSchema-instance");
  489. busValueElement.appendChild(simpleParmValueItem);
  490. // call the base class
  491. CSimpleParmValueItem.baseclass.generateXML.call(this, xmlBuilder, simpleParmValueItem);
  492. var busUseElement = xmlBuilder.XMLBuilderCreateElementNS("http://developer.cognos.com/schemas/bibus/3/", "bus:use", rootNode);
  493. xmlBuilder.XMLBuilderSetAttributeNodeNS(busUseElement, "xsi:type", "xs:string", "http://www.w3.org/2001/XMLSchema-instance");
  494. busUseElement.appendChild(rootNode.createTextNode(this.m_useValue));
  495. simpleParmValueItem.appendChild(busUseElement);
  496. var busDisplayElement = xmlBuilder.XMLBuilderCreateElementNS("http://developer.cognos.com/schemas/bibus/3/", "bus:display", rootNode);
  497. xmlBuilder.XMLBuilderSetAttributeNodeNS(busDisplayElement, "xsi:type", "xs:string", "http://www.w3.org/2001/XMLSchema-instance");
  498. busDisplayElement.appendChild(rootNode.createTextNode(this.m_displayValue));
  499. simpleParmValueItem.appendChild(busDisplayElement);
  500. };
  501. function CBoundRangeParmValueItem()
  502. {
  503. // initialize the base class
  504. CBoundRangeParmValueItem.baseclass.initialize.call(this, "true");
  505. this.m_start = null;
  506. this.m_end = null;
  507. }
  508. CBoundRangeParmValueItem.prototype = new CParmValueItem();
  509. CBoundRangeParmValueItem.prototype.constructor = CBoundRangeParmValueItem;
  510. CBoundRangeParmValueItem.baseclass = CParmValueItem.prototype;
  511. CBoundRangeParmValueItem.prototype.setStart = function(start)
  512. {
  513. this.m_start = start;
  514. };
  515. CBoundRangeParmValueItem.prototype.getStart = function()
  516. {
  517. return this.m_start;
  518. };
  519. CBoundRangeParmValueItem.prototype.setEnd = function(end)
  520. {
  521. this.m_end = end;
  522. };
  523. CBoundRangeParmValueItem.prototype.getEnd = function()
  524. {
  525. return this.m_end;
  526. };
  527. CBoundRangeParmValueItem.prototype.toString = function(parameterValueStringOperators)
  528. {
  529. return CViewerCommon.getMessage(parameterValueStringOperators.m_sBetween, [this.m_start.getDisplayValue(), this.m_end.getDisplayValue()]);
  530. };
  531. CBoundRangeParmValueItem.prototype.load = function (boundRangeParmValueItemNode)
  532. {
  533. // call the base class
  534. CBoundRangeParmValueItem.baseclass.load.call(this, boundRangeParmValueItemNode);
  535. this.m_start = new CSimpleParmValueItem("", "", "");
  536. this.m_start.load(XMLHelper_FindChildByTagName(boundRangeParmValueItemNode, "start", false));
  537. this.m_end = new CSimpleParmValueItem("","","");
  538. this.m_end.load(XMLHelper_FindChildByTagName(boundRangeParmValueItemNode, "end", false));
  539. return true;
  540. };
  541. CBoundRangeParmValueItem.prototype.generateXML = function(xmlBuilder, busValueElement)
  542. {
  543. var rootNode = busValueElement.ownerDocument;
  544. var boundRangeParmValueItem = rootNode.createElement("item");
  545. xmlBuilder.XMLBuilderSetAttributeNodeNS(boundRangeParmValueItem, "xsi:type", "bus:boundRangeParmValueItem", "http://www.w3.org/2001/XMLSchema-instance");
  546. busValueElement.appendChild(boundRangeParmValueItem);
  547. // call the base class
  548. CBoundRangeParmValueItem.baseclass.generateXML.call(this, xmlBuilder, boundRangeParmValueItem);
  549. var busStartElement = xmlBuilder.XMLBuilderCreateElementNS("http://developer.cognos.com/schemas/bibus/3/", "bus:start", rootNode);
  550. boundRangeParmValueItem.appendChild(busStartElement);
  551. this.m_start.generateXML(xmlBuilder, busStartElement);
  552. var busEndElement = xmlBuilder.XMLBuilderCreateElementNS("http://developer.cognos.com/schemas/bibus/3/", "bus:end", rootNode);
  553. boundRangeParmValueItem.appendChild(busEndElement);
  554. this.m_end.generateXML(xmlBuilder, busEndElement);
  555. };
  556. function CUnboundedStartRangeParmValueItem()
  557. {
  558. // initialize the base class
  559. CUnboundedStartRangeParmValueItem.baseclass.initialize.call(this, "true");
  560. this.m_end = null;
  561. }
  562. CUnboundedStartRangeParmValueItem.prototype = new CParmValueItem();
  563. CUnboundedStartRangeParmValueItem.prototype.constructor = CUnboundedStartRangeParmValueItem;
  564. CUnboundedStartRangeParmValueItem.baseclass = CParmValueItem.prototype;
  565. CUnboundedStartRangeParmValueItem.prototype.setEnd = function(end)
  566. {
  567. this.m_end = end;
  568. };
  569. CUnboundedStartRangeParmValueItem.prototype.getEnd = function()
  570. {
  571. return this.m_end;
  572. };
  573. CUnboundedStartRangeParmValueItem.prototype.load = function (unboundedStartRangeParmValueItemNode)
  574. {
  575. // call the base class
  576. CUnboundedStartRangeParmValueItem.baseclass.load.call(this, unboundedStartRangeParmValueItemNode);
  577. this.m_end = new CSimpleParmValueItem("","","");
  578. this.m_end.load(XMLHelper_FindChildByTagName(unboundedStartRangeParmValueItemNode, "end", false));
  579. return true;
  580. };
  581. CUnboundedStartRangeParmValueItem.prototype.generateXML = function(xmlBuilder, busValueElement)
  582. {
  583. var rootNode = busValueElement.ownerDocument;
  584. var unboundedStartRangeParmValueItem = rootNode.createElement("item");
  585. xmlBuilder.XMLBuilderSetAttributeNodeNS(unboundedStartRangeParmValueItem, "xsi:type", "bus:unboundedStartRangeParmValueItem", "http://www.w3.org/2001/XMLSchema-instance");
  586. busValueElement.appendChild(unboundedStartRangeParmValueItem);
  587. // call the base class
  588. CUnboundedStartRangeParmValueItem.baseclass.generateXML.call(this, xmlBuilder, unboundedStartRangeParmValueItem);
  589. var busEndElement = xmlBuilder.XMLBuilderCreateElementNS("http://developer.cognos.com/schemas/bibus/3/", "bus:end", rootNode);
  590. unboundedStartRangeParmValueItem.appendChild(busEndElement);
  591. this.m_end.generateXML(xmlBuilder, busEndElement);
  592. };
  593. CUnboundedStartRangeParmValueItem.prototype.toString = function(parameterValueStringOperators)
  594. {
  595. return parameterValueStringOperators.m_sLessThan + " " + this.m_end.getDisplayValue();
  596. };
  597. function CUnboundedEndRangeParmValueItem()
  598. {
  599. // initialize the base class
  600. CUnboundedEndRangeParmValueItem.baseclass.initialize.call(this, "true");
  601. this.m_start = null;
  602. }
  603. CUnboundedEndRangeParmValueItem.prototype = new CParmValueItem();
  604. CUnboundedEndRangeParmValueItem.prototype.constructor = CUnboundedEndRangeParmValueItem;
  605. CUnboundedEndRangeParmValueItem.baseclass = CParmValueItem.prototype;
  606. CUnboundedEndRangeParmValueItem.prototype.setStart = function(start)
  607. {
  608. this.m_start = start;
  609. };
  610. CUnboundedEndRangeParmValueItem.prototype.getStart = function()
  611. {
  612. return this.m_start;
  613. };
  614. CUnboundedEndRangeParmValueItem.prototype.load = function (unboundedEndRangeParmValueItemNode)
  615. {
  616. // call the base class
  617. CUnboundedEndRangeParmValueItem.baseclass.load.call(this, unboundedEndRangeParmValueItemNode);
  618. this.m_start = new CSimpleParmValueItem("","","");
  619. this.m_start.load(XMLHelper_FindChildByTagName(unboundedEndRangeParmValueItemNode, "start", false));
  620. return true;
  621. };
  622. CUnboundedEndRangeParmValueItem.prototype.generateXML = function(xmlBuilder, busValueElement)
  623. {
  624. var rootNode = busValueElement.ownerDocument;
  625. var unboundedEndRangeParmValueItem = rootNode.createElement("item");
  626. xmlBuilder.XMLBuilderSetAttributeNodeNS(unboundedEndRangeParmValueItem, "xsi:type", "bus:unboundedEndRangeParmValueItem", "http://www.w3.org/2001/XMLSchema-instance");
  627. busValueElement.appendChild(unboundedEndRangeParmValueItem);
  628. // call the base class
  629. CUnboundedEndRangeParmValueItem.baseclass.generateXML.call(this, xmlBuilder, unboundedEndRangeParmValueItem);
  630. var busStartElement = xmlBuilder.XMLBuilderCreateElementNS("http://developer.cognos.com/schemas/bibus/3/", "bus:start", rootNode);
  631. unboundedEndRangeParmValueItem.appendChild(busStartElement);
  632. this.m_start.generateXML(xmlBuilder, busStartElement);
  633. };
  634. CUnboundedEndRangeParmValueItem.prototype.toString = function(parameterValueStringOperators)
  635. {
  636. return parameterValueStringOperators.m_sGreaterThan + " " + this.m_start.getDisplayValue();
  637. };
  638. function CHierarchicalParmValueItem()
  639. {
  640. // initialize the base class
  641. CHierarchicalParmValueItem.baseclass.initialize.call(this, "true");
  642. this.m_value = null;
  643. this.m_subNodes = [];
  644. }
  645. CHierarchicalParmValueItem.prototype = new CParmValueItem();
  646. CHierarchicalParmValueItem.prototype.constructor = CHierarchicalParmValueItem;
  647. CHierarchicalParmValueItem.baseclass = CParmValueItem.prototype;
  648. CHierarchicalParmValueItem.prototype.getValue = function()
  649. {
  650. return this.m_value;
  651. };
  652. CHierarchicalParmValueItem.prototype.getSubNodes = function()
  653. {
  654. return this.m_subNodes;
  655. };
  656. CHierarchicalParmValueItem.prototype.setValue = function(value)
  657. {
  658. this.m_value = value;
  659. };
  660. CHierarchicalParmValueItem.prototype.setSubNodes = function(subNodes)
  661. {
  662. this.m_subNodes = subNodes;
  663. };
  664. CHierarchicalParmValueItem.prototype.load = function (hierarchicalParmValueItemNode)
  665. {
  666. // call the base class
  667. CHierarchicalParmValueItem.baseclass.load.call(this, hierarchicalParmValueItemNode);
  668. this.m_value = new CSimpleParmValueItem("","","");
  669. this.m_value.load(XMLHelper_FindChildByTagName(hierarchicalParmValueItemNode, "value", false));
  670. var subNodes = XMLHelper_FindChildByTagName(hierarchicalParmValueItemNode, "subNodes", false);
  671. if(subNodes == null) {
  672. return false;
  673. }
  674. var valueAttrType = subNodes.getAttributeNode("xsi:type");
  675. if(valueAttrType == null || valueAttrType.nodeValue != "SOAP-ENC:Array") {
  676. return false;
  677. }
  678. var arrayType = subNodes.getAttributeNode("SOAP-ENC:arrayType");
  679. if(arrayType == null || arrayType.nodeValue != "bus:hierarchicalParmValueItem[]") {
  680. return false;
  681. }
  682. var hierarchicalParmValueItemNodes = subNodes.childNodes;
  683. for(var index = 0; index < hierarchicalParmValueItemNodes.length; ++index)
  684. {
  685. var hierarchicalParmValueItem = new CHierarchicalParmValueItem();
  686. hierarchicalParmValueItem.load(hierarchicalParmValueItemNodes[index]);
  687. this.m_subNodes.push(hierarchicalParmValueItem);
  688. }
  689. return true;
  690. };
  691. CHierarchicalParmValueItem.prototype.generateXML = function(xmlBuilder, busValueElement)
  692. {
  693. var rootNode = busValueElement.ownerDocument;
  694. var hierarchicalParmValueItem = rootNode.createElement("item");
  695. xmlBuilder.XMLBuilderSetAttributeNodeNS(hierarchicalParmValueItem, "xsi:type", "bus:hierarchicalParmValueItem", "http://www.w3.org/2001/XMLSchema-instance");
  696. busValueElement.appendChild(hierarchicalParmValueItem);
  697. // call the base class
  698. CHierarchicalParmValueItem.baseclass.generateXML.call(this, xmlBuilder, hierarchicalParmValueItem);
  699. var valueElement = xmlBuilder.XMLBuilderCreateElementNS("http://developer.cognos.com/schemas/bibus/3/", "bus:value", rootNode);
  700. hierarchicalParmValueItem.appendChild(valueElement);
  701. this.m_value.generateXML(xmlBuilder, valueElement);
  702. var subNodesElement = xmlBuilder.XMLBuilderCreateElementNS("http://developer.cognos.com/schemas/bibus/3/", "bus:subNodes", rootNode);
  703. xmlBuilder.XMLBuilderSetAttributeNodeNS(subNodesElement, "SOAP-ENC:arrayType", "bus:hierarchicalParmValueItem[]", "http://schemas.xmlsoap.org/soap/encoding/");
  704. xmlBuilder.XMLBuilderSetAttributeNodeNS(subNodesElement, "xsi:type", "SOAP-ENC:Array", "http://www.w3.org/2001/XMLSchema-instance");
  705. hierarchicalParmValueItem.appendChild(subNodesElement);
  706. for(var index = 0; index < this.m_subNodes.length; ++index)
  707. {
  708. this.m_subNodes[index].generateXML(xmlBuilder, subNodesElement);
  709. }
  710. };
  711. CHierarchicalParmValueItem.prototype.toString = function()
  712. {
  713. //TODO Get string for hierarchial values (may be too complex to present in the info bar
  714. return "";
  715. };