MINI MINI MANI MO
<?xml version="1.0"?>
<!--
Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
NAME
kusilm.xsl
DESCRIPTION
XSLT stylesheet for XML => SXML conversion of ILM attributes in table UDTs
NOTES
Do NOT modify this file under any circumstance. Copy the file
if you wish to use this stylesheet with an external XML/XSL parser
MODIFIED MM/DD/YY
rapayne 08/09/16 - bug 24435630: generate IM clause for ILM policies.
note: this is a fwd merge from 12.2.0.1.
jjanosik 10/12/15 - Add Disabled info to ILM Policy
jjanosik 10/09/15 - Add inheritance info to ILM_POLICIES_ITEM
lbarton 10/14/14 - bug 19164768: temporal validity + row archival
lbarton 09/24/14 - row archival and SXML
lbarton 05/32/13 - bug 15872712: SXML support for ILM policies
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://xmlns.oracle.com/ku">
<!-- Top level imports -->
<xsl:import href="kusstorg.xsl"/>
<!-- Templates -->
<xsl:template name="DoILMClause">
<!-- *******************************************************************
Template: DoILMClause
Description: generate ILM clause
Current node: TABLE_T
The relevant bits are in PROPERTY2:
x08000 (32768) row archival (formerly lifecycle management)
The following bits are no longer valid
x10000 (65536) tracking (write time)
x20000 (131072) tracking (create time)
x40000 (262144) tracking (read time)
x80000 (524288) tracking segment access
******************************************************************** -->
<xsl:if test="(PROPERTY2 mod 65536) >= 32768">
<xsl:element name="ROW_ARCHIVAL"/>
</xsl:if>
</xsl:template>
<xsl:template match="ILM_POLICIES">
<!-- *******************************************************************
Template: ILM_POLICIES -
******************************************************************** -->
<xsl:if test="ILM_POLICIES_ITEM">
<xsl:element name="ILM_POLICIES">
<xsl:for-each select="ILM_POLICIES_ITEM">
<xsl:element name="ILM_POLICIES_ITEM">
<!-- set inheritance info -->
<xsl:variable name="Inherited">
<xsl:choose>
<xsl:when test="(ILMOBJ_FLAG mod 16)= 8">TABLESPACE</xsl:when>
<xsl:when test="(OBJ_TYP != OBJ_TYP_ORIG) and (OBJ_TYP_ORIG = 2)">TABLE</xsl:when>
<xsl:when test="(OBJ_TYP != OBJ_TYP_ORIG) and (OBJ_TYP_ORIG = 19)">PARTITION</xsl:when>
<xsl:otherwise>NONE</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<xsl:when test="$Inherited != 'NONE'">
<xsl:element name="INHERITED_FROM">
<xsl:value-of select="$Inherited"/>
</xsl:element>
</xsl:when>
</xsl:choose>
<!-- set disabled info -->
<xsl:choose>
<xsl:when test="(ILMOBJ_FLAG mod 2)=1">
<xsl:call-template name="DisablePolicy"/>
</xsl:when>
</xsl:choose>
<!-- Process ILM Action -->
<xsl:choose>
<xsl:when test="ACTION='1' and (CTYPE='2' or CTYPE='3')">
<xsl:call-template name="DoILMCompress"/>
</xsl:when>
<xsl:when test="ACTION='2'">
<xsl:call-template name="DoILMTiering"/>
</xsl:when>
<!-- ADO inmemory policies
4 = set inmemory...
5 = no inmemory
1 = modify inmemory...
-->
<xsl:when test="ACTION='4' or ACTION='5' or (ACTION='1' and POL_SUBTYPE='1')">
<xsl:call-template name="DoILMInmemory"/>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="SCOPE='1'">
<xsl:element name="SEGMENT"/>
</xsl:when>
<xsl:when test="SCOPE='2'">
<xsl:element name="GROUP"/>
</xsl:when>
<xsl:when test="SCOPE='3'">
<xsl:element name="ROW"/>
</xsl:when>
</xsl:choose>
<!-- condition clause -->
<xsl:choose>
<xsl:when test="FLAG=8">
<xsl:element name="ON">
<xsl:value-of select="CUSTFUNC"/>
</xsl:element>
</xsl:when>
<xsl:when test="DAYS > 0">
<xsl:element name="AFTER">
<xsl:element name="DAYS">
<xsl:value-of select="DAYS"/>
</xsl:element>
<xsl:choose>
<xsl:when test="CONDITION='0'">
<xsl:element name="ACCESS">NO</xsl:element>
</xsl:when>
<xsl:when test="CONDITION='1'">
<xsl:element name="ACCESS">LOW</xsl:element>
</xsl:when>
<xsl:when test="CONDITION='2'">
<xsl:element name="MODIFICATION">NO</xsl:element>
</xsl:when>
<xsl:when test="CONDITION='3'">
<xsl:element name="CREATION"/>
</xsl:when>
</xsl:choose>
</xsl:element>
</xsl:when>
</xsl:choose>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:if>
</xsl:template>
<xsl:template name="DoILMCompress">
<!-- *******************************************************************
Template: DoILMCompress
******************************************************************** -->
<xsl:variable name="isOLTPCompressed" select="CTYPE='2'"/>
<xsl:variable name="isArchCompressed" select="CTYPE='3'"/>
<xsl:call-template name="DoCompressSyntax">
<xsl:with-param name="isCompressed" select="true()"/>
<xsl:with-param name="isOLTPCompressed" select="$isOLTPCompressed"/>
<xsl:with-param name="isArchCompressed" select="$isArchCompressed"/>
<xsl:with-param name="compressLevel" select="CLEVEL"/>
<xsl:with-param name="flag" select="FLAG"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="DoILMTiering">
<!-- *******************************************************************
Template: DoILMTiering
******************************************************************** -->
<xsl:element name="TIER">
<xsl:element name="TABLESPACE">
<xsl:value-of select="TIER_TBS"/>
</xsl:element>
<xsl:if test="FLAG='1'">
<xsl:element name="READ_ONLY"/>
</xsl:if>
</xsl:element>
</xsl:template>
<xsl:template name="DoILMInmemory">
<!-- *******************************************************************
Template: DoILMInmemory
******************************************************************** -->
<xsl:element name="INMEMORY">
<xsl:choose>
<xsl:when test="ACTION='1' and POL_SUBTYPE='1'">
<xsl:element name="MODIFY">
<xsl:value-of select="ACTIONC_CLOB"/>
</xsl:element>
</xsl:when>
<xsl:when test="ACTION=4">
<xsl:element name="NO_INMEMORY"/>
</xsl:when>
<xsl:when test="ACTION=5">
<xsl:element name="SET">
<xsl:value-of select="ACTIONC_CLOB"/>
</xsl:element>
</xsl:when>
</xsl:choose>
</xsl:element>
</xsl:template>
<xsl:template name="DisablePolicy">
<!-- ************************************************************************
Template:DisablePolicy
Description:Generate disable ILM policy clause
*************************************************************************** -->
<xsl:variable name="PolicyName" select="POLICY_NUM"/>
<xsl:element name="DISABLED_NAME">
<xsl:text>P</xsl:text>
<xsl:value-of select="$PolicyName"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
OHA YOOOO