MINI MINI MANI MO
<?xml version="1.0"?>
<!--
Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
NAME
kuauser.xsl
DESCRIPTION
Convert sxml USER diff document to ALTER_XML document
MODIFIED MM/DD/YY
tbhukya 02/25/15 - Proj 47173: Data bound collation
sogugupt 12/05/14 - Bug 18596422: illegal name attribute value in xsl
lbarton 01/26/10 - bug 8796742: translatable error messages
lbarton 07/10/08 - bug 5709159: SQL_LIST_ITEM subelements
rapayne 01/31/08 - Extend support.
rapayne 06/09/06 - Initial version (Stubbed out).
-->
<xsl:stylesheet version="1.0" xmlns:sxml="http://xmlns.oracle.com/ku" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- Top level imports -->
<xsl:import href="kuacomm.xsl"/>
<!-- Templates -->
<xsl:template match="sxml:USER">
<!-- *******************************************************************
Template: USER - top-level template for USER objects.
******************************************************************** -->
<xsl:element name="ALTER_XML" namespace="http://xmlns.oracle.com/ku">
<xsl:attribute name="version">1.0</xsl:attribute>
<!-- Object type -->
<xsl:element name="OBJECT_TYPE">USER</xsl:element>
<!-- Display schema.objname for CoMPareObjects 1 and 2 -->
<xsl:call-template name="CmpObjects">
<xsl:with-param name="ParentNode" select="."/>
</xsl:call-template>
<xsl:element name="ALTER_LIST">
<!-- Check USER'S NAME -->
<xsl:if test="sxml:NAME/@value1">
<!-- NAME is not alterable-->
<xsl:call-template name="CommonNotAlterable">
<xsl:with-param name="XpathNode" select="sxml:NAME"/>
<xsl:with-param name="Reason">USER_NAME</xsl:with-param>
<xsl:with-param name="Message" select="$MSG_USER_NAME"/>
</xsl:call-template>
</xsl:if>
<!-- User Type (LOCAL, GLOBAL, EXTERNAL -->
<xsl:if test="sxml:TYPE/@value1 and
not(sxml:TYPE='LOCAL')">
<xsl:element name="ALTER_LIST_ITEM">
<xsl:call-template name="AlterUserType">
<xsl:with-param name="UserNode" select="."/>
<xsl:with-param name="TypeNode" select="sxml:TYPE"/>
<xsl:with-param name="Action">PARSE</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="AlterUserType">
<xsl:with-param name="UserNode" select="."/>
<xsl:with-param name="TypeNode" select="sxml:TYPE"/>
<xsl:with-param name="Action">SQL</xsl:with-param>
</xsl:call-template>
</xsl:element>
</xsl:if>
<!-- account status (Account lock and password expire -->
<xsl:call-template name="CheckAcctStatus">
<xsl:with-param name="ParentNode" select="."/>
</xsl:call-template>
<!-- Alter default collation -->
<xsl:if test="$VERSION>=1202000000 and sxml:DEFAULT_COLLATION/@value1">
<xsl:element name="ALTER_LIST_ITEM">
<xsl:call-template name="AlterDefCollt">
<xsl:with-param name="UserNode" select="."/>
<xsl:with-param name="CollType"> DEFAULT COLLATION </xsl:with-param>
<xsl:with-param name="CollNode" select="sxml:DEFAULT_COLLATION"/>
<xsl:with-param name="Action">PARSE</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="AlterDefCollt">
<xsl:with-param name="UserNode" select="."/>
<xsl:with-param name="CollType"> DEFAULT COLLATION </xsl:with-param>
<xsl:with-param name="CollNode" select="sxml:DEFAULT_COLLATION"/>
<xsl:with-param name="Action">SQL</xsl:with-param>
</xsl:call-template>
</xsl:element>
</xsl:if>
<!-- default tablespace -->
<xsl:if test="sxml:DEFAULT_TABLESPACE/@value1">
<xsl:element name="ALTER_LIST_ITEM">
<xsl:call-template name="AlterDefTbsp">
<xsl:with-param name="UserNode" select="."/>
<xsl:with-param name="TbspType"> DEFAULT TABLESPACE </xsl:with-param>
<xsl:with-param name="TbspNode" select="sxml:DEFAULT_TABLESPACE"/>
<xsl:with-param name="Action">PARSE</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="AlterDefTbsp">
<xsl:with-param name="UserNode" select="."/>
<xsl:with-param name="TbspType"> DEFAULT TABLESPACE </xsl:with-param>
<xsl:with-param name="TbspNode" select="sxml:DEFAULT_TABLESPACE"/>
<xsl:with-param name="Action">SQL</xsl:with-param>
</xsl:call-template>
</xsl:element>
</xsl:if>
<!-- temporary tablespace -->
<xsl:if test="sxml:TEMPORARY_TABLESPACE/@value1">
<xsl:element name="ALTER_LIST_ITEM">
<xsl:call-template name="AlterDefTbsp">
<xsl:with-param name="UserNode" select="."/>
<xsl:with-param name="TbspType"> TEMPORARY TABLESPACE </xsl:with-param>
<xsl:with-param name="TbspNode" select="sxml:TEMPORARY_TABLESPACE"/>
<xsl:with-param name="Action">PARSE</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="AlterDefTbsp">
<xsl:with-param name="UserNode" select="."/>
<xsl:with-param name="TbspType"> TEMPORARY TABLESPACE </xsl:with-param>
<xsl:with-param name="TbspNode" select="sxml:TEMPORARY_TABLESPACE"/>
<xsl:with-param name="Action">SQL</xsl:with-param>
</xsl:call-template>
</xsl:element>
</xsl:if>
<!-- Alter USER PROFILE -->
<xsl:if test="sxml:PROFILE/@value1">
<xsl:element name="ALTER_LIST_ITEM">
<xsl:call-template name="AlterUserProfile">
<xsl:with-param name="UserNode" select="."/>
<xsl:with-param name="ProfileNode" select="sxml:PROFILE"/>
<xsl:with-param name="Action">PARSE</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="AlterUserProfile">
<xsl:with-param name="UserNode" select="."/>
<xsl:with-param name="ProfileNode" select="sxml:PROFILE"/>
<xsl:with-param name="Action">SQL</xsl:with-param>
</xsl:call-template>
</xsl:element>
</xsl:if>
</xsl:element>
</xsl:element>
</xsl:template>
<xsl:template name="CheckAcctStatus">
<xsl:param name="ParentNode" select="''"/>
<!-- *******************************************************************
Template: CheckAcctStatus -
Process ACCOUNT_LOCK and PASSWORD_EXPIRE
Parameters:
ParentNode - Parent node of SCHEMA, NAME
******************************************************************** -->
<xsl:if test="$ParentNode/sxml:ACCOUNT_LOCK/@src">
<xsl:element name="ALTER_LIST_ITEM">
<xsl:call-template name="AlterAcctStatus">
<xsl:with-param name="UserNode" select="$ParentNode"/>
<xsl:with-param name="LockNode" select="$ParentNode/sxml:ACCOUNT_LOCK"/>
<xsl:with-param name="Action">PARSE</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="AlterAcctStatus">
<xsl:with-param name="UserNode" select="$ParentNode"/>
<xsl:with-param name="LockNode" select="$ParentNode/sxml:ACCOUNT_LOCK"/>
<xsl:with-param name="Action">SQL</xsl:with-param>
</xsl:call-template>
</xsl:element>
</xsl:if>
<xsl:if test="$ParentNode/sxml:PASSWORD_EXPIRE/@src='2'">
<xsl:element name="ALTER_LIST_ITEM">
<xsl:call-template name="AlterPwdExpire">
<xsl:with-param name="UserNode" select="$ParentNode"/>
<xsl:with-param name="PwdNode" select="$ParentNode/sxml:PASSWORD_EXPIRE"/>
<xsl:with-param name="Action">PARSE</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="AlterPwdExpire">
<xsl:with-param name="UserNode" select="$ParentNode"/>
<xsl:with-param name="PwdNode" select="$ParentNode/sxml:PASSWORD_EXPIRE"/>
<xsl:with-param name="Action">SQL</xsl:with-param>
</xsl:call-template>
</xsl:element>
</xsl:if>
<xsl:if test="$ParentNode/sxml:PASSWORD_EXPIRE/@src='1'">
<xsl:call-template name="CommonNotAlterable">
<xsl:with-param name="XpathNode" select="$ParentNode/sxml:PASSWORD_EXPIRE"/>
<xsl:with-param name="Reason">UNEXPIRE_PASSWORD</xsl:with-param>
<xsl:with-param name="Message" select="$MSG_UNEXPIRE_PASSWORD"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template name="AlterAcctStatus">
<xsl:param name="UserNode" select="''"/>
<xsl:param name="LockNode" select="''"/>
<xsl:param name="Action" select="''"/>
<!-- *******************************************************************
Template: AlterAcctStatus -
<ACCOUNT_LOCK>Y</ACCOUNT_LOCK>
Parameters:
UserNode <USER>
LockNode -<ACCOUNT_LOCK>
Action - "PARSE" or "SQL"
******************************************************************** -->
<xsl:choose>
<xsl:when test="$Action='PARSE' and ($PRS_CLAUSE_TYPE=1 or
$PRS_XPATH=1)">
<xsl:element name="PARSE_LIST">
<xsl:call-template name="AddXPathParseItem">
<xsl:with-param name="Node" select="$LockNode"/>
</xsl:call-template>
<xsl:call-template name="AddParseItem">
<xsl:with-param name="ParseIt" select="$PRS_CLAUSE_TYPE"/>
<xsl:with-param name="Item">CLAUSE_TYPE</xsl:with-param>
<xsl:with-param name="Value1">MODIFY_ACCOUNT_LOCK</xsl:with-param>
</xsl:call-template>
</xsl:element>
</xsl:when>
<xsl:when test="$Action='SQL'">
<xsl:element name="SQL_LIST">
<xsl:element name="SQL_LIST_ITEM">
<xsl:element name="TEXT">
<xsl:text>ALTER USER </xsl:text>
<xsl:call-template name="SchemaName">
<xsl:with-param name="ParentNode" select="$UserNode"/>
</xsl:call-template>
<xsl:text> ACCOUNT </xsl:text>
<xsl:choose>
<xsl:when test="$LockNode/@src='1'">UNLOCK</xsl:when>
<xsl:otherwise>LOCK</xsl:otherwise>
</xsl:choose>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template name="AlterPwdExpire">
<xsl:param name="UserNode" select="''"/>
<xsl:param name="PwdNode" select="''"/>
<xsl:param name="Action" select="''"/>
<!-- *******************************************************************
Template: AlterPwdExp -
<PASSWORD_EXPIRE\>
Parameters:
UserNode <USER>
PwdNode <PASSWORD_EXPIRE>
Action - "PARSE" or "SQL"
******************************************************************** -->
<xsl:choose>
<xsl:when test="$Action='PARSE' and ($PRS_CLAUSE_TYPE=1 or
$PRS_XPATH=1)">
<xsl:element name="PARSE_LIST">
<xsl:call-template name="AddXPathParseItem">
<xsl:with-param name="Node" select="$PwdNode"/>
</xsl:call-template>
<xsl:call-template name="AddParseItem">
<xsl:with-param name="ParseIt" select="$PRS_CLAUSE_TYPE"/>
<xsl:with-param name="Item">CLAUSE_TYPE</xsl:with-param>
<xsl:with-param name="Value1">PASSWORD_EXPIRE</xsl:with-param>
</xsl:call-template>
</xsl:element>
</xsl:when>
<xsl:when test="$Action='SQL'">
<xsl:element name="SQL_LIST">
<xsl:element name="SQL_LIST_ITEM">
<xsl:element name="TEXT">
<xsl:text>ALTER USER </xsl:text>
<xsl:call-template name="SchemaName">
<xsl:with-param name="ParentNode" select="$UserNode"/>
</xsl:call-template>
<xsl:text> PASSWORD EXPIRE</xsl:text>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template name="AlterDefCollt">
<xsl:param name="UserNode" select="''"/>
<xsl:param name="CollType" select="''"/>
<xsl:param name="CollNode" select="''"/>
<xsl:param name="Action" select="''"/>
<!-- *******************************************************************
Template: AlterDefCollt -
<DEFAULT_COLLATION>
Parameters:
UserNode <USER>
CollType - ' DEFAULT COLLATION ' (i.e., WITH SPACES)
TbspNode <DEFAULT_COLLATION>
Action - "PARSE" or "SQL"
******************************************************************** -->
<xsl:choose>
<xsl:when test="$Action='PARSE' and ($PRS_CLAUSE_TYPE=1 or
$PRS_XPATH=1)">
<xsl:element name="PARSE_LIST">
<xsl:call-template name="AddXPathParseItem">
<xsl:with-param name="Node" select="$CollNode"/>
</xsl:call-template>
<xsl:call-template name="AddParseItem">
<xsl:with-param name="ParseIt" select="$PRS_CLAUSE_TYPE"/>
<xsl:with-param name="Item">CLAUSE_TYPE</xsl:with-param>
<xsl:with-param name="Value1" select="$CollType"/>
</xsl:call-template>
</xsl:element>
</xsl:when>
<xsl:when test="$Action='SQL'">
<xsl:element name="SQL_LIST">
<xsl:element name="SQL_LIST_ITEM">
<xsl:element name="TEXT">
<xsl:text>ALTER USER </xsl:text>
<xsl:call-template name="SchemaName">
<xsl:with-param name="ParentNode" select="$UserNode"/>
</xsl:call-template>
<xsl:value-of select="$CollType"/>
<xsl:call-template name="QuotedName">
<xsl:with-param name="NameNode" select="$CollNode"/>
</xsl:call-template>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template name="AlterDefTbsp">
<xsl:param name="UserNode" select="''"/>
<xsl:param name="TbspType" select="''"/>
<xsl:param name="TbspNode" select="''"/>
<xsl:param name="Action" select="''"/>
<!-- *******************************************************************
Template: AlterDefTbsp -
<DEFAULT_TABLESPACE>
Parameters:
UserNode <USER>
TbspType - ' DEFAULT TABLESPACE '' or
' TEMPORARY TABLESPACE ' (i.e., WITH SPACES)
TbspNode <DEFAULT_TABLEPSACE> or <TEMPORARY_TABLESPACE>
Action - "PARSE" or "SQL"
******************************************************************** -->
<xsl:choose>
<xsl:when test="$Action='PARSE' and ($PRS_CLAUSE_TYPE=1 or
$PRS_XPATH=1)">
<xsl:element name="PARSE_LIST">
<xsl:call-template name="AddXPathParseItem">
<xsl:with-param name="Node" select="$TbspNode"/>
</xsl:call-template>
<xsl:call-template name="AddParseItem">
<xsl:with-param name="ParseIt" select="$PRS_CLAUSE_TYPE"/>
<xsl:with-param name="Item">CLAUSE_TYPE</xsl:with-param>
<xsl:with-param name="Value1" select="$TbspType"/>
</xsl:call-template>
</xsl:element>
</xsl:when>
<xsl:when test="$Action='SQL'">
<xsl:element name="SQL_LIST">
<xsl:element name="SQL_LIST_ITEM">
<xsl:element name="TEXT">
<xsl:text>ALTER USER </xsl:text>
<xsl:call-template name="SchemaName">
<xsl:with-param name="ParentNode" select="$UserNode"/>
</xsl:call-template>
<xsl:value-of select="$TbspType"/>
<xsl:call-template name="QuotedName">
<xsl:with-param name="NameNode" select="$TbspNode"/>
</xsl:call-template>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template name="AlterUserType">
<xsl:param name="UserNode" select="''"/>
<xsl:param name="TypeNode" select="''"/>
<xsl:param name="Action" select="''"/>
<!-- *******************************************************************
Template: AlterUserType - <TYPE>
This template should only modify a user to be identified
GLOBALLY or EXTERNALLY
Parameters:
UserNode <USER>
TypeNode <TYPE>
Action - "PARSE" or "SQL"
******************************************************************** -->
<xsl:choose>
<xsl:when test="$Action='PARSE' and ($PRS_CLAUSE_TYPE=1 or
$PRS_XPATH=1)">
<xsl:element name="PARSE_LIST">
<xsl:call-template name="AddXPathParseItem">
<xsl:with-param name="Node" select="$TypeNode"/>
</xsl:call-template>
<xsl:call-template name="AddParseItem">
<xsl:with-param name="ParseIt" select="$PRS_CLAUSE_TYPE"/>
<xsl:with-param name="Item">CLAUSE_TYPE</xsl:with-param>
<xsl:with-param name="Value1" select="$TypeNode"/>
</xsl:call-template>
</xsl:element>
</xsl:when>
<xsl:when test="$Action='SQL'">
<xsl:element name="SQL_LIST">
<xsl:element name="SQL_LIST_ITEM">
<xsl:element name="TEXT">
<xsl:text>ALTER USER </xsl:text>
<xsl:call-template name="SchemaName">
<xsl:with-param name="ParentNode" select="$UserNode"/>
</xsl:call-template>
<xsl:text> IDENTIFIED </xsl:text>
<xsl:value-of select="$TypeNode"/>
<xsl:text>LY</xsl:text>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template name="AlterUserProfile">
<xsl:param name="UserNode" select="''"/>
<xsl:param name="ProfileNode" select="''"/>
<xsl:param name="Action" select="''"/>
<!-- *******************************************************************
Template: AlterUserProfile - <PROFILE>
Parameters:
UserNode <USER>
ProfileNode <PROFILE>
Action - "PARSE" or "SQL"
******************************************************************** -->
<xsl:choose>
<xsl:when test="$Action='PARSE' and ($PRS_CLAUSE_TYPE=1 or
$PRS_XPATH=1)">
<xsl:element name="PARSE_LIST">
<xsl:call-template name="AddXPathParseItem">
<xsl:with-param name="Node" select="$ProfileNode"/>
</xsl:call-template>
<xsl:call-template name="AddParseItem">
<xsl:with-param name="ParseIt" select="$PRS_CLAUSE_TYPE"/>
<xsl:with-param name="Item">CLAUSE_TYPE</xsl:with-param>
<xsl:with-param name="Value1">USER_PROFILE</xsl:with-param>
</xsl:call-template>
</xsl:element>
</xsl:when>
<xsl:when test="$Action='SQL'">
<xsl:element name="SQL_LIST">
<xsl:element name="SQL_LIST_ITEM">
<xsl:element name="TEXT">
<xsl:text>ALTER USER </xsl:text>
<xsl:call-template name="SchemaName">
<xsl:with-param name="ParentNode" select="$UserNode"/>
</xsl:call-template>
<xsl:text> PROFILE </xsl:text>
<xsl:value-of select="$ProfileNode"/>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
OHA YOOOO