MetaData.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. /**
  2. Licensed Materials - Property of IBM
  3. IBM Cognos Products: DOCS
  4. (C) Copyright IBM Corp. 2005, 2008
  5. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with
  6. IBM Corp.
  7. */
  8. /**
  9. *
  10. * Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.
  11. * Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).
  12. *
  13. * The MetaData class represents the metaData returned from the package.
  14. * Seperated into QuerySubject (tables) and QueryItems (columns), QueryItems full Name (the search path)
  15. * MetaData also includes a vector of selected columns to create a report with.
  16. */
  17. import java.util.List;
  18. import java.util.Vector;
  19. import org.dom4j.Attribute;
  20. import org.dom4j.Document;
  21. import org.dom4j.Element;
  22. public class MetaData
  23. {
  24. private String m_querySubject;
  25. private Vector m_queryItems;
  26. private Vector m_fullNameQueryItems;
  27. private Vector m_selectedColumns;
  28. public String getQuerySubject()
  29. {
  30. return m_querySubject;
  31. }
  32. public void setQuerySubject(String querySubject)
  33. {
  34. m_querySubject = querySubject;
  35. }
  36. public Vector getQueryItem()
  37. {
  38. return m_queryItems;
  39. }
  40. public void setQueryItem(Vector queryItems)
  41. {
  42. m_queryItems = queryItems;
  43. }
  44. public Vector getFullNameQueryItems()
  45. {
  46. return m_fullNameQueryItems;
  47. }
  48. public void setFullNameQueryItems(Vector queryItems)
  49. {
  50. m_fullNameQueryItems = queryItems;
  51. }
  52. public Vector getSelectedColumns()
  53. {
  54. return m_selectedColumns;
  55. }
  56. public void setSelectedColumns(Vector queryItems)
  57. {
  58. m_selectedColumns = queryItems;
  59. }
  60. /**
  61. * ParseMetaData method will create a vector of MetaData objects by parsing (using DOM) the
  62. * metadata XML returned from the content store. Basically a list of all tables and the columns.
  63. *
  64. * querySubject = tables
  65. * queryItems = columns
  66. *
  67. * @param connection
  68. * @param newReport
  69. * @param defaultPackageName
  70. * @return Vector
  71. */
  72. public Vector parseMetaData(
  73. CRNConnect connection,
  74. ReportObject newReport,
  75. String defaultPackageName)
  76. {
  77. // retrieve the metadata from the selected package to display for table/column selection.
  78. Vector packageMetaData = new Vector();
  79. if (defaultPackageName != null)
  80. {
  81. Document doc = newReport.getMetadata(connection, defaultPackageName);
  82. // returns a list of tables from the QuerySubject tag
  83. List tableList =
  84. (List)doc.selectNodes("/ResponseRoot/folder/folder/folder/querySubject");
  85. for (int i = 0; i < tableList.size(); i++)
  86. {
  87. Element eTable = (Element)tableList.get(i);
  88. Attribute nameAttrQuerySubject = eTable.attribute("name");
  89. String sTable = nameAttrQuerySubject.getValue();
  90. System.out.println(sTable);
  91. MetaData md = new MetaData();
  92. md.setQuerySubject(sTable);
  93. // set the current node to be the current QuerySubject
  94. Element eCurrent =
  95. (Element)doc.selectSingleNode(
  96. "/ResponseRoot/folder/folder/folder/querySubject[@name='"
  97. + sTable
  98. + "']");
  99. // retrieve a list of columns in this table or queryItems from the current querySubject node.
  100. List columnList = (List)eCurrent.selectNodes("queryItem");
  101. Vector metaQueryItems = new Vector();
  102. Vector metaFullNameQueryItems = new Vector();
  103. for (int j = 0; j < columnList.size(); j++)
  104. {
  105. Element eColumn = (Element)columnList.get(j);
  106. Attribute attrQueryItemName = eColumn.attribute("name");
  107. Attribute attrQueryItemRef = eColumn.attribute("_ref");
  108. String sColumn = attrQueryItemName.getValue();
  109. String sFullColumnName = attrQueryItemRef.getValue();
  110. System.out.println(" " + sColumn);
  111. metaQueryItems.add(sColumn);
  112. metaFullNameQueryItems.add(sFullColumnName);
  113. }
  114. md.setQueryItem(metaQueryItems);
  115. md.setFullNameQueryItems(metaFullNameQueryItems);
  116. packageMetaData.add(md);
  117. }
  118. }
  119. else
  120. System.out.println("Problem: default package name unavailable.");
  121. return packageMetaData;
  122. }
  123. }