123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
- Licensed Materials - Property of IBM
- IBM Cognos Products: ps
- (C) Copyright IBM Corp. 2005, 2014
- US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- -->
- <!--
- Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.
- Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).
- -->
- <!--
- Copies an object in CM based on parameters passed in.
- Should create a CM command like so:
- <move xmlns="http://developer.cognos.com/schemas/xts-cm/1/" select="/Contents/folder/report" target="/Contents/folder2/report2"/>
-
- -->
- <xts:morphlet xmlns:xts="http://developer.cognos.com/schemas/xts/" xmlns:cml="http://developer.cognos.com/schemas/xts/logic-sheet/xslt/cml/1/" xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/" xmlns:create="http://developer.cognos.com/schemas/xts/portal/iFrmCmd/1/" xmlns:cms="http://developer.cognos.com/schemas/xts/logic-sheet/xslt/cms/1/">
- <xts:block id="doMove" processor="XSLT" type="exec">
- <xts:logicsheet path="portal/iFrmCmd/logicsheets/cm-save.xsl"/>
- <xts:logicsheet path="logicsheets/buslogic.xslt"/>
- <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
- xmlns:xts="http://developer.cognos.com/schemas/xts/"
- xmlns:send="http://developer.cognos.com/schemas/xts/logic-sheet/xslt/brl/1/"
- xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/"
- xmlns:form="http://developer.cognos.com/schemas/xts/portal/iFrmCmd/1/"
- xmlns:bus="http://developer.cognos.com/schemas/bibus/3/"
- xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt"
- exclude-result-prefixes="xtsext">
- <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
-
-
- <xsl:template match="/root/command/form:move/form:env">
- <xts:sequence>
- <!-- this is the single object copy -->
- <xts:append>
- <xts:transform src="transforms/CM/post-process.xslt" processor="XSLT">
- <send:request provider="cm" faultBlock="moveFault">
- <xts:transform src="transforms/CM/pre-process.xslt" processor="XSLT">
- <cm:move xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/">
- <cm:objects xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/">
- <xsl:choose>
- <!-- Single object move -->
- <xsl:when test="(form:param[@name = 'm_obj'] and (form:param[@name = 'm_obj'] != ''))">
- <cm:nil>
- <cm:searchPath><xsl:value-of select="form:param[@name = 'm_obj']"/></cm:searchPath>
- </cm:nil>
- </xsl:when>
- <!-- Group move -->
- <xsl:otherwise>
- <xsl:copy-of select="form:clipboard/*"/>
- </xsl:otherwise>
- </xsl:choose>
- </cm:objects>
- <cm:target>
- <xsl:value-of select="form:param[@name='m_p_path']"/>
- </cm:target>
- <xsl:choose>
- <xsl:when test="form:param[@name='overwriteExistingItems'] = 'true'">
- <xsl:choose>
- <xsl:when test="form:param[@name='cmdErrorUpdateActionReplace'] = 'true'">
- <cm:options updateAction="replace"/>
- </xsl:when>
- <xsl:otherwise>
- <!-- "replace" by default -->
- <xsl:choose>
- <xsl:when test="string(/root/system/param[@name = 'updateTargetObjectWhenOverwrite']) = 'true'">
- <cm:options updateAction="update"/>
- </xsl:when>
- <xsl:otherwise>
- <cm:options updateAction="replace"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <cm:options updateAction="fail"/>
- </xsl:otherwise>
- </xsl:choose>
- </cm:move>
- </xts:transform>
- </send:request>
- </xts:transform>
- </xts:append>
- </xts:sequence>
- </xsl:template>
-
- </xsl:stylesheet>
- </xts:block>
-
- <xts:block id="moveFault" type="fault" processor="XSLT">
- <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
- <xsl:output method="xml"/>
- <xsl:template match="/root/fault">
- <xsl:choose>
- <xsl:when test="./*[local-name() = 'exception']/*[local-name() = 'exceptionDetail']/*[local-name() = 'exception']/*[local-name()='errorCode'] = 'cmNameConflict'">
- <copyFault>
- <xsl:copy-of select="."/>
- </copyFault>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="."/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
- <xsl:template match="text()"/>
- </xsl:stylesheet>
- </xts:block>
-
- <xts:block id="result" processor="XSLT" type="exec" mode="output" mimeType="text/xml" dependency="doMove">
- <xts:logicsheet path="logicsheets/cm-logic.xsl"/>
- <xsl:stylesheet xmlns:form="http://developer.cognos.com/schemas/xts/portal/iFrmCmd/1/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xts="http://developer.cognos.com/schemas/xts/" xmlns:cml="http://developer.cognos.com/schemas/xts/logic-sheet/xslt/cml/1/" xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/" xmlns:bus="http://developer.cognos.com/schemas/bibus/3/" version="1.0">
- <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
- <xsl:template match="/root">
- <xsl:choose>
- <xsl:when test="bus:response"><xsl:copy-of select="bus:response/child::*"/></xsl:when>
- <xsl:when test="./copyFault">
- <error>
- <errorCode>
- <xsl:value-of select="./copyFault/fault/*[local-name()='exception']/*[local-name()='exceptionDetail']/*[local-name()='exception']/*[local-name()='errorCode']"/>
- </errorCode>
- <xsl:if test="/root/command/form:move/form:env/form:param[@name='overwriteExistingItems'] = 'true'">
- <errorCodeDetails>failOnOverwrite</errorCodeDetails>
- </xsl:if>
- <errorMessage>
- <xsl:value-of select="./copyFault/fault/*[local-name()='exception']/*[local-name()='exceptionDetail']/*[local-name()='exception']/*[local-name()='message']/*[local-name()='messageString']"/>
- </errorMessage>
- </error>
- </xsl:when>
- <xsl:otherwise><error/></xsl:otherwise>
- </xsl:choose>
- </xsl:template>
- <xsl:template match="text()"/>
- </xsl:stylesheet>
- </xts:block>
-
- <xts:block id="moveError-part1-get-source-ids" processor="XSLT" type="exec" mandatory="false" dependency="result"
- condition=".[/root/copyFault//*[local-name() = 'errorCode'] = 'cmNameConflict']">
- <xts:logicsheet path="logicsheets/portal.xsl"/>
- <xts:logicsheet path="logicsheets/buslogic.xslt"/>
- <xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:send="http://developer.cognos.com/schemas/xts/logic-sheet/xslt/brl/1/"
- xmlns:pf="http://developer.cognos.com/schemas/xts/pf"
- xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt"
- xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/" >
- <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
-
- <pf:sessionpassport/>
-
- <xsl:template match="/root">
- <xts:sequence>
- <xts:append>
- <moveError-TDS-ccClipboard>
- <xts:function name="TDSRequest">
- <xts:param name="action">get</xts:param>
- <xts:param name="session-id"><xsl:value-of select="$passport"/></xts:param>
- <xts:param name="name"><xsl:value-of select="'ccClipboard'"/></xts:param>
- </xts:function>
- </moveError-TDS-ccClipboard>
- </xts:append>
- </xts:sequence>
- </xsl:template>
- </xsl:stylesheet>
- </xts:block>
-
- <xts:block id="moveError-part2-get-ancestors" mode="interpret" processor="XSLT" type="exec"
- condition=".[/root/copyFault//*[local-name() = 'errorCode'] = 'cmNameConflict']"
- dependency="moveError-part1-get-source-ids">
- <xts:logicsheet path="logicsheets/buslogic.xslt"/>
- <xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:send="http://developer.cognos.com/schemas/xts/logic-sheet/xslt/brl/1/"
- xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/"
- xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt">
- <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
-
- <xsl:template match="/">
- <xts:sequence>
- <xts:append>
- <moveError-destination-parent-id>
- <xsl:if test="string(/root/env/param[@name='m_path']) != ''">
- <xts:transform src="transforms/CM/post-process.xslt" processor="XSLT">
- <send:request provider="cm">
- <xts:transform src="transforms/CM/pre-process.xslt" processor="XSLT">
- <cm:query xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/">
- <cm:search><xsl:value-of select="/root/env/param[@name='m_path']"/></cm:search>
- <cm:properties>
- <cm:property name="storeID"/>
- </cm:properties>
- </cm:query>
- </xts:transform>
- </send:request>
- </xts:transform>
- </xsl:if>
- </moveError-destination-parent-id>
- </xts:append>
-
- <xts:append>
- <moveError-source-ancestors>
- <xsl:variable name="source-paths">
- <xsl:for-each select="/root/moveError-TDS-ccClipboard/*">
- <xsl:copy-of select="."/>
- </xsl:for-each>
- </xsl:variable>
- <xsl:if test="count($source-paths/*/searchPath) > 0">
- <xts:transform src="transforms/CM/post-process.xslt" processor="XSLT">
- <send:request provider="cm">
- <xts:transform src="transforms/CM/pre-process.xslt" processor="XSLT">
- <cm:query xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/">
- <cm:search>
- <xsl:for-each select="$source-paths/*/searchPath">
- <xsl:if test="position() != 1">
- <xsl:text/> | <xsl:text/>
- </xsl:if>
- <xsl:value-of select="."/>
- </xsl:for-each>
- </cm:search>
- <cm:properties>
- <cm:property name="storeID"/>
- <cm:property name="ancestors"/>
- </cm:properties>
- </cm:query>
- </xts:transform>
- </send:request>
- </xts:transform>
- </xsl:if>
- </moveError-source-ancestors>
- </xts:append>
-
- </xts:sequence>
- </xsl:template>
- </xsl:stylesheet>
- </xts:block>
-
- <xts:block id="moveError-part3-purge-moved-source-ids" processor="XSLT" type="exec" mode="interpret" mandatory="false"
- condition=".[/root/copyFault//*[local-name() = 'errorCode'] = 'cmNameConflict']"
- dependency="result moveError-part1-get-source-ids moveError-part2-get-ancestors">
- <xts:logicsheet path="logicsheets/portal.xsl"/>
- <xts:logicsheet path="logicsheets/buslogic.xslt"/>
- <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:xts="http://developer.cognos.com/schemas/xts/"
- xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt"
- xmlns:pf="http://developer.cognos.com/schemas/xts/pf"
- xmlns:cml="http://developer.cognos.com/schemas/xts/logic-sheet/xslt/cml/1/" xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/" xmlns:bus="http://developer.cognos.com/schemas/bibus/3/" version="1.0">
- <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
-
- <pf:sessionpassport/>
-
- <xsl:template match="/root">
-
- <xsl:variable name="source-paths">
- <xsl:for-each select="/root/moveError-TDS-ccClipboard/*">
- <xsl:variable name="copied">
- <xsl:call-template name="ifcopied">
- <xsl:with-param name="candidate" select="searchPath"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:if test="$copied != 'true'">
- <xsl:copy-of select="."/>
- </xsl:if>
- </xsl:for-each>
- </xsl:variable>
- <xts:sequence>
- <xts:append>
- <TDS-setCCClipboard>
- <xts:function name="TDSRequest">
- <xts:param name="action">set</xts:param>
- <xts:param name="session-id"><xsl:value-of select="$passport"/></xts:param>
- <xts:param name="name"><xsl:value-of select="'ccClipboard'"/></xts:param>
- <xts:param name="source">
- <xsl:for-each select="$source-paths/*/searchPath">
- <xsl:text/><nil><xsl:text/>
- <xsl:text/><searchPath><xsl:value-of select="xtsext:xmlencode(xtsext:urldecode(string(.)))"/></searchPath><xsl:text/>
- <xsl:text/></nil><xsl:text/>
- </xsl:for-each>
- </xts:param>
- </xts:function>
- </TDS-setCCClipboard>
- </xts:append>
- <xts:delete select="/root/moveError-TDS-ccClipboard"/>
- <xts:delete select="/root/moveError-destination-parent-id"/>
- <xts:delete select="/root/moveError-source-ancestors"/>
- </xts:sequence>
-
- </xsl:template>
-
- <xsl:template name="ifcopied">
- <xsl:param name="candidate" select="''"/>
-
- <xsl:variable name="destination-parent-id" select="/root/moveError-destination-parent-id/cm:queryResponse/cm:folder/cm:storeID"/>
- <xsl:variable name="candidate_parent" select="/root/moveError-source-ancestors/cm:queryResponse/*[contains($candidate, cm:storeID)]"/>
- <xsl:value-of select="$candidate_parent/cm:ancestors/cm:ancestorInfo[last()]/cm:storeID = $destination-parent-id"/>
- </xsl:template>
-
- </xsl:stylesheet>
- </xts:block>
- </xts:morphlet>
|