getApplicationNodes.xts 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. Copyright (C) 2008 Cognos Incorporated. All rights reserved.
  4. Cognos (R) is a trademark of Cognos Incorporated.
  5. -->
  6. <xts:morphlet xmlns:xts="http://developer.cognos.com/schemas/xts/">
  7. <!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
  8. <xts:block id="openNavTree" type="exec" mode="interpret" processor="XSLT" xmlns:pf="http://developer.cognos.com/schemas/xts/pf" >
  9. <!-- This block requests NavigationTree from chosen TM1 server for the first time.
  10. This request is expected to fail with HTTP 302 (Found) and the same location as given.
  11. It also returns one to many cookies that are required in subsequent requests.
  12. -->
  13. <xts:logicsheet path="logicsheets/portal.xsl"/>
  14. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:bus="http://developer.cognos.com/schemas/bibus/3/" xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xos="http://developer.cognos.com/schemas/xts/output/" exclude-result-prefixes="xts xtsext xsl pf bus xos soapenv xsd xsi">
  15. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  16. <pf:variables/>
  17. <xsl:variable name="timeout" select="'200'"/>
  18. <xsl:template match="/">
  19. <xts:sequence>
  20. <xts:update select="/root/openNavTree">
  21. <openNavTree>
  22. <xts:request protocol="GET" faultBlock="handleNavTreeFault" protocolHeader="true" >
  23. <xsl:attribute name="href">
  24. <xsl:value-of select="key('env-param','TM1WebURL')"/>
  25. <xsl:text>/</xsl:text>
  26. <xsl:value-of select="key('env-param','TM1WebVirtualDirectory')"/>
  27. <xsl:text>/services/TM1Service?method=getApplicationsTree</xsl:text>
  28. <xsl:text>&amp;sessionToken=</xsl:text>
  29. <xsl:value-of select="key('env-param','sessionToken')"/>
  30. </xsl:attribute>
  31. <xsl:if test="$timeout">
  32. <xts:param name="timeout">
  33. <xsl:value-of select="number($timeout) * 1000 "/>
  34. </xts:param>
  35. </xsl:if>
  36. <!-- Here's where the cookies get sent -->
  37. <xsl:for-each select="/root/openNavTree1/xos:protocolHeader/xos:param[@name='Set-Cookie']">
  38. <!-- For each cookie returned in previous request -->
  39. <xts:param name="header">
  40. <xsl:value-of select="concat('Cookie=',text())"/>
  41. </xts:param>
  42. </xsl:for-each>
  43. <xsl:choose>
  44. <xsl:when test="key('env-param','JSESSIONID') and key('env-param','JSESSIONID') != '' ">
  45. <xts:param name="header">
  46. <xsl:value-of select="concat('Cookie=',key('env-param','JSESSIONID'))"/>
  47. </xts:param>
  48. </xsl:when>
  49. </xsl:choose>
  50. </xts:request>
  51. </openNavTree>
  52. </xts:update>
  53. </xts:sequence>
  54. </xsl:template>
  55. </xsl:stylesheet>
  56. </xts:block>
  57. <xts:block id="transformNavTreeContent" type="exec" mode="interpret" processor="XSLT" dependency="openNavTree" xmlns:pf="http://developer.cognos.com/schemas/xts/pf">
  58. <xts:logicsheet path="logicsheets/portal.xsl"/>
  59. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:bus="http://developer.cognos.com/schemas/bibus/3/" xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt" xmlns:xos="http://developer.cognos.com/schemas/xts/output/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" exclude-result-prefixes="xts xtsext xsl pf bus xos xsd xsi soapenv">
  60. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  61. <pf:variables/>
  62. <xsl:template match="/root">
  63. <xts:sequence>
  64. <xts:append select="/root/output">
  65. <xts:transform processor="XSLT" src="/tm1/103/getApplicationNodesTransform.xslt" option="part" mimeType="application/atom+xml">
  66. <xts:param name="messageBase">/messages/tm1buxmsgs.xml</xts:param>
  67. <root>
  68. <xsl:if test="key('env-param', 'Id') != ''">
  69. <Id>
  70. <xsl:value-of select="key('env-param','Id')"/>
  71. </Id>
  72. </xsl:if>
  73. <xsl:if test="key('env-param', 'TM1WebHost') != ''">
  74. <TM1WebURL>
  75. <xsl:choose>
  76. <xsl:when test="key('env-param','https') and key('env-param','https') != '0' ">
  77. <xsl:text>https://</xsl:text>
  78. </xsl:when>
  79. <xsl:otherwise>
  80. <xsl:text>http://</xsl:text>
  81. </xsl:otherwise>
  82. </xsl:choose>
  83. <xsl:value-of select="xtsext:urlencode(key('env-param','TM1WebHost'))"/>
  84. </TM1WebURL>
  85. </xsl:if>
  86. <xsl:if test="key('env-param', 'TM1WebURL') != ''">
  87. <TM1WebURL>
  88. <xsl:value-of select="xtsext:urlencode(key('env-param','TM1WebURL'))"/>
  89. </TM1WebURL>
  90. </xsl:if>
  91. <xsl:if test="key('env-param', 'FilterPackages') != ''">
  92. <FilterPackages>
  93. <xsl:value-of select="xtsext:urlencode(key('env-param','FilterPackages'))"/>
  94. </FilterPackages>
  95. </xsl:if>
  96. <xsl:if test="key('env-param', 'TM1WebVirtualDirectory') != ''">
  97. <TM1WebVirtualDirectory>
  98. <xsl:value-of select="xtsext:urlencode(key('env-param','TM1WebVirtualDirectory'))"/>
  99. </TM1WebVirtualDirectory>
  100. </xsl:if>
  101. <xsl:if test="key('env-param', 'TM1Host') != ''">
  102. <TM1Host>
  103. <xsl:value-of select="key('env-param','TM1Host')"/>
  104. </TM1Host>
  105. </xsl:if>
  106. <xsl:if test="key('env-param', 'TM1DataServer') != ''">
  107. <TM1DataServer>
  108. <xsl:value-of select="xtsext:urlencode(key('env-param','TM1DataServer'))"/>
  109. </TM1DataServer>
  110. </xsl:if>
  111. <xsl:if test="key('env-param', 'TM1username') != ''">
  112. <TM1username>
  113. <xsl:value-of select="key('env-param','TM1username')"/>
  114. </TM1username>
  115. </xsl:if>
  116. <xsl:if test="key('env-param', 'TM1pass') != ''">
  117. <TM1pass>
  118. <xsl:value-of select="key('env-param','TM1pass')"/>
  119. </TM1pass>
  120. </xsl:if>
  121. <xsl:if test="key('env-param', 'TM1Toolbar') != ''">
  122. <TM1Toolbar>
  123. <xsl:value-of select="key('env-param','TM1Toolbar')"/>
  124. </TM1Toolbar>
  125. </xsl:if>
  126. <xsl:if test="key('env-param', 'JSESSIONID') != ''">
  127. <JSESSIONID>
  128. <xsl:value-of select="key('env-param','JSESSIONID')"/>
  129. </JSESSIONID>
  130. </xsl:if>
  131. <xsl:if test="key('env-param', 'sessionToken') != ''">
  132. <sessionToken>
  133. <xsl:value-of select="key('env-param','sessionToken')"/>
  134. </sessionToken>
  135. </xsl:if>
  136. <!-- Here's where the cookies get sent -->
  137. <xsl:for-each select="/root/openNavTree/xos:protocolHeader/xos:param[@name='Set-Cookie']">
  138. <!-- For each cookie returned in previous request -->
  139. <JSESSIONID>
  140. <xsl:value-of select="xtsext:urlencode(text())"/>
  141. </JSESSIONID>
  142. </xsl:for-each>
  143. <GatewayURL>
  144. <xsl:value-of select="$gateway"/>
  145. </GatewayURL>
  146. <WebRootURL>
  147. <xsl:value-of select="$webRoot"/>
  148. </WebRootURL>
  149. <TM1FolderName>
  150. <xsl:text>Applications</xsl:text>
  151. </TM1FolderName>
  152. <TM1pass2>
  153. <xsl:text>id0</xsl:text>
  154. </TM1pass2>
  155. <xsl:copy-of select="/root/openNavTree/soapenv:Envelope/soapenv:Body"/>
  156. </root>
  157. </xts:transform>
  158. </xts:append>
  159. </xts:sequence>
  160. </xsl:template>
  161. </xsl:stylesheet>
  162. </xts:block>
  163. <!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
  164. <xts:block id="handleNavTreeFault" type="fault" processor="XSLT">
  165. <xsl:stylesheet version="1.0"
  166. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  167. xmlns:xtse="http://developer.cognos.com/schemas/xts/error/1/">
  168. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  169. <xsl:template match="/">
  170. <xtse:error>
  171. <xsl:for-each select="/root/fault/xts:exception[not(starts-with(xts:exceptionCode, 'java'))]">
  172. <xtse:message>
  173. <xsl:value-of select="xts:exceptionMsg"/>
  174. </xtse:message>
  175. <xtse:detail>
  176. <xsl:for-each select="xts:exceptionDetail">
  177. <xsl:call-template name="copyTree"/>
  178. </xsl:for-each>
  179. </xtse:detail>
  180. </xsl:for-each>
  181. </xtse:error>
  182. </xsl:template>
  183. <xsl:template name="copyTree">
  184. <xsl:param name="nodes" select="."/>
  185. <xsl:for-each select="$nodes">
  186. <xsl:copy>
  187. <xsl:for-each select="@*">
  188. <xsl:copy/>
  189. </xsl:for-each>
  190. <xsl:call-template name="copyTree">
  191. <xsl:with-param name="nodes" select="*|text()|comment()"/>
  192. </xsl:call-template>
  193. </xsl:copy>
  194. </xsl:for-each>
  195. </xsl:template>
  196. </xsl:stylesheet>
  197. </xts:block>
  198. </xts:morphlet>