PropertiesDlg.cs 33 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081
  1. /**
  2. Licensed Materials - Property of IBM
  3. IBM Cognos Products: DOCS
  4. (C) Copyright IBM Corp. 2005
  5. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with
  6. IBM Corp.
  7. */
  8. using System;
  9. using System.Data;
  10. using System.Drawing;
  11. using System.Reflection;
  12. using System.Collections;
  13. using System.ComponentModel;
  14. using System.Windows.Forms;
  15. using System.Web.Services.Protocols;
  16. using SamplesCommon;
  17. using cognosdotnet_10_2;
  18. namespace ContentStoreExplorer
  19. {
  20. /// <summary>
  21. /// Summary description for PropertiesDlg.
  22. /// </summary>
  23. public class PropertiesDlg : System.Windows.Forms.Form
  24. {
  25. private System.Windows.Forms.Button buttonCancel;
  26. private System.ComponentModel.IContainer components;
  27. private System.Windows.Forms.ImageList imageList1;
  28. private System.Windows.Forms.TabControl tabControlProperties;
  29. private System.Windows.Forms.TabPage tabPageTypes;
  30. private System.Windows.Forms.ColumnHeader typeColumnHeaderName;
  31. private System.Windows.Forms.ColumnHeader typeColumnHeaderType;
  32. private System.Windows.Forms.ColumnHeader typeColumnHeaderValue;
  33. private System.Windows.Forms.TabPage tabPageValues;
  34. private System.Windows.Forms.ColumnHeader valuesLVColumnHeaderName;
  35. private System.Windows.Forms.ColumnHeader valuesLVColumnHeaderValue;
  36. private System.Windows.Forms.ListView valuesListView;
  37. private System.Windows.Forms.ColumnHeader typesLVcolumnHeaderName;
  38. private System.Windows.Forms.ColumnHeader typesLVcolumnHeaderValue;
  39. private System.Windows.Forms.ColumnHeader typesLVcolumnHeaderType;
  40. private System.Windows.Forms.ListView typesListView;
  41. /// <summary>
  42. // *** User Defined Globals ***
  43. /// </summary>
  44. ///
  45. private contentManagerService1 cBIServer = null;
  46. private string itemSearchPath = "";
  47. private object selectedObject = null;
  48. private baseClass selectedBCObject = null;
  49. private int IMAGE_COLLAPSED = 0;
  50. private int IMAGE_EXPANDED = 1;
  51. private int NO_IMAGE = 99;
  52. // ****************************
  53. public PropertiesDlg()
  54. {
  55. //
  56. // Required for Windows Form Designer support
  57. //
  58. InitializeComponent();
  59. //
  60. // TODO: Add any constructor code after InitializeComponent call
  61. //
  62. }
  63. /// <summary>
  64. /// Clean up any resources being used.
  65. /// </summary>
  66. protected override void Dispose( bool disposing )
  67. {
  68. if( disposing )
  69. {
  70. if(components != null)
  71. {
  72. components.Dispose();
  73. }
  74. }
  75. base.Dispose( disposing );
  76. }
  77. #region Windows Form Designer generated code
  78. /// <summary>
  79. /// Required method for Designer support - do not modify
  80. /// the contents of this method with the code editor.
  81. /// </summary>
  82. private void InitializeComponent()
  83. {
  84. this.components = new System.ComponentModel.Container();
  85. System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(PropertiesDlg));
  86. this.buttonCancel = new System.Windows.Forms.Button();
  87. this.imageList1 = new System.Windows.Forms.ImageList(this.components);
  88. this.tabControlProperties = new System.Windows.Forms.TabControl();
  89. this.tabPageValues = new System.Windows.Forms.TabPage();
  90. this.valuesListView = new System.Windows.Forms.ListView();
  91. this.valuesLVColumnHeaderName = new System.Windows.Forms.ColumnHeader();
  92. this.valuesLVColumnHeaderValue = new System.Windows.Forms.ColumnHeader();
  93. this.tabPageTypes = new System.Windows.Forms.TabPage();
  94. this.typesListView = new System.Windows.Forms.ListView();
  95. this.typesLVcolumnHeaderName = new System.Windows.Forms.ColumnHeader();
  96. this.typesLVcolumnHeaderValue = new System.Windows.Forms.ColumnHeader();
  97. this.typesLVcolumnHeaderType = new System.Windows.Forms.ColumnHeader();
  98. this.typeColumnHeaderName = new System.Windows.Forms.ColumnHeader();
  99. this.typeColumnHeaderValue = new System.Windows.Forms.ColumnHeader();
  100. this.typeColumnHeaderType = new System.Windows.Forms.ColumnHeader();
  101. this.tabControlProperties.SuspendLayout();
  102. this.tabPageValues.SuspendLayout();
  103. this.tabPageTypes.SuspendLayout();
  104. this.SuspendLayout();
  105. //
  106. // buttonCancel
  107. //
  108. this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
  109. this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
  110. this.buttonCancel.Location = new System.Drawing.Point(400, 528);
  111. this.buttonCancel.Name = "buttonCancel";
  112. this.buttonCancel.Size = new System.Drawing.Size(88, 32);
  113. this.buttonCancel.TabIndex = 2;
  114. this.buttonCancel.Text = "Cancel";
  115. this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
  116. //
  117. // imageList1
  118. //
  119. this.imageList1.ImageSize = new System.Drawing.Size(16, 16);
  120. this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
  121. this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
  122. //
  123. // tabControlProperties
  124. //
  125. this.tabControlProperties.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
  126. | System.Windows.Forms.AnchorStyles.Left)
  127. | System.Windows.Forms.AnchorStyles.Right)));
  128. this.tabControlProperties.Controls.Add(this.tabPageValues);
  129. this.tabControlProperties.Controls.Add(this.tabPageTypes);
  130. this.tabControlProperties.ImageList = this.imageList1;
  131. this.tabControlProperties.Location = new System.Drawing.Point(8, 8);
  132. this.tabControlProperties.Name = "tabControlProperties";
  133. this.tabControlProperties.SelectedIndex = 0;
  134. this.tabControlProperties.Size = new System.Drawing.Size(480, 512);
  135. this.tabControlProperties.TabIndex = 8;
  136. //
  137. // tabPageValues
  138. //
  139. this.tabPageValues.Controls.Add(this.valuesListView);
  140. this.tabPageValues.ImageIndex = 2;
  141. this.tabPageValues.Location = new System.Drawing.Point(4, 23);
  142. this.tabPageValues.Name = "tabPageValues";
  143. this.tabPageValues.Size = new System.Drawing.Size(472, 485);
  144. this.tabPageValues.TabIndex = 2;
  145. this.tabPageValues.Text = "Values";
  146. //
  147. // valuesListView
  148. //
  149. this.valuesListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
  150. | System.Windows.Forms.AnchorStyles.Left)
  151. | System.Windows.Forms.AnchorStyles.Right)));
  152. this.valuesListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
  153. this.valuesLVColumnHeaderName,
  154. this.valuesLVColumnHeaderValue});
  155. this.valuesListView.GridLines = true;
  156. this.valuesListView.LabelEdit = true;
  157. this.valuesListView.LargeImageList = this.imageList1;
  158. this.valuesListView.Location = new System.Drawing.Point(8, 8);
  159. this.valuesListView.MultiSelect = false;
  160. this.valuesListView.Name = "valuesListView";
  161. this.valuesListView.Size = new System.Drawing.Size(456, 472);
  162. this.valuesListView.SmallImageList = this.imageList1;
  163. this.valuesListView.StateImageList = this.imageList1;
  164. this.valuesListView.TabIndex = 0;
  165. this.valuesListView.View = System.Windows.Forms.View.Details;
  166. this.valuesListView.Click += new System.EventHandler(this.valuesListView_Click);
  167. //
  168. // valuesLVColumnHeaderName
  169. //
  170. this.valuesLVColumnHeaderName.Text = "Name";
  171. this.valuesLVColumnHeaderName.Width = 225;
  172. //
  173. // valuesLVColumnHeaderValue
  174. //
  175. this.valuesLVColumnHeaderValue.Text = "Value";
  176. this.valuesLVColumnHeaderValue.Width = 225;
  177. //
  178. // tabPageTypes
  179. //
  180. this.tabPageTypes.Controls.Add(this.typesListView);
  181. this.tabPageTypes.ImageIndex = 3;
  182. this.tabPageTypes.Location = new System.Drawing.Point(4, 23);
  183. this.tabPageTypes.Name = "tabPageTypes";
  184. this.tabPageTypes.Size = new System.Drawing.Size(472, 485);
  185. this.tabPageTypes.TabIndex = 1;
  186. this.tabPageTypes.Text = "Types";
  187. //
  188. // typesListView
  189. //
  190. this.typesListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
  191. | System.Windows.Forms.AnchorStyles.Left)
  192. | System.Windows.Forms.AnchorStyles.Right)));
  193. this.typesListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
  194. this.typesLVcolumnHeaderName,
  195. this.typesLVcolumnHeaderValue,
  196. this.typesLVcolumnHeaderType});
  197. this.typesListView.FullRowSelect = true;
  198. this.typesListView.GridLines = true;
  199. this.typesListView.LargeImageList = this.imageList1;
  200. this.typesListView.Location = new System.Drawing.Point(8, 8);
  201. this.typesListView.Name = "typesListView";
  202. this.typesListView.Size = new System.Drawing.Size(456, 472);
  203. this.typesListView.SmallImageList = this.imageList1;
  204. this.typesListView.StateImageList = this.imageList1;
  205. this.typesListView.TabIndex = 0;
  206. this.typesListView.View = System.Windows.Forms.View.Details;
  207. this.typesListView.Click += new System.EventHandler(this.typesListView_Click);
  208. //
  209. // typesLVcolumnHeaderName
  210. //
  211. this.typesLVcolumnHeaderName.Text = "Name";
  212. this.typesLVcolumnHeaderName.Width = 150;
  213. //
  214. // typesLVcolumnHeaderValue
  215. //
  216. this.typesLVcolumnHeaderValue.Text = "Value";
  217. this.typesLVcolumnHeaderValue.Width = 150;
  218. //
  219. // typesLVcolumnHeaderType
  220. //
  221. this.typesLVcolumnHeaderType.Text = "Type";
  222. this.typesLVcolumnHeaderType.Width = 150;
  223. //
  224. // typeColumnHeaderName
  225. //
  226. this.typeColumnHeaderName.Text = "Name";
  227. this.typeColumnHeaderName.Width = 150;
  228. //
  229. // typeColumnHeaderValue
  230. //
  231. this.typeColumnHeaderValue.Text = "Value";
  232. this.typeColumnHeaderValue.Width = 150;
  233. //
  234. // typeColumnHeaderType
  235. //
  236. this.typeColumnHeaderType.Text = "Type";
  237. this.typeColumnHeaderType.Width = 150;
  238. //
  239. // PropertiesDlg
  240. //
  241. this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
  242. this.CancelButton = this.buttonCancel;
  243. this.ClientSize = new System.Drawing.Size(500, 566);
  244. this.Controls.Add(this.buttonCancel);
  245. this.Controls.Add(this.tabControlProperties);
  246. this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
  247. this.Name = "PropertiesDlg";
  248. this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
  249. this.Text = "Properties";
  250. this.Load += new System.EventHandler(this.PropertiesDlg_Load);
  251. this.tabControlProperties.ResumeLayout(false);
  252. this.tabPageValues.ResumeLayout(false);
  253. this.tabPageTypes.ResumeLayout(false);
  254. this.ResumeLayout(false);
  255. }
  256. #endregion
  257. private void buttonCancel_Click(object sender, System.EventArgs e)
  258. {
  259. this.Close();
  260. }
  261. private void PropertiesDlg_Load(object sender, System.EventArgs e)
  262. {
  263. int arrIdx = 0;
  264. sort[] sortOptions = { new sort() };
  265. searchPathMultipleObject itemSP = new searchPathMultipleObject();
  266. itemSP.Value = itemSearchPath;
  267. // 1. get the object from Server
  268. selectedBCObject = cBIServer.query(itemSP,
  269. new propEnum[] {propEnum.objectClass},
  270. new sort[] {},
  271. new queryOptions())[0];
  272. // 2. get the list of field names in the object use it to build the list of propEnum
  273. // and query for the proper object fields.
  274. this.Text = selectedBCObject.objectClass.value.ToString() + " Properties";
  275. System.Type objType = selectedBCObject.GetType();
  276. int nbFields = objType.GetFields().GetLength(0);
  277. propEnum[] propEnumArr = new propEnum[nbFields];
  278. foreach (FieldInfo fieldInfo in objType.GetFields())
  279. {
  280. propEnumArr[arrIdx] = getPropEnumElement(fieldInfo.Name);
  281. arrIdx++;
  282. }
  283. // 3. Query for the object again to get the values
  284. sortOptions[0].order = orderEnum.ascending;
  285. sortOptions[0].propName = propEnum.defaultName;
  286. selectedBCObject = cBIServer.query(itemSP,
  287. propEnumArr,
  288. new sort[] {},
  289. new queryOptions())[0];
  290. // 4. Build the table and insert the name/value pairs
  291. typesListView.Items.Clear();
  292. valuesListView.Items.Clear();
  293. selectedObject = (object)selectedBCObject;
  294. populateListView(selectedObject, valuesListView);
  295. populateListView(selectedObject, typesListView);
  296. typesListView.Columns[0].Width = -2; // autosize
  297. typesListView.Columns[1].Width = 100;
  298. typesListView.Columns[2].Width = -2;
  299. valuesListView.Columns[0].Width = -2;
  300. valuesListView.Columns[0].Width = 200;
  301. }
  302. private void typesListView_Click(object sender, System.EventArgs e)
  303. {
  304. try
  305. {
  306. if ( (typesListView.SelectedItems != null) && (typesListView.SelectedItems.Count == 1) )
  307. {
  308. if (typesListView.SelectedItems[0].ImageIndex == IMAGE_COLLAPSED)
  309. {
  310. int itemIdx = typesListView.SelectedItems[0].Index;
  311. if (addChildItems(typesListView.SelectedItems[0].Tag, "", ref itemIdx, typesListView))
  312. {
  313. // has children, update the icon
  314. typesListView.SelectedItems[0].ImageIndex = IMAGE_EXPANDED;
  315. }
  316. }
  317. else if (typesListView.SelectedItems[0].ImageIndex == IMAGE_EXPANDED)
  318. {
  319. typesListView.SelectedItems[0].ImageIndex = IMAGE_COLLAPSED;
  320. removeChildItems(typesListView.SelectedItems[0], typesListView);
  321. }
  322. }
  323. typesListView.Columns[0].Width = -2; // autosize
  324. typesListView.Columns[1].Width = 100;
  325. typesListView.Columns[2].Width = -2;
  326. }
  327. catch(System.Exception ex)
  328. {
  329. if (0 != ex.Message.CompareTo("INPUT_CANCELLED_BY_USER"))
  330. {
  331. SamplesException.ShowExceptionMessage( ex.Message, true, "Client Error: " );
  332. }
  333. return;
  334. }
  335. }
  336. private void valuesListView_Click(object sender, System.EventArgs e)
  337. {
  338. try
  339. {
  340. if ( (valuesListView.SelectedItems != null) && (valuesListView.SelectedItems.Count == 1) )
  341. {
  342. if (valuesListView.SelectedItems[0].ImageIndex == IMAGE_COLLAPSED)
  343. {
  344. int itemIdx = valuesListView.SelectedItems[0].Index;
  345. if (addChildItems(valuesListView.SelectedItems[0].Tag, "", ref itemIdx, valuesListView))
  346. {
  347. // has children, update the icon
  348. valuesListView.SelectedItems[0].ImageIndex = IMAGE_EXPANDED;
  349. }
  350. }
  351. else if (valuesListView.SelectedItems[0].ImageIndex == IMAGE_EXPANDED)
  352. {
  353. valuesListView.SelectedItems[0].ImageIndex = IMAGE_COLLAPSED;
  354. removeChildItems(valuesListView.SelectedItems[0], valuesListView);
  355. }
  356. }
  357. valuesListView.Columns[0].Width = -2; // autosize
  358. valuesListView.Columns[1].Width = 200;
  359. this.Width = valuesListView.Columns[0].Width + valuesListView.Columns[1].Width + 45;
  360. }
  361. catch(System.Exception ex)
  362. {
  363. if (0 != ex.Message.CompareTo("INPUT_CANCELLED_BY_USER"))
  364. {
  365. SamplesException.ShowExceptionMessage( ex.Message, true, "Client Error: " );
  366. }
  367. return;
  368. }
  369. }
  370. public void setItemSearchPath(string searchPath)
  371. {
  372. itemSearchPath = searchPath;
  373. }
  374. public void setConnection(contentManagerService1 cmService)
  375. {
  376. cBIServer = cmService;
  377. }
  378. public void populateListView(object selectedObject, ListView lvObject)
  379. {
  380. object objVal = null;
  381. string objValType = "";
  382. string objValString = "";
  383. ListViewItem item = null;
  384. System.Type objType = selectedObject.GetType();
  385. foreach (FieldInfo fieldInfo in objType.GetFields())
  386. {
  387. objVal = fieldInfo.GetValue(selectedObject);
  388. if (objVal == null)
  389. {
  390. item = new ListViewItem(fieldInfo.Name, NO_IMAGE);
  391. item.Tag = objVal;
  392. item.SubItems.Add("null"); // value column
  393. if (0 == lvObject.Name.CompareTo("typesListView"))
  394. {
  395. item.SubItems.Add("<type inaccessible for null objects>"); // type column
  396. }
  397. lvObject.Items.AddRange(new ListViewItem[]{item});
  398. }
  399. else
  400. {
  401. if (0 == lvObject.Name.CompareTo("valuesListView"))
  402. {
  403. objValString = "";
  404. if (0 == fieldInfo.Name.CompareTo("objectClass"))
  405. {
  406. objValString = selectedBCObject.objectClass.value.ToString();
  407. }
  408. else
  409. {
  410. getObjectValue(objVal, ref objValString);
  411. }
  412. if (0 == objValString.CompareTo("ARRAY"))
  413. {
  414. objValString = "";
  415. item = new ListViewItem(fieldInfo.Name, IMAGE_COLLAPSED);
  416. }
  417. else
  418. {
  419. item = new ListViewItem(fieldInfo.Name, NO_IMAGE);
  420. }
  421. item.Tag = objVal;
  422. item.SubItems.Add(objValString); // value column
  423. }
  424. else
  425. {
  426. item = new ListViewItem(fieldInfo.Name, IMAGE_COLLAPSED);
  427. item.Tag = objVal;
  428. item.SubItems.Add(""); // value column
  429. objValType = objVal.GetType().ToString();
  430. objValType = objValType.Substring(13, objValType.Length-13);
  431. item.SubItems.Add(objValType); // type column
  432. }
  433. lvObject.Items.AddRange(new ListViewItem[]{item});
  434. }
  435. }
  436. }
  437. public void getObjectValue(object objVal, ref string result)
  438. {
  439. object childObjVal = null;
  440. foreach (FieldInfo valfieldInfo in objVal.GetType().GetFields())
  441. {
  442. childObjVal = valfieldInfo.GetValue(objVal);
  443. if (childObjVal != null)
  444. {
  445. if (isArrayType(childObjVal))
  446. {
  447. result = "ARRAY";
  448. }
  449. else if (!findSimpleTypeValue(childObjVal, ref result))
  450. {
  451. result = "null";
  452. }
  453. break;
  454. }
  455. else
  456. {
  457. result = "null";
  458. }
  459. }
  460. }
  461. public bool findSimpleTypeValue(object obj, ref string objValString)
  462. {
  463. if (obj == null)
  464. {
  465. return false;
  466. }
  467. int intObj = 0;
  468. bool boolObj = false;
  469. string stringObj = "";
  470. baseClass[] bcObj = new baseClass[1];
  471. System.DateTime dateObj = new DateTime();
  472. if (obj.GetType().Equals(stringObj.GetType()))
  473. {
  474. objValString += (string)obj;
  475. return true;
  476. }
  477. else if (obj.GetType().Equals(dateObj.GetType()))
  478. {
  479. objValString += ((DateTime)obj).ToLongDateString() + "; " + ((DateTime)obj).ToLongTimeString();
  480. return true;
  481. }
  482. else if (obj.GetType().Equals(boolObj.GetType()))
  483. {
  484. boolObj = ((bool)obj);
  485. if (boolObj)
  486. {
  487. objValString += "true";
  488. }
  489. else
  490. {
  491. objValString += "false";
  492. }
  493. return true;
  494. }
  495. else if (obj.GetType().Equals(intObj.GetType()))
  496. {
  497. objValString +=((int)obj).ToString();
  498. return true;
  499. }
  500. else
  501. {
  502. return false;
  503. }
  504. }
  505. public bool isArrayType(object obj)
  506. {
  507. if (0 == obj.GetType().BaseType.ToString().CompareTo("System.Array"))
  508. {
  509. return true;
  510. }
  511. return false;
  512. }
  513. public propEnum getPropEnumElement(string enumName)
  514. {
  515. switch (enumName)
  516. {
  517. case "active":
  518. return propEnum.active;
  519. case "actualCompletionTime":
  520. return propEnum.actualCompletionTime;
  521. case "actualExecutionTime":
  522. return propEnum.actualExecutionTime;
  523. case "advancedSettings":
  524. return propEnum.advancedSettings;
  525. case "ancestors":
  526. return propEnum.ancestors;
  527. case "asOfTime":
  528. return propEnum.asOfTime;
  529. case "base":
  530. return propEnum.@base;
  531. case "brsAffineConnections":
  532. return propEnum.brsAffineConnections;
  533. case "brsMaximumProcesses":
  534. return propEnum.brsMaximumProcesses;
  535. case "brsNonAffineConnections":
  536. return propEnum.brsNonAffineConnections;
  537. case "burstKey":
  538. return propEnum.burstKey;
  539. case "businessPhone":
  540. return propEnum.businessPhone;
  541. case "canBurst":
  542. return propEnum.canBurst;
  543. case "capabilities":
  544. return propEnum.capabilities;
  545. case "capacity":
  546. return propEnum.capacity;
  547. // case "configuration":
  548. // return propEnum.configuration;
  549. case "connections":
  550. return propEnum.connections;
  551. case "connectionString":
  552. return propEnum.connectionString;
  553. case "consumers":
  554. return propEnum.consumers;
  555. case "contact":
  556. return propEnum.contact;
  557. case "contactEMail":
  558. return propEnum.contactEMail;
  559. case "contentLocale":
  560. return propEnum.contentLocale;
  561. case "creationTime":
  562. return propEnum.creationTime;
  563. case "credential":
  564. return propEnum.credential;
  565. case "credentialNamespaces":
  566. return propEnum.credentialNamespaces;
  567. case "credentials":
  568. return propEnum.credentials;
  569. case "dailyPeriod":
  570. return propEnum.dailyPeriod;
  571. case "data":
  572. return propEnum.data;
  573. case "dataSize":
  574. return propEnum.dataSize;
  575. case "dataType":
  576. return propEnum.dataType;
  577. case "defaultDescription":
  578. return propEnum.defaultDescription;
  579. case "defaultName":
  580. return propEnum.defaultName;
  581. case "defaultOutputFormat":
  582. return propEnum.defaultOutputFormat;
  583. case "defaultScreenTip":
  584. return propEnum.defaultScreenTip;
  585. case "defaultTriggerDescription":
  586. return propEnum.defaultTriggerDescription;
  587. case "deployedObject":
  588. return propEnum.deployedObject;
  589. case "deployedObjectAncestorDefaultNames":
  590. return propEnum.deployedObjectAncestorDefaultNames;
  591. case "deployedObjectClass":
  592. return propEnum.deployedObjectClass;
  593. case "deployedObjectStatus":
  594. return propEnum.deployedObjectStatus;
  595. case "deployedObjectUsage":
  596. return propEnum.deployedObjectUsage;
  597. case "description":
  598. return propEnum.description;
  599. case "disabled":
  600. return propEnum.disabled;
  601. case "dispatcherID":
  602. return propEnum.dispatcherID;
  603. case "dispatcherPath":
  604. return propEnum.dispatcherPath;
  605. case "displaySequence":
  606. return propEnum.displaySequence;
  607. case "email":
  608. return propEnum.email;
  609. case "endDate":
  610. return propEnum.endDate;
  611. case "endType":
  612. return propEnum.endType;
  613. case "eventID":
  614. return propEnum.eventID;
  615. case "everyNPeriods":
  616. return propEnum.everyNPeriods;
  617. // case "executionDetails":
  618. // return propEnum.executionDetails;
  619. case "executionPageDefinition":
  620. return propEnum.executionPageDefinition;
  621. case "faxPhone":
  622. return propEnum.faxPhone;
  623. case "format":
  624. return propEnum.format;
  625. case "givenName":
  626. return propEnum.givenName;
  627. case "governors":
  628. return propEnum.governors;
  629. case "hasChildren":
  630. return propEnum.hasChildren;
  631. case "hasMessage":
  632. return propEnum.hasMessage;
  633. case "height":
  634. return propEnum.height;
  635. case "homePhone":
  636. return propEnum.homePhone;
  637. case "horizontalElementsRenderingLimit":
  638. return propEnum.horizontalElementsRenderingLimit;
  639. case "identity":
  640. return propEnum.identity;
  641. case "isolationLevel":
  642. return propEnum.isolationLevel;
  643. // case "jsmNonPeakDemandBeginHour":
  644. // return propEnum.jsmNonPeakDemandBeginHour;
  645. // case "jsmNonPeakDemandMaximumJobs":
  646. // return propEnum.jsmNonPeakDemandMaximumJobs;
  647. // case "jsmPeakDemandBeginHour":
  648. // return propEnum.jsmPeakDemandBeginHour;
  649. // case "jsmPeakDemandMaximumJobs":
  650. // return propEnum.jsmPeakDemandMaximumJobs;
  651. case "lastConfigurationModificationTime":
  652. return propEnum.lastConfigurationModificationTime;
  653. case "lastPage":
  654. return propEnum.lastPage;
  655. case "loadBalancingMode":
  656. return propEnum.loadBalancingMode;
  657. case "locale":
  658. return propEnum.locale;
  659. case "location":
  660. return propEnum.location;
  661. // case "lsAuditAdminLevel":
  662. // return propEnum.lsAuditAdminLevel;
  663. // case "lsAuditLevel":
  664. // return propEnum.lsAuditLevel;
  665. // case "lsAuditOtherLevel":
  666. // return propEnum.lsAuditOtherLevel;
  667. // case "lsAuditUsageLevel":
  668. // return propEnum.lsAuditUsageLevel;
  669. case "members":
  670. return propEnum.members;
  671. case "metadataModel":
  672. return propEnum.metadataModel;
  673. case "mobilePhone":
  674. return propEnum.mobilePhone;
  675. case "model":
  676. return propEnum.model;
  677. case "modelName":
  678. return propEnum.modelName;
  679. case "modificationTime":
  680. return propEnum.modificationTime;
  681. case "monthlyAbsoluteDay":
  682. return propEnum.monthlyAbsoluteDay;
  683. case "monthlyRelativeDay":
  684. return propEnum.monthlyRelativeDay;
  685. case "monthlyRelativeWeek":
  686. return propEnum.monthlyRelativeWeek;
  687. case "name":
  688. return propEnum.name;
  689. case "namespaceFormat":
  690. return propEnum.namespaceFormat;
  691. case "objectClass":
  692. return propEnum.objectClass;
  693. case "output":
  694. return propEnum.output;
  695. case "owner":
  696. return propEnum.owner;
  697. case "ownerPassport":
  698. return propEnum.ownerPassport;
  699. case "packageBase":
  700. return propEnum.packageBase;
  701. case "page":
  702. return propEnum.page;
  703. case "pageOrientation":
  704. return propEnum.pageOrientation;
  705. case "pagerPhone":
  706. return propEnum.pagerPhone;
  707. case "parameters":
  708. return propEnum.parameters;
  709. case "parent":
  710. return propEnum.parent;
  711. case "paths":
  712. return propEnum.paths;
  713. case "permissions":
  714. return propEnum.permissions;
  715. case "policies":
  716. return propEnum.policies;
  717. case "portalPage":
  718. return propEnum.portalPage;
  719. // case "portalPreferences":
  720. // return propEnum.portalPreferences;
  721. case "position":
  722. return propEnum.position;
  723. case "postalAddress":
  724. return propEnum.postalAddress;
  725. case "printerAddress":
  726. return propEnum.printerAddress;
  727. case "productLocale":
  728. return propEnum.productLocale;
  729. case "qualifier":
  730. return propEnum.qualifier;
  731. case "recipients":
  732. return propEnum.recipients;
  733. case "recipientsEMail":
  734. return propEnum.recipientsEMail;
  735. case "related":
  736. return propEnum.related;
  737. case "replacement":
  738. return propEnum.replacement;
  739. case "requestedExecutionTime":
  740. return propEnum.requestedExecutionTime;
  741. case "retentions":
  742. return propEnum.retentions;
  743. case "rsAffineConnections":
  744. return propEnum.rsAffineConnections;
  745. case "rsMaximumProcesses":
  746. return propEnum.rsMaximumProcesses;
  747. case "rsNonAffineConnections":
  748. return propEnum.rsNonAffineConnections;
  749. case "rsQueueLimit":
  750. return propEnum.rsQueueLimit;
  751. case "runAsOwner":
  752. return propEnum.runAsOwner;
  753. case "runningState":
  754. return propEnum.runningState;
  755. case "screenTip":
  756. return propEnum.screenTip;
  757. case "searchPath":
  758. return propEnum.searchPath;
  759. case "sequencing":
  760. return propEnum.sequencing;
  761. case "serverGroup":
  762. return propEnum.serverGroup;
  763. case "source":
  764. return propEnum.source;
  765. case "specification":
  766. return propEnum.specification;
  767. case "startAsActive":
  768. return propEnum.startAsActive;
  769. case "startDate":
  770. return propEnum.startDate;
  771. case "state":
  772. return propEnum.state;
  773. case "status":
  774. return propEnum.status;
  775. case "stepObject":
  776. return propEnum.stepObject;
  777. case "surname":
  778. return propEnum.surname;
  779. case "target":
  780. return propEnum.target;
  781. case "taskID":
  782. return propEnum.taskID;
  783. case "timeZoneID":
  784. return propEnum.timeZoneID;
  785. case "triggerDescription":
  786. return propEnum.triggerDescription;
  787. case "triggerName":
  788. return propEnum.triggerName;
  789. case "type":
  790. return propEnum.type;
  791. case "unit":
  792. return propEnum.unit;
  793. case "uri":
  794. return propEnum.uri;
  795. case "usage":
  796. return propEnum.usage;
  797. case "user":
  798. return propEnum.user;
  799. case "userCapabilities":
  800. return propEnum.userCapabilities;
  801. case "userCapability":
  802. return propEnum.userCapability;
  803. case "userName":
  804. return propEnum.userName;
  805. case "version":
  806. return propEnum.version;
  807. case "verticalElementsRenderingLimit":
  808. return propEnum.verticalElementsRenderingLimit;
  809. case "viewed":
  810. return propEnum.viewed;
  811. case "weeklyFriday":
  812. return propEnum.weeklyFriday;
  813. case "weeklyMonday":
  814. return propEnum.weeklyMonday;
  815. case "weeklySaturday":
  816. return propEnum.weeklySaturday;
  817. case "weeklySunday":
  818. return propEnum.weeklySunday;
  819. case "weeklyThursday":
  820. return propEnum.weeklyThursday;
  821. case "weeklyTuesday":
  822. return propEnum.weeklyTuesday;
  823. case "weeklyWednesday":
  824. return propEnum.weeklyWednesday;
  825. case "width":
  826. return propEnum.width;
  827. case "yearlyAbsoluteDay":
  828. return propEnum.yearlyAbsoluteDay;
  829. case "yearlyAbsoluteMonth":
  830. return propEnum.yearlyAbsoluteMonth;
  831. case "yearlyRelativeDay":
  832. return propEnum.yearlyRelativeDay;
  833. case "yearlyRelativeMonth":
  834. return propEnum.yearlyRelativeMonth;
  835. case "yearlyRelativeWeek":
  836. return propEnum.yearlyRelativeWeek;
  837. default:
  838. return 0;
  839. }
  840. }
  841. public bool addChildItems(object objVal, string indent, ref int itemIdx, ListView lvObject)
  842. {
  843. int nbFields = 0;
  844. string sObjType = "";
  845. object childObj = null;
  846. ListViewItem item = null;
  847. FieldInfo[] fieldInfo;
  848. System.Type objType = objVal.GetType();
  849. indent += " ";
  850. fieldInfo = objType.GetFields();
  851. nbFields = fieldInfo.GetLength(0);
  852. if (nbFields == 0)
  853. {
  854. if (isArrayType(objVal))
  855. {
  856. constructArrayRows(objVal, indent, ref itemIdx, lvObject);
  857. }
  858. }
  859. for(int i=0; i < nbFields; i++)
  860. {
  861. childObj = fieldInfo[i].GetValue(objVal);
  862. if ( (childObj == null) && (0 != fieldInfo[i].Name.CompareTo("schemaInfo")) &&
  863. (0 == lvObject.Name.CompareTo("typesListView")) )
  864. {
  865. item = new ListViewItem(indent + "." + fieldInfo[i].Name, NO_IMAGE);
  866. item.Tag = childObj;
  867. item.SubItems.Add("null");
  868. item.SubItems.Add("<type inaccessible for null objects>");
  869. lvObject.Items.Insert(++itemIdx, item);
  870. continue;
  871. }
  872. else if (isValid(childObj, fieldInfo[i].Name))
  873. {
  874. item = new ListViewItem(indent + "." + fieldInfo[i].Name, NO_IMAGE);
  875. item.Tag = childObj;
  876. if (childObj.GetType().IsEnum)
  877. {
  878. specialCaseEnum(lvObject, item, ref itemIdx);
  879. continue;
  880. }
  881. sObjType = childObj.GetType().ToString();
  882. if (sObjType.StartsWith("cognosdotnet_10_2."))
  883. {
  884. sObjType = sObjType.Substring(13, sObjType.Length-13);
  885. item.SubItems.Add("");
  886. if (0 == lvObject.Name.CompareTo("typesListView"))
  887. {
  888. item.SubItems.Add(sObjType);
  889. }
  890. }
  891. else
  892. {
  893. string objString = "";
  894. if (findSimpleTypeValue(childObj, ref objString))
  895. {
  896. item.SubItems.Add(objString); // value column
  897. }
  898. else
  899. {
  900. item.SubItems.Add(""); // value column
  901. }
  902. if (0 == lvObject.Name.CompareTo("typesListView"))
  903. {
  904. item.SubItems.Add(sObjType); // type column
  905. }
  906. }
  907. lvObject.Items.Insert(++itemIdx, item);
  908. if (isArrayType(childObj))
  909. {
  910. indent += indent;
  911. constructArrayRows(childObj, indent, ref itemIdx, lvObject);
  912. break;
  913. }
  914. addChildItems(childObj, indent, ref itemIdx, lvObject);
  915. }
  916. else
  917. {
  918. continue;
  919. }
  920. }
  921. return true;
  922. }
  923. public bool isValid(object objVal, string fieldName)
  924. {
  925. int integerObj = 0;
  926. DateTime date_lowerBound = new DateTime();
  927. DateTime date_upperBound = new DateTime(9999, 12, 31, 23, 59, 59);
  928. if (objVal == null)
  929. {
  930. return false;
  931. }
  932. if (objVal.GetType().Equals(date_upperBound.GetType()))
  933. {
  934. if ( (0 == objVal.ToString().CompareTo(date_lowerBound.ToString())) ||
  935. (0 == objVal.ToString().CompareTo(date_upperBound.ToString())) )
  936. {
  937. return false;
  938. }
  939. }
  940. else if (objVal.GetType().Equals(integerObj.GetType()))
  941. {
  942. if ( (0 == objVal.ToString().CompareTo("2147483647")) ||
  943. (0 == objVal.ToString().CompareTo("-2147483648")) )
  944. {
  945. return false;
  946. }
  947. }
  948. else if ( 0 == objVal.ToString().CompareTo("") )
  949. {
  950. return false;
  951. }
  952. else if ( (0 == objVal.ToString().CompareTo("-3.402823E+38")) ||
  953. (0 == objVal.ToString().CompareTo("3.402823E+38")) ||
  954. (0 == objVal.ToString().CompareTo("1.401298E-45")) ||
  955. (0 == objVal.ToString().CompareTo("Infinity")) ||
  956. (0 == objVal.ToString().CompareTo("-Infinity")) ||
  957. (0 == objVal.ToString().CompareTo("NaN")) )
  958. {
  959. return false;
  960. }
  961. else if ( (0 == fieldName.CompareTo("Zero")) ||
  962. (0 == fieldName.CompareTo("One")) ||
  963. (0 == fieldName.CompareTo("MinusOne")) ||
  964. (0 == fieldName.CompareTo("MaxValue")) ||
  965. (0 == fieldName.CompareTo("MinValue")) )
  966. {
  967. return false;
  968. }
  969. else if ( (0 == fieldName.CompareTo("TrueString")) ||
  970. (0 == fieldName.CompareTo("FalseString")) )
  971. {
  972. return false;
  973. }
  974. return true;
  975. }
  976. public void constructArrayRows(object objVal, string indent, ref int itemIdx, ListView lvObject)
  977. {
  978. ListViewItem item;
  979. Array objArr = null;
  980. string sObjType = "";
  981. string objValString = "";
  982. objArr = (System.Array)objVal;
  983. for(int j=0; j < objArr.GetLength(0); j++)
  984. {
  985. sObjType = objArr.GetValue(j).GetType().ToString();
  986. if (sObjType.StartsWith("cognosdotnet_10_2."))
  987. {
  988. sObjType = sObjType.Substring(13, sObjType.Length-13);
  989. }
  990. item = new ListViewItem(indent + "[" + j + "]", NO_IMAGE);
  991. item.Tag = objArr.GetValue(j);
  992. objValString = "";
  993. findSimpleTypeValue(objArr.GetValue(j), ref objValString);
  994. item.SubItems.Add(objValString);
  995. if (0 == lvObject.Name.CompareTo("typesListView"))
  996. {
  997. item.SubItems.Add(sObjType);
  998. }
  999. lvObject.Items.Insert(++itemIdx, item);
  1000. addChildItems(objArr.GetValue(j), indent, ref itemIdx, lvObject);
  1001. }
  1002. }
  1003. public void removeChildItems(ListViewItem selectedItem, ListView lvObject)
  1004. {
  1005. int childIdx = selectedItem.Index + 1;
  1006. ListViewItem childItem = lvObject.Items[childIdx];
  1007. while ( (childItem != null) && (childItem.Text.StartsWith(" ")) )
  1008. {
  1009. lvObject.Items.RemoveAt(childIdx);
  1010. if (childIdx < lvObject.Items.Count)
  1011. {
  1012. childItem = lvObject.Items[childIdx];
  1013. }
  1014. else
  1015. {
  1016. childItem = null;
  1017. }
  1018. }
  1019. }
  1020. public void specialCaseEnum(ListView lvObject, ListViewItem item, ref int itemIdx)
  1021. {
  1022. string sObjType = "";
  1023. if (0 == lvObject.SelectedItems[0].Text.CompareTo("objectClass"))
  1024. {
  1025. item.SubItems.Add(selectedBCObject.objectClass.value.ToString());
  1026. }
  1027. else if (0 == (item.Tag).ToString().CompareTo("grant"))
  1028. {
  1029. item.SubItems.Add("grant");
  1030. }
  1031. if (0 == lvObject.Name.CompareTo("typesListView"))
  1032. {
  1033. sObjType = (item.Tag).GetType().ToString();
  1034. sObjType = sObjType.Substring(13, sObjType.Length-13);
  1035. item.SubItems.Add(sObjType);
  1036. }
  1037. lvObject.Items.Insert(++itemIdx, item);
  1038. }
  1039. }
  1040. }