Subversion Repositories DevTools

Rev

Rev 19 | Rev 29 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?xml version="1.0" ?>
<package>
        <comment>
        PrimalCode wizard generated file.
        </comment>
        <job id="GenerateXMLNodeDefinitons" args="/bom_id:2864" prompt="no">
                <?job error="false" debug="false" ?>
                <runtime>
                        <named helpstring="Bom ID" name="bom_id" required="false" type="string"/>
                </runtime>
                <object id="Oracle_Objects_For_OLE" progid="OracleInProcServer.XOraServer" events="true"/>
                <script language="VBScript" src="common_subs.vbs"/>
                <script language="VBScript" src="config.vbs"/>
                <script id="GenerateXMLNodeDefnitions" language="VBScript">
<![CDATA[
Option Explicit
'=====================================================
'        Name:  POST BOM RELEASE
' Description:  Generates the BOM XML files that gets
'                               consumed by the CFManager.
'               INPUT:  BOM_ID
'=====================================================

'== Variable Definition ==============================
Dim BomId
Dim objArgs
'== Constants Declaration ============================
'== Variable Init ====================================
'=====================================================


'-----------------------------------------------------------------------------------------------------------------
Sub GenerateXMLNodeDefinitions ( nBomId, OS )
        Dim rsQry, aNetworkNodes, XMLNode, DateString
        Dim lastRow, row, platform
        
        ' Remove existing stuff
        Call DeleteFile( APP_ROOT &"downloads\*" )
        
        
        OraDatabase.Parameters.Add "BOM_ID", nBomId, ORAPARM_INPUT, ORATYPE_NUMBER 
                          
        Set rsQry = OraDatabase.DbCreateDynaset( GetQuery ("NetworkNodes.sql"), ORADYN_DEFAULT )
        
        OraDatabase.Parameters.Remove "BOM_ID"
        
        If rsQry.RecordCount > 0 Then
                aNetworkNodes = rsQry.GetRows()
                
        End If
        
        lastRow = UBound( aNetworkNodes, 2 )
        DateString = DateReversed( Date )

        If OS = 1 Then platform = "Windows" Else platform = "SunOS"
        
        For row = 0 To lastRow
                
                XMLNode = Null
        
                XMLNode = XMLNode &_
                "       <BomHeader>"& vbNewLine &_
                "               <release_ident></release_ident>"& vbNewLine &_
               "               <bom_name>"& aNetworkNodes( 1, row ) &" "& platform &"</bom_name>"& vbNewLine &_
               "               <bom_type>system</bom_type>"& vbNewLine &_
               "               <bom_version>"& aNetworkNodes( 2, row ) &"."& aNetworkNodes( 3, row ) &"</bom_version>"& vbNewLine &_
               "               <bom_date>"& DateString &"</bom_date>"& vbNewLine &_
               "               <bom_status>REG</bom_status>"& vbNewLine &_
               "               <bom_status_date>"& DateString &"</bom_status_date>"& vbNewLine &_
                "       </BomHeader>"& vbNewLine 
                
                If OS = 1 Then
                        '-- Get Node Base Configurations Details For Windows OS --
                        XMLNode = XMLNode & GetNodeBaseConfigDetails ( nBomId, aNetworkNodes( 0, row ), OS ) & vbNewLine 
                        '-- Get Node Product Details For Windows OS --
                        XMLNode = XMLNode & GetNodeDetails ( nBomId, aNetworkNodes( 0, row ), OS ) & vbNewLine 
                Else
                        '-- Get Node Base Configurations Details For SunOS --
                        XMLNode = XMLNode & GetNodeBaseConfigDetails ( nBomId, aNetworkNodes( 0, row ), OS ) & vbNewLine 
                        '-- Get Node Product Details For SunOS --
                        XMLNode = XMLNode & GetNodeDetails ( nBomId, aNetworkNodes( 0, row ), OS ) & vbNewLine 
                End If

                ' Close xml node tag before saving
                XMLNode = _
                "<BomDistribution>"& vbNewLine &_
                XMLNode &"</BomDistribution>"& vbNewLine
                
                'WScript.Echo XMLNode
                
                If OS = 1 Then
                        If GetNodeBaseConfigDetails ( nBomId, aNetworkNodes( 0, row ), OS ) <> "" OR GetNodeDetails ( nBomId, aNetworkNodes( 0, row ), OS ) <> "" Then
                                ' Save to a file
                                Call SaveFile( DateString, rsQry("version"), rsQry("branch_name"), APP_ROOT &"downloads",  FormatFileName( aNetworkNodes( 1, row ) ) &"_Windows.xml", XMLNode )
                        End If
                Else
                        If GetNodeBaseConfigDetails ( nBomId, aNetworkNodes( 0, row ), OS ) <> "" OR GetNodeDetails ( nBomId, aNetworkNodes( 0, row ), OS ) <> "" Then
                                ' Save to a file
                                Call SaveFile( DateString, rsQry("version"), rsQry("branch_name"), APP_ROOT &"downloads",  FormatFileName( aNetworkNodes( 1, row ) ) &"_SunOS.xml", XMLNode )
                        End If          
                End If          
                
        Next
        
        
        
                  
                        
End Sub
'-----------------------------------------------------------------------------------------------------------------

Function FormatFileName ( sFileName )
        Dim sReturn
        
        sReturn = Replace ( sFileName, "/", "" )        
        sReturn = Replace ( sReturn, "\", "" )  
        sReturn = Replace ( sReturn, "&", "And" )       
        sReturn = Replace ( sReturn, " ", "_" )         
        
        FormatFileName = sReturn
        
End Function
'-----------------------------------------------------------------------------------------------------------------
Function GetNodeBaseConfigDetails ( nBomId, nNodeId, OS )
        Dim rsQry, XMLPackageString, pkgName, pkgReleaseType, osType, pkgVersion
        
        OraDatabase.Parameters.Add "BOM_ID", nBomId, ORAPARM_INPUT, ORATYPE_NUMBER 
        OraDatabase.Parameters.Add "NODE_ID", nNodeId, ORAPARM_INPUT, ORATYPE_NUMBER
        
        If OS = 1 Then   
                Set rsQry = OraDatabase.DbCreateDynaset( GetQuery ("NodeBaseConfigsWindows.sql"), ORADYN_DEFAULT )
        Else
                Set rsQry = OraDatabase.DbCreateDynaset( GetQuery ("NodeBaseConfigsSunOS.sql"), ORADYN_DEFAULT )
        End If
        
        OraDatabase.Parameters.Remove "BOM_ID"
        OraDatabase.Parameters.Remove "NODE_ID"
        
        
        While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
                'Extract the Package Name
                pkgName = rsQry("pkg_name")             
                If OS = 1 Then
                        If rsQry("win_electronic_name") <> "" Then
                                pkgName = rsQry("win_electronic_name")
                        End If
                Else
                        If rsQry("sunos_electronic_name") <> "" Then
                                pkgName = rsQry("sunos_electronic_name")
                        End If
                End If
                'Extract the Package Release Type
                If rsQry("is_patch") = "Y" Then
                        pkgReleaseType = "PT"
                Else
                        pkgReleaseType = "FR"
                End If
                'Extract the OS Name
                If rsQry("os_name") <> "" Then
                        osType = rsQry("os_name")
                Else
                        osType = rsQry("bos_type")
                End If
                'Extract the Package Version
                pkgVersion = rsQry("pkg_version")
                'Extract the Patch Electronic Name
                If rsQry("is_patch") <> "" Then
                        If rsQry("patch_electronic_name") <> "" Then
                                pkgVersion = rsQry("patch_electronic_name")
                        End If
                End If

                XMLPackageString = XMLPackageString &_
                "       <PackageRecord>"& vbNewLine &_
                "               <pkg_name>"& pkgName &"</pkg_name>"& vbNewLine &_
               "               <pkg_version>"& pkgVersion &"</pkg_version>"& vbNewLine &_
               "               <pkg_date>2003-03-01</pkg_date>"& vbNewLine &_
               "               <pkg_status>REG</pkg_status>"& vbNewLine &_
               "               <pkg_status_date>"& DateReversed( CDate( rsQry("modified_stamp") ) ) &"</pkg_status_date>"& vbNewLine &_
               "               <pkg_target></pkg_target>"& vbNewLine &_
        "               <pkg_platform_list>"& vbNewLine &_
        "                       <platform_record>"& osType &"</platform_record>"& vbNewLine &_
        "               </pkg_platform_list>"& vbNewLine &_ 
               "               <pkg_release_type>"& pkgReleaseType &"</pkg_release_type>"& vbNewLine &_
                "       </PackageRecord>"& vbNewLine
                
                rsQry.MoveNext()
        Wend    
        
        rsQry.Close()
        Set rsQry = Nothing
        
        ' Return string
        GetNodeBaseConfigDetails = XMLPackageString     
        
End Function
'-----------------------------------------------------------------------------------------------------------------
Function GetNodeDetails ( nBomId, nNodeId, OS )
        Dim rsQry, XMLPackageString, pkgName, pkgReleaseType, osType, pkgVersion, pkgDatabase, patchName, rsTemp
        
        OraDatabase.Parameters.Add "BOM_ID", nBomId, ORAPARM_INPUT, ORATYPE_NUMBER 
        OraDatabase.Parameters.Add "NODE_ID", nNodeId, ORAPARM_INPUT, ORATYPE_NUMBER 
        
        If OS = 1 Then    
                Set rsQry = OraDatabase.DbCreateDynaset( GetQuery ("NodeProductsWindows.sql"), ORADYN_DEFAULT )
        Else
                Set rsQry = OraDatabase.DbCreateDynaset( GetQuery ("NodeProductsSunOS.sql"), ORADYN_DEFAULT )
        End If

        OraDatabase.Parameters.Remove "BOM_ID"
        OraDatabase.Parameters.Remove "NODE_ID"
        
        
        While (NOT rsQry.BOF) AND (NOT rsQry.EOF)               
                'Extract the Package Name
                pkgName = rsQry("pkg_name")
                'Extract the Package Version
                pkgVersion = rsQry("pkg_version")
                If OS = 1 Then
                        If rsQry("win_electronic_name") <> "" Then
                                pkgName = rsQry("win_electronic_name")
                        End If
                Else
                        If rsQry("sunos_electronic_name") <> "" Then
                                pkgName = rsQry("sunos_electronic_name")
                        End If
                End If
                'Extract the Package Release Type
                If rsQry("is_patch") = "Y" Then
                        pkgReleaseType = "PT"
                        If rsQry("patch_electronic_name") <> "" Then
                                pkgVersion = rsQry("patch_electronic_name")
                        End If
                Else
                        pkgReleaseType = "FR"
                End If
                'Extract the OS Type
                If rsQry("os_name") <> "" Then
                        osType = rsQry("os_name")
                Else
                        osType = rsQry("bos_type")
                End If

                XMLPackageString = XMLPackageString &_
                "       <PackageRecord>"& vbNewLine &_
                "               <pkg_name>"& pkgName &"</pkg_name>"& vbNewLine &_
               "               <pkg_version>"& pkgVersion &"</pkg_version>"& vbNewLine &_
               "               <pkg_date>2003-03-01</pkg_date>"& vbNewLine &_
               "               <pkg_status>REG</pkg_status>"& vbNewLine &_
               "               <pkg_status_date>"& DateReversed( CDate( rsQry("modified_stamp") ) ) &"</pkg_status_date>"& vbNewLine &_
               "               <pkg_target></pkg_target>"& vbNewLine &_
        "               <pkg_platform_list>"& vbNewLine &_
        "                       <platform_record>"& osType &"</platform_record>"& vbNewLine &_
        "               </pkg_platform_list>"& vbNewLine
                
                If rsQry("is_patch") = "Y" Then

                        OraDatabase.Parameters.Add "PV_ID", rsQry("prod_id"), ORAPARM_INPUT, ORATYPE_NUMBER 
                        Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery ("DatabasePatch.sql"), ORADYN_DEFAULT )
                        OraDatabase.Parameters.Remove "PV_ID"

                        pkgDatabase = rsTemp("pkg_name")
                        patchName = rsTemp("pkg_version")

                        rsTemp.Close()
                        Set rsTemp = Nothing

                        XMLPackageString = XMLPackageString &_
                        "               <pkg_database>"& pkgDatabase &"</pkg_database>"& vbNewLine &_
                        "               <pkg_patch_list>"& vbNewLine &_
                        "                       <patch_name>"& patchName &"</patch_name>"& vbNewLine &_
                        "               </pkg_patch_list>"& vbNewLine

                End If
               
                XMLPackageString = XMLPackageString &_
                "               <pkg_release_type>"& pkgReleaseType &"</pkg_release_type>"& vbNewLine &_
                "       </PackageRecord>"& vbNewLine
                
                rsQry.MoveNext()
        Wend    
        
        rsQry.Close()
        Set rsQry = Nothing
        
        ' Return string
        GetNodeDetails = XMLPackageString       
        
End Function
'-----------------------------------------------------------------------------------------------------------------
'=================================== MAIN LINE ======================================
WScript.Echo "==================== job:GenerateXMLNodeDefenitions ===================="

Set objArgs = WScript.Arguments

If (objArgs.Unnamed.Count > 0) Then
        Wscript.Echo "ERROR: Unnamed parameters!"
        objArgs.ShowUsage
        WScript.Quit
        
Else
        BomId = objArgs.Named.Item("bom_id")

        Dim Windows, Solaris
        
        Windows = 1
        Solaris = 2
                
        If ( BomId <> "" ) Then
                'Generation of Node Spec Files for Windows OS. 
                Call GenerateXMLNodeDefinitions( BomId, Windows )
                'Generation of Node Spec Files for Sun OS.
                Call GenerateXMLNodeDefinitions( BomId, Solaris )       
        Else
                objArgs.ShowUsage
                WScript.Quit
        End If
        
End If


WScript.Echo "Job completed successfully!"

'====================================================================================


]]>
                </script>
        </job>
</package>