MINI MINI MANI MO
<?xml version="1.0"?>
<!--
NAME
kupswhis.xsl
DESCRIPTION
XSLT stylesheet for XML => DDL conversion of ku$_psw_hist_t ADTs
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
sdavidso 02/24/17 - bug25440009 handle user name with apostrophe
jjanosik 03/18/16 - bug 21943774 - don't put out a list if there are no
items
bwright 08/16/13 - Bug 17312600: Remove hard tabs from DP src code
dvekaria 05/10/13 - Bug 8666020 Purge USER_HISTORY$ prior importing.
tbhukya 07/17/09 - Bug 8589857: Split block into multiple blocks.
rapayn 11/02/05 - Bug 4715313: Reformat with XMLSpy
htseng 03/28/03 - fix bug 2872854
htseng 08/02/02 - add grantee parse param
htseng 07/26/02 - add more parse params
htseng 04/03/02 - htseng_rmgr_obj_support
htseng 11/27/01 - Creation
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- Import required scripts -->
<xsl:import href="kucommon.xsl"/>
<!-- Top-level parameters -->
<xsl:param name="PRETTY">1</xsl:param>
<xsl:param name="SQLTERMINATOR">1</xsl:param>
<xsl:param name="EXPORT">1</xsl:param>
<!-- params for parse -->
<xsl:param name="PRS_DDL">0</xsl:param>
<xsl:param name="PRS_DELIM">\{]`</xsl:param>
<xsl:param name="PRS_VERB">0</xsl:param>
<xsl:param name="PRS_OBJECT_TYPE">0</xsl:param>
<xsl:param name="PRS_SCHEMA">0</xsl:param>
<xsl:param name="PRS_NAME">0</xsl:param>
<xsl:param name="PRS_GRANTEE">0</xsl:param>
<xsl:param name="PRS_GRANTOR">0</xsl:param>
<xsl:param name="PRS_BASE_OBJECT_SCHEMA">0</xsl:param>
<xsl:param name="PRS_BASE_OBJECT_NAME">0</xsl:param>
<xsl:param name="PRS_BASE_OBJECT_TYPE">0</xsl:param>
<xsl:template match="PSW_HIST_T">
<xsl:if test="HIST_LIST/HIST_LIST_ITEM">
<xsl:apply-templates select="HIST_LIST"/>
<xsl:if test="$PRETTY=1">
<xsl:text>
 </xsl:text>
</xsl:if>
<xsl:text> SYS.DBMS_PSWMG_IMPORT.IMPORT_HISTORY(HIST_REC,i);</xsl:text>
<xsl:if test="$PRETTY=1">
<xsl:text>
</xsl:text>
</xsl:if>
<xsl:text> END;</xsl:text>
<xsl:if test="$PRETTY=1">
<xsl:text>
</xsl:text>
</xsl:if>
<xsl:if test="$SQLTERMINATOR=1">
<xsl:text>/</xsl:text>
</xsl:if>
</xsl:if>
</xsl:template>
<xsl:template match="HIST_LIST">
<xsl:for-each select="HIST_LIST_ITEM">
<xsl:if test="(position() mod 200)= 1">
<!-- pass 200 records at most for each call, so it won't run out memory -->
<xsl:if test="position() != 1">
<xsl:if test="$PRETTY=1">
<xsl:text>
 </xsl:text>
</xsl:if>
<xsl:text> SYS.DBMS_PSWMG_IMPORT.IMPORT_HISTORY(HIST_REC,i);</xsl:text>
<xsl:if test="$PRETTY=1">
<xsl:text>
</xsl:text>
</xsl:if>
<xsl:text> END;</xsl:text>
<xsl:if test="$PRETTY=1">
<xsl:text>
</xsl:text>
</xsl:if>
<xsl:if test="$SQLTERMINATOR=1">
<xsl:text>/</xsl:text>
</xsl:if>
<xsl:if test="$PRETTY=1">
<xsl:text>
</xsl:text>
</xsl:if>
</xsl:if>
<!-- position() !=1 -->
<xsl:call-template name="DoParse">
<xsl:with-param name="Verb">DBMS_PSWMG_IMPORT.IMPORT_HISTORY</xsl:with-param>
<xsl:with-param name="ObjectType">PASSWORD_HISTORY</xsl:with-param>
<xsl:with-param name="Grantee" select="../NAME"/>
</xsl:call-template>
<xsl:text> DECLARE</xsl:text>
<xsl:if test="$PRETTY=1">
<xsl:text>
 </xsl:text>
</xsl:if>
<xsl:text> SUBTYPE HIST_RECORD IS SYS.DBMS_PSWMG_IMPORT.ARRAYOFHISTORYRECORDS;</xsl:text>
<xsl:if test="$PRETTY=1">
<xsl:text>
 </xsl:text>
</xsl:if>
<xsl:text> HIST_REC HIST_RECORD;</xsl:text>
<xsl:if test="$PRETTY=1">
<xsl:text>
 </xsl:text>
</xsl:if>
<xsl:text> i number := 0;</xsl:text>
<xsl:if test="$PRETTY=1">
<xsl:text>
</xsl:text>
</xsl:if>
<xsl:text> BEGIN</xsl:text>
<xsl:if test="$PRETTY=1">
<xsl:text>
 </xsl:text>
</xsl:if>
</xsl:if>
<!-- position() mod 200 =1 -->
<!-- if first record purge the password history -->
<xsl:if test="position() = 1">
<xsl:text> SYS.DBMS_PSWMG_IMPORT.PURGE_HISTORY('</xsl:text>
<xsl:call-template name="EnQuote">
<xsl:with-param name="String" select="UNAME"/>
</xsl:call-template>
<xsl:text>');</xsl:text>
<xsl:if test="$PRETTY=1">
<xsl:text>
 </xsl:text>
</xsl:if>
</xsl:if>
<xsl:text> i := i+1; </xsl:text>
<xsl:if test="$PRETTY=1">
<xsl:text>
 </xsl:text>
</xsl:if>
<xsl:text> HIST_REC(i).USERNAME := '</xsl:text>
<xsl:call-template name="EnQuote">
<xsl:with-param name="String" select="UNAME"/>
</xsl:call-template>
<xsl:text>';</xsl:text>
<xsl:if test="$PRETTY=1">
<xsl:text>
 </xsl:text>
</xsl:if>
<xsl:text> HIST_REC(i).PASSWORD := '</xsl:text>
<xsl:call-template name="EnQuote">
<xsl:with-param name="String" select="PASSWORD"/>
</xsl:call-template>
<xsl:text>';</xsl:text>
<xsl:if test="$PRETTY=1">
<xsl:text>
 </xsl:text>
</xsl:if>
<xsl:text> HIST_REC(i).PASSWD_DATE := '</xsl:text>
<xsl:call-template name="EnQuote">
<xsl:with-param name="String" select="PASSWORD_DATE"/>
</xsl:call-template>
<xsl:text>';</xsl:text>
<xsl:if test="$PRETTY=1">
<xsl:text>
 </xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
OHA YOOOO