Subversion Repositories DevTools

Rev

Blame | Last modification | View Log | RSS feed

<?xml version="1.0" ?>
<package>
        <comment>
        PrimalCode wizard generated file.
        </comment>
        <job id="GetComponents" args="/pv_id:24498 /f:Y" prompt="no">
                <?job error="true" debug="true" ?>
                <runtime>
                        <named helpstring="Package Name" name="pkg_name" required="false" type="string"/>
                        <named helpstring="Package Version" name="pkg_version" required="false" type="string"/>
                        <named helpstring="Package primary key" name="pv_id" required="false" type="string"/>
                        <named helpstring="Force Release Notes Generation" name="f" required="false" type="string"/>
                        <usage>
Usage: 
   on_Make_Official.wsf [/pkg_name:value] [/pkg_version:value]
OR
   on_Make_Official.wsf [/pv_id:value]

Options:

pkg_name     : Package Name
pkg_version  : Package Version
pv_id        : Package Version primary key
f:  Set to [Y] to force release notes generation
                        </usage>
                </runtime>
                <object id="CDOMessage_Class" progid="CDO.Message" events="true"/>
                <object id="Oracle_Objects_For_OLE" progid="OracleInProcServer.XOraSession" events="true"/>
                <script language="VBScript" src="common_subs.vbs"/>
                <script language="VBScript" src="config.vbs"/>
                <script language="VBScript" src="pkg_archive.vbs"/>
                <script id="GetComponents" language="VBScript">
<![CDATA[
Option Explicit
'=====================================================
'        Name:  GetComponents
' Description:  Connects to dpkg_archive and gets the
'                               content of folders and files of certain
'                               package. It then stores this info into 
'                               Release Manager database. This info can
'                               later be included in release notes Or
'                               searched with search engine.
'               INPUT:  pkg_name
'                               pkg_version
'=====================================================

'================ Variable Definition ================
Dim compARR()
Dim objArgs
Dim parPv_id
Dim parPkg_name
Dim parRtag_name
Dim parProj_id
Dim parPkg_Version
Dim No_Components
'=============== Constants Declaration ===============
Const COL_file_name = 0
Const COL_file_path = 1
Const COL_byte_size = 2
Const COL_crc_cksum = 3
Const COL_crc_modcrc= 4
Const NUMBER_OF_COLS_IN_ARRcomp = 5
Const MODCRC_FILE_TYPES = "*.thx"               ' Comma separated file types to be CRCed with modcrc. E.g. "*.thx, *.bin, *.blah"
'================== Variable Init ====================
No_Components = True
'=====================================================
'-----------------------------------------------------------------------------------------------------------------
Sub DESCPKG_File_Check ( sPath )
    Dim  oFileSys
        Set oFileSys = CreateObject ("Scripting.FileSystemObject")
    
    If NOT oFileSys.FileExists( sPath &"\"& DESCPKG_FILE ) Then
                Call SaveFile( sPath, DESCPKG_FILE, parPkg_name &" "& parPkg_Version )      ' Create descpkg file
        End If
End Sub
'-----------------------------------------------------------------------------------------------------------------
Function Get_All_Files ( SSpath )
        Dim sysShell, oExec, outStdErr, outStrOut
        
        Set sysShell = WScript.CreateObject("WScript.Shell")
        Set oExec = sysShell.Exec( "cmd /c dir /S /B /A:-D "& SSpath )

        outStrOut = oExec.StdOut.ReadAll
        
        Get_All_Files = outStrOut
End Function
'-----------------------------------------------------------------------------------------------------------------
Function Get_All_Folders ( SSpath )
        Dim sysShell, oExec, outStdErr, outStrOut
        
        Set sysShell = WScript.CreateObject("WScript.Shell")
        Set oExec = sysShell.Exec( "cmd /c dir /S /B /A:D "& SSpath )

        outStrOut = oExec.StdOut.ReadAll
        
        Get_All_Folders = outStrOut
End Function
'-----------------------------------------------------------------------------------------------------------------
Function File_Extention ( SSfile_name )
        If InStr ( SSfile_name, "." ) Then
                File_Extention = Right ( SSfile_name, Len(SSfile_name) - InStrRev( SSfile_name, "." ) + 1 )
        Else
                ' No dot seperator
                File_Extention = ""
        End If
End Function
'-----------------------------------------------------------------------------------------------------------------
Sub Split_Path ( SSpath, outFile_name, outFile_path, outFile_ext )
        Dim rightSlashLoc
        
        If InStr( SSpath, "\" ) Then
                rightSlashLoc = InStrRev( SSpath, "\" )
                outFile_path = Left( SSpath, rightSlashLoc )
                outFile_name = Replace( SSpath, outFile_path, "" )
                outFile_ext  = File_Extention ( outFile_name )
                
        Else
                outFile_name = SSpath
                outFile_path = ""
                outFile_ext  = File_Extention ( outFile_name )
                
        End If
        
End Sub
'-----------------------------------------------------------------------------------------------------------------
Sub Generate_CRC ( SSfile_name, SSfile_path, SSfile_ext, outSize, outCRC_cksum, outCRC_modcrc )
        Dim ModCRC_fileTypes
        ModCRC_fileTypes = Replace( MODCRC_FILE_TYPES, " ", "" )                                ' Remove spaces
        ModCRC_fileTypes = Replace( ModCRC_fileTypes, "*", "" )                                 ' Remove *
        ModCRC_fileTypes = "|"& Replace( ModCRC_fileTypes, ",", "||" ) &"|"             ' Convert to from "a,b,c" to "|a||b||c|"
        
        ' --- cksum CRC ---
        Call CRC_cksum ( SSfile_path & SSfile_name, outCRC_cksum, outSize )
                                         
        ' --- modcrc CRC ---    
        If InStr( ModCRC_fileTypes, "|"& SSfile_ext &"|" ) > 0 Then
                Call CRC_modcrc ( Left( SSfile_name, Len(SSfile_name) - Len(SSfile_ext) ), SSfile_path, outCRC_modcrc, outSize )
        End If                   
        
        WScript.Echo SSfile_name &" "& outCRC_cksum &" "& outSize &" "& outCRC_modcrc
        
End Sub
'-----------------------------------------------------------------------------------------------------------------
Sub Get_Components ( ARRcomp )
        Dim fileSys, rootPath, contentsDump, recCnt, objPkgFileSys
        Dim file_ext, path, tempARR, pkgType
        
        Set objPkgFileSys = New PkgArchive
        
        objPkgFileSys.Map_Network_Drive  UNC_ARCHIVE, MappedDrive       ' Map Drive if required
        
        pkgType = Get_Package_Type ( parPv_id )
        
        ' Is this package ERG PRODUCT
        objPkgFileSys.Remote_Host = TELNET_MACHINE
        If pkgType = enumPKG_TYPE_ERG_PRODUCT Then
                rootPath = MappedDrive & DEPLOY_ARCHIVE &"\"& parPkg_name &"\"& parPkg_Version
                objPkgFileSys.Archive_Path = TELNET_DEPLOY_ARCHIVE
                
                '%%%%% Creation of Product folder is just temporary.
                '%%%%% Remove the line objPkgFileSys.Create_Pkg_Folder parPkg_name, parPkg_version when depoly_archive is in production
                objPkgFileSys.Create_Pkg_Folder parPkg_name, parPkg_Version
                '%%%%% Remove line above ^^^^^^^^^^
                
        Else
                rootPath = MappedDrive & DPKG_ARCHIVE &"\"& parPkg_name &"\"& parPkg_Version
                objPkgFileSys.Archive_Path = TELNET_DPKG_ARCHIVE
                
        End If
        
        Set fileSys = CreateObject("Scripting.FileSystemObject") 
        
        Dim contentsFolderDump, aFolders, oFolders, sFolderName
        
        If fileSys.FolderExists( rootPath ) Then
            objPkgFileSys.Ensure_Read_Write parPkg_name, parPkg_version         ' Make sure all files and folders can be read
            Call DESCPKG_File_Check ( rootPath )        ' Create descpkg file if required
            
                contentsDump = Get_All_Files ( rootPath )
                contentsFolderDump = Get_All_Folders ( rootPath )
                
                contentsDump = contentsFolderDump & contentsDump        ' Combine Files and Folders
                
                contentsDump = Replace( contentsDump, "/", "\" )                        ' Make sure "\" is used
                contentsDump = Replace( contentsDump, rootPath &"\", "" )       ' Remove UNC root path
                
                contentsFolderDump = Replace( contentsFolderDump, "/", "\" )                    ' Make sure "\" is used
                contentsFolderDump = Replace( contentsFolderDump, rootPath &"\", "" )   ' Remove UNC root path
                
                tempARR = Split( contentsDump, VBNewLine )              ' Split each line containing path + file name
                aFolders = Split( contentsFolderDump, VBNewLine )               ' Split each line containing path
                
                
                '-- Populate Folder dictionary --
                Set oFolders = CreateObject("Scripting.Dictionary")
                
                ' Continue if folders exist
                If Len(contentsFolderDump) > 1 Then
                        For Each sFolderName In aFolders
                                oFolders.Item ( sFolderName ) = ""
                        Next 
                End If

                
                
                '-- Generate file list
                WScript.Echo "Attempting to generate file list..."
                recCnt = 0
                For Each path In tempARR
                        If path <> "" Then
                                ReDim Preserve ARRcomp( NUMBER_OF_COLS_IN_ARRcomp, recCnt )
                                
                                Call Split_Path ( path, _
                                                                  ARRcomp( COL_file_name,  recCnt ), _
                                                                  ARRcomp( COL_file_path,  recCnt ), _
                                                                  file_ext )

                                ' Don't do CRC on folders
                                If oFolders.Exists( path ) Then
                                        ' Store Folder information
                                        ARRcomp( COL_file_name,  recCnt ) = ""
                                        ARRcomp( COL_file_path,  recCnt ) = path
                                        ARRcomp( COL_byte_size,  recCnt ) = 0
                                        ARRcomp( COL_crc_cksum,  recCnt ) = ""
                                        ARRcomp( COL_crc_modcrc,  recCnt ) = ""
                                                                                
                                Else
                                        Call Generate_CRC ( ARRcomp( COL_file_name,  recCnt ), _
                                                                                rootPath &"\"& ARRcomp( COL_file_path,  recCnt ), _
                                                                                file_ext, _
                                                                                ARRcomp( COL_byte_size,  recCnt ), _
                                                                                ARRcomp( COL_crc_cksum,  recCnt ), _
                                                                                ARRcomp( COL_crc_modcrc,  recCnt ) )
                                End If
                                
                                recCnt = recCnt + 1
                        End If
                        
                        No_Components = FALSE
                Next

                
        Else
                Call Raise_Event ( enumEVENT_ERROR, "[job:GetComponents  sub:Get_Components]", rootPath, "Path not found!", enum_RELEASE_NOTES_NOT_FOUND_IN_ARCHIVE )
                
        End If
        
End Sub
'-----------------------------------------------------------------------------------------------------------------
Sub Insert_Into_Database ( ARRcomp )
        Dim i
        
        If No_Components Then Exit Sub  ' If no file components are found, there is nothing to do.
        
        ' Insert into database
        If parPv_id <> -1 Then
                OraSession.BeginTrans
                WScript.Echo "Deleting old entries from [release_components] table for PV_ID = "& parPv_id
                OraDatabase.ExecuteSQL "DELETE FROM release_components WHERE pv_id = "& parPv_id                ' Make sure it doesnot exists 
                
                WScript.Echo "Inserting new component details In [release_components] table."
                
                For i = 0 To UBound( ARRcomp, 2 )
                        OraDatabase.ExecuteSQL _
                                " INSERT INTO release_components ( pv_id, file_name, file_path, byte_size, crc_cksum, crc_modcrc )"&_
                                " VALUES ( "&_
                                parPv_id &", "&_
                                " '"& ARRcomp( COL_file_name,  i ) &"', "&_
                                " '"& ARRcomp( COL_file_path,  i ) &"', "&_
                                ARRcomp( COL_byte_size,  i ) &", "&_
                                " '"& ARRcomp( COL_crc_cksum,  i ) &"', "&_
                                " '"& ARRcomp( COL_crc_modcrc, i ) &"' "&_
                                "        )"     
                Next    
                
                OraSession.CommitTrans
        End If
        
End Sub
'-----------------------------------------------------------------------------------------------------------------
'-------------------- MAIN LINE ----------------------
WScript.Echo "==================== job:GenerateComponents ===================="

Set objArgs = WScript.Arguments

If (objArgs.Unnamed.Count > 0) Then
        Wscript.Echo "ERROR: Unnamed parameters!"
        objArgs.ShowUsage
        WScript.Quit
        
Else
        parPkg_name = objArgs.Named.Item("pkg_name")
        parPkg_Version = objArgs.Named.Item("pkg_version")
        parPv_id = objArgs.Named.Item("pv_id")
        parRtag_name = objArgs.Named.Item("rtag_name")
        parProj_id = objArgs.Named.Item("proj_id")
                
        If ( parPkg_name <> "" AND parPkg_Version <> "") Then
                Call Get_PV_ID ( parPkg_name, parPkg_Version, parPv_id )
                
        ElseIf parPv_id <> ""  Then
                Call Get_Pkg_Name_Version ( parPv_id, parPkg_name, parPkg_Version )
                
        Else
                objArgs.ShowUsage
                WScript.Quit
                
        End If
        
End If

Call Check_Requirements_To_Proceed ( parPv_id )
Call Get_Components ( compARR )
Call Insert_Into_Database ( compARR )

WScript.Echo "Components generated successfully!"


]]>
                </script>
        </job>
        <job id="GenerateReleaseNotes" args="/pv_id:30261 /f:Y" prompt="no">
                <?job error="true" debug="true" ?>
                <runtime>
                        <named helpstring="Package Name" name="pkg_name" required="false" type="string"/>
                        <named helpstring="Package Version" name="pkg_version" required="false" type="string"/>
                        <named helpstring="Package primary key" name="pv_id" required="false" type="simple"/>
                        <named helpstring="Force Release Notes Generation" name="f" required="false" type="string"/>
                        <named helpstring="Output release notes file" name="file" required="false" type="string"/>
                        <usage>
Usage: 
   on_Make_Official.wsf [/pkg_name:value] [/pkg_version:value]
OR
   on_Make_Official.wsf [/pv_id:value]

Options:

pkg_name     : Package Name
pkg_version  : Package Version
pv_id        : Package Version primary key
                        </usage>
                </runtime>
                <object id="Oracle_Objects_For_OLE" progid="OracleInProcServer.XOraSession" events="true"/>
                <resource id="Runtime Dependencies"><![CDATA[**** SSH key

SSH needs to be run manually first time to obtain the key from 
the telnet server.

Example: plink -ssh username@telnetserver

**** SMTP server
To be able to receive email notifications from the web server,
make sure that SMTP server is running. This server is also used 
by Release Manager notification facility.

]]></resource>
                <script language="VBScript" src="templates\style_b_generator.vbs"/>
                <script language="VBScript" src="templates\style_a_generator.vbs"/>
                <script language="VBScript" src="common_subs.vbs"/>
                <script language="VBScript" src="config.vbs"/>
                <script language="VBScript" src="pkg_archive.vbs"/>
                <script id="GenerateReleaseNotes" language="VBScript">
<![CDATA[
Option Explicit
'=====================================================
'        Name:  GenerateReleaseNotes
' Description:  Generates release notes from 
'                               Release Manager database and stores
'                               it into doc folder on dpkg / deploy
'               INPUT:  pkg_name
'                               pkg_version
'=====================================================

'================ Variable Definition ================
Dim objArgs
Dim parPv_id
Dim parPkg_name
Dim parRtag_name
Dim parProj_id
Dim parPkg_Version
'=============== Constants Declaration ===============
Const enumLoc_iss_db        = 0
Const enumLoc_iss_id        = 1
Const enumLoc_iss_num       = 2
Const enumLoc_summary       = 3
Const enumLoc_status        = 4
Const enumLoc_priority      = 5
Const enumLoc_issue_type    = 6
Const enumLoc_submitter     = 7
Const enumLoc_defect_in     = 8
Const enumLoc_submit_date   = 9
Const enumLoc_project       = 10
Const enumLoc_owner         = 11
Const enumLoc_product       = 12
Const enumLoc_approver      = 13
Const enumLoc_package       = 14
Const enumLoc_description   = 15
Const enumLoc_notes_log     = 16
Const enumLoc_release_id    = 17
Const enumLoc_client_ref    = 18
Const enumLoc_severity      = 19
Const enumLoc_change_request = 20
'================== Variable Init ====================
'=====================================================
'-----------------------------------------------------------------------------------------------------------------
Sub Get_Snippet ( SSname, SSnotesSTR, outSnippetSTR, outInsertFrom )
        Dim beginSnippet, endSnippet
        
        beginSnippet = InStr( SSnotesSTR, "SnippetName="""& SSname &"""")
        If beginSnippet <> 0 Then
                beginSnippet =  InStr( beginSnippet, SSnotesSTR, VBNewLine )    ' Find beginning of the code 
                endSnippet = InStr( beginSnippet, SSnotesSTR, "EndOfSnippet" ) - 1
                outInsertFrom = InStr( endSnippet, SSnotesSTR, "-->" ) + 3
                outSnippetSTR = Mid( SSnotesSTR, beginSnippet, endSnippet - beginSnippet )
                
        Else
                Call Raise_Event ( enumEVENT_ERROR, "[job:GenerateReleaseNotes  sub:Get_Snippet]", _
                                                                                        "SnippetName: "& SSname , _
                                                                                        "SnippetName not found!", enum_RELEASE_NOTES_FAILED )
                
        End If
        
End Sub
'-----------------------------------------------------------------------------------------------------------------
Function ArrayRecord ( NNcolumn, SSrecCode, DDdepIss, AAdepIss )
        If NOT DDdepIss.Exists ( SSrecCode ) Then Exit Function
        
        ArrayRecord = NVL( AAdepIss ( NNcolumn, CInt( DDdepIss.Item (SSrecCode) ) ) )
End Function
'-----------------------------------------------------------------------------------------------------------------
Sub Insert_To_Page ( notesSTR, insertFrom, insterSTR )
        notesSTR = Left( notesSTR, insertFrom ) & insterSTR & Right( notesSTR, Len(notesSTR) - insertFrom )
        insterSTR = NULL        ' Clear the insert string
End Sub
'-----------------------------------------------------------------------------------------------------------------
Sub Group_By ( rsG, outCurrG, snippetSTR, outSTR, BBchanged )
        If rsG = outCurrG Then Exit Sub
        
        outSTR = outSTR & snippetSTR
        outCurrG = rsG
        BBchanged = TRUE
End Sub
'-----------------------------------------------------------------------------------------------------------------
Sub Generate_Release_Notes ( )
        Dim objPkgFileSys, docPath, rootPath
        Dim notesSTR, pkgType
        
        Set objPkgFileSys = New PkgArchive
        
        
        objPkgFileSys.Map_Network_Drive  UNC_ARCHIVE, MappedDrive       ' Map Drive if required
        
        pkgType = Get_Package_Type ( parPv_id )
        
        objPkgFileSys.Remote_Host = TELNET_MACHINE
        If pkgType = enumPKG_TYPE_ERG_PRODUCT Then
                rootPath = MappedDrive & DEPLOY_ARCHIVE &"\"& parPkg_name &"\"& parPkg_Version
                objPkgFileSys.Archive_Path = TELNET_DEPLOY_ARCHIVE
                
                '%%%%% Creation of Product folder is just temporary.
                '%%%%% Remove the line objPkgFileSys.Create_Pkg_Folder parPkg_name, parPkg_version when depoly_archive is in production
                objPkgFileSys.Create_Pkg_Folder parPkg_name, parPkg_Version
                '%%%%% Remove line above ^^^^^^^^^^
                
        Else
                rootPath = MappedDrive & DPKG_ARCHIVE &"\"& parPkg_name &"\"& parPkg_Version
                objPkgFileSys.Archive_Path = TELNET_DPKG_ARCHIVE
                
        End If
    objPkgFileSys.Ensure_Read_Write parPkg_name, parPkg_version         ' Make sure all files and folders can be read
        objPkgFileSys.Create_Doc_Folder parPkg_name, parPkg_Version, DOC_FOLDER ' Create document folder if required
        
        ' --------------- RELEASE NOTES ----------------
        
        Select Case pkgType
                Case enumPKG_TYPE_GENERIC_DPKG
                        Call Generate_Notes_Style_A ( parPv_id, notesSTR, parRtag_name, parProj_id )
                        
                Case enumPKG_TYPE_DB_PATCH_DPKG
                        Call Generate_Notes_Style_A ( parPv_id, notesSTR, parRtag_name, parProj_id )

                Case enumPKG_TYPE_DEVICE_DPKG
                        Call Generate_Notes_Style_A ( parPv_id, notesSTR, parRtag_name, parProj_id )
                        
                Case enumPKG_TYPE_ERG_PRODUCT
                        Call Generate_Notes_Style_B ( parPv_id, notesSTR, parRtag_name, parProj_id )

                Case Else
                        Call Generate_Notes_Style_A ( parPv_id, notesSTR, parRtag_name, parProj_id )
                        
        End Select
        
        If WScript.Arguments.Named.Item("file") = "" Then
                Call SaveFile( rootPath &"\"& DOC_FOLDER, Format_FileName( parPkg_name, parPkg_Version, parPv_id ) , notesSTR )
        Else
                Call SaveFile( AppPath &"temp", WScript.Arguments.Named.Item("file") , notesSTR )
        End If
        
        ' ----------------------------------------------
        
End Sub
'-----------------------------------------------------------------------------------------------------------------
Function Format_CQ_CHANGE_REQUEST ( sInternal, sExternal )
    If NOT IsNull( sInternal ) Then
        If UCase( sInternal ) = "TRUE" AND UCase( sExternal ) = "TRUE" Then
            Format_CQ_CHANGE_REQUEST  = "Internal/External"
          
        ElseIf UCase( sInternal ) = "TRUE" Then
            Format_CQ_CHANGE_REQUEST  = "Internal"
          
        ElseIf UCase( sExternal) = "TRUE" Then
            Format_CQ_CHANGE_REQUEST  = "External"
          
        Else
            Format_CQ_CHANGE_REQUEST  = "--"
          
        End If
    Else
      Format_CQ_CHANGE_REQUEST  = "--"
      
    End If
End Function
'-----------------------------------------------------------------------------------------------------------------
Function Format_Reason_For_Release ( nIss_id, sReason )
    If IsNull( nIss_id ) Then
        If IsNull( sReason ) Then 
            Format_Reason_For_Release =  "Reason for this version is not specified." 
        Else
            Format_Reason_For_Release = FormatTextBox( HTML_Encode ( sReason ) ) 
        End If
    Else
        If IsNull( sReason ) Then 
            Format_Reason_For_Release = "" 
        Else
            Format_Reason_For_Release = FormatTextBox( HTML_Encode ( sReason ) ) 
        End If
    End If
End Function
'-----------------------------------------------------------------------------------------------------------------
Sub Get_Dependency_CQ_Issues ( SSsql, OOrsCQ, DDdepIss, AAiss )
        Dim recCnt
        If OOrsCQ.State = 1 Then 
                OOrsCQ.Close
        End If
        
        OOrsCQ.ActiveConnection = CQ_conn
        OOrsCQ.Source = SSsql
        OOrsCQ.CursorType = 0
        OOrsCQ.CursorLocation = 2
        OOrsCQ.LockType = 3
        OOrsCQ.Open()
        
        recCnt = 1
        
        While ((NOT OOrsCQ.BOF) AND (NOT OOrsCQ.EOF))
                ReDim Preserve AAiss( 20, recCnt )
                DDdepIss.Add Cstr(OOrsCQ("iss_db") &"."& OOrsCQ("iss_id")), Cstr(recCnt)
                AAiss( enumLoc_iss_db, recCnt )             = NVL( OOrsCQ("iss_db") )
                AAiss( enumLoc_iss_id, recCnt )             = NVL( OOrsCQ("iss_id") )
                AAiss( enumLoc_iss_num, recCnt )            = NVL( OOrsCQ("iss_num") )
                AAiss( enumLoc_summary, recCnt )            = NVL( FormatTextBox ( HTML_Encode ( OOrsCQ("summary") ) ) )
                AAiss( enumLoc_status, recCnt )             = NVL( OOrsCQ("status") )
                AAiss( enumLoc_priority, recCnt )           = NVL( OOrsCQ("priority") )
                AAiss( enumLoc_issue_type, recCnt )     = NVL( OOrsCQ("issue_type") )
                AAiss( enumLoc_submitter, recCnt )      = NVL( OOrsCQ("submitter") )
                AAiss( enumLoc_defect_in, recCnt )      = NVL( OOrsCQ("release_part1") &"."& OOrsCQ("release_part2") &"."& OOrsCQ("release_part3") )
                AAiss( enumLoc_submit_date, recCnt )    = NVL( EuroDate ( OOrsCQ("submit_date") ) )
                AAiss( enumLoc_project, recCnt )        = NVL( OOrsCQ("project") )
                AAiss( enumLoc_owner, recCnt )          = NVL( OOrsCQ("owner") )
                AAiss( enumLoc_product, recCnt )        = NVL( OOrsCQ("product") )
                AAiss( enumLoc_approver, recCnt )       = NVL( OOrsCQ("approver") )
                AAiss( enumLoc_package, recCnt )        = NVL( OOrsCQ("package_ref") )
                AAiss( enumLoc_description, recCnt )    = NVL( FormatTextBox ( HTML_Encode ( OOrsCQ("description") ) ) )
                AAiss( enumLoc_notes_log, recCnt )      = NVL( FormatTextBox ( HTML_Encode ( OOrsCQ("notes_log") ) ) )
                AAiss( enumLoc_release_id, recCnt )     = NVL( OOrsCQ("release_id") )
                AAiss( enumLoc_client_ref, recCnt )     = NVL( OOrsCQ("client_ref") )
                AAiss( enumLoc_severity, recCnt )       = NVL( OOrsCQ("severity") )
                AAiss( enumLoc_change_request, recCnt ) = Format_CQ_CHANGE_REQUEST ( OOrsCQ("cr_internal"), OOrsCQ("cr_external") )
                
                recCnt = recCnt + 1
                OOrsCQ.MoveNext
        WEnd
        
        OOrsCQ.Close
End Sub 
'-----------------------------------------------------------------------------------------------------------------
Sub Get_ORA_Package_Issues ( SSstate, outCQSQL )
        Dim rsTemp, sqlstr, DEVIiss, TDSEiss
        
        Select Case SSstate
        Case "Fixed_Issues"
                sqlstr = " SELECT iss_db, iss_id, iss_state"&_
                         "   FROM CQ_ISSUES "&_
                         "  WHERE pv_id = "& parPv_id &_
                         "    AND iss_state = "& enumISSUES_STATE_FIXED
        Case "Outstanding_Issues"
                sqlstr = " SELECT iss_db, iss_id, iss_state"&_
                         "   FROM CQ_ISSUES "&_
                         "  WHERE pv_id = "& parPv_id &_
                         "    AND iss_state = "& enumISSUES_STATE_IMPORTED
        Case "Dependency_Issues"
                sqlstr = " SELECT iss_db, iss_id"&_
                                 "   FROM CQ_ISSUES "&_
                                 "  WHERE iss_state = "& enumISSUES_STATE_FIXED &_
                                 "    AND pv_id IN ( SELECT dpv_id FROM PACKAGE_DEPENDENCIES WHERE pv_id = "& parPv_id &" )"
        End Select
        
        Set rsTemp = OraDatabase.DbCreateDynaset( sqlstr, cint(0))
        
        DEVIiss = "-1"
        TDSEiss  = "-1"
        
        While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))
                If CInt(rsTemp("iss_db")) = CInt(enumCLEARQUEST_DEVI_ID) Then
                        DEVIiss = DEVIiss &","& rsTemp("iss_id")
                        
                ElseIf CInt(rsTemp("iss_db")) = CInt(enumCLEARQUEST_TDSE_ID) Then
                        TDSEiss = TDSEiss &","& rsTemp("iss_id")
                        
                End If
                
                rsTemp.MoveNext
        WEnd
        
        ' Construct SQL statement for CQ database
        outCQSQL = ReadFile( AppPath & QUERIES_FOLDER & "\cq_issues_full.sql" )
        outCQSQL = Replace( outCQSQL, "/*enumCLEARQUEST_DEVI_ID*/", enumCLEARQUEST_DEVI_ID)
        outCQSQL = Replace( outCQSQL, "/*enumCLEARQUEST_TDSE_ID*/", enumCLEARQUEST_TDSE_ID)
        outCQSQL = Replace( outCQSQL, "/*DEVIiss*/", DEVIiss)
        outCQSQL = Replace( outCQSQL, "/*TDSEiss*/", TDSEiss)
        
        rsTemp.Close
        Set rsTemp = nothing
End Sub
'-----------------------------------------------------------------------------------------------------------------
Sub Get_JIRA_Package_Issues ( outJIRASQL )
        Dim rsTemp, sqlstr, JIRAiss
        
        sqlstr = " SELECT *"&_
                         "       FROM JIRA_ISSUES"&_
                         "      WHERE pv_id = "& parPv_id       
                                
        Set rsTemp = OraDatabase.DbCreateDynaset( sqlstr, cint(0))      

        JIRAiss = "'-1'"        
        
        While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))
                                JIRAiss = JIRAiss &",'"& rsTemp("iss_key")&"'"
                rsTemp.MoveNext
        WEnd    

        
        
        'Construct SQL statement for JIRA database
        If Len(JIRAiss) <> 1 Then       
                outJIRASQL = "SELECT I.pkey AS iss_num, I.summary, ISS.pname AS state,  IT.pname as IssueType, PR.pname as Priority, I.RESOLUTION "&_
                                " FROM jiraissue I, issuestatus ISS, issuetype IT, priority PR "&_
                                " WHERE I.pkey IN ("& JIRAIss &") "&_
                                " AND I.issuestatus = ISS.ID "&_
                                " AND IT.ID = I.issuetype "&_
                                " AND PR.ID = I.PRIORITY "
                        
        End If  
        
        rsTemp.Close    
        Set rsTemp = nothing
        


End Sub
'-----------------------------------------------------------------------------------------------------------------
Sub Get_CQ_Issues ( SSsql, OOrsCQ )
        OOrsCQ.ActiveConnection = CQ_conn
        OOrsCQ.Source = SSsql
        OOrsCQ.CursorType = 0
        OOrsCQ.CursorLocation = 2
        OOrsCQ.LockType = 3
        OOrsCQ.Open()
End Sub
'-----------------------------------------------------------------------------------------------------------------
Sub Get_JIRA_Issues ( SSsql, OOrsJIRA )
        OOrsJIRA.ActiveConnection = "Provider=sqloledb;Data Source=auperatcm04;Initial Catalog=JIRA_341;User Id=jirauser;Password=jirauser"
        OOrsJIRA.Source = SSsql
        OOrsJIRA.CursorType = 0
        OOrsJIRA.CursorLocation = 2
        OOrsJIRA.LockType = 3
        OOrsJIRA.Open()
End Sub
'-----------------------------------------------------------------------------------------------------------------
Sub EditReleaseInfoDetails ( nIssDB, nIssId, sNewInfo, sCurrentInfo )
        Dim rsQry, Source, pos

        If NOT IsNull(sCurrentInfo) Then
                pos = InStr( sCurrentInfo, sNewInfo )
                'Wscript.Echo pos
                'Wscript.Echo Len(sCurrentInfo)
                If pos = 0 Then
                        If Len(sCurrentInfo) = 0 Then
                                sCurrentInfo = sNewInfo
                        Else
                                sCurrentInfo = sCurrentInfo + VBNewLine + sNewInfo      
                        End If
                Else
                        sCurrentInfo = sCurrentInfo
                End If
        Else
                sCurrentInfo = sNewInfo
        End If
        
        Wscript.Echo sCurrentInfo

        Set rsQry = CreateObject("ADODB.Connection")

        rsQry.Open CQ_conn
        
        If CInt(nIssDB) = enumCLEARQUEST_DEVI_ID Then
                Source = "EXEC devi_prod.dbo.sp_RM_editReleaseInfoDetails "& nIssId &", '"& sCurrentInfo &"';"
                rsQry.Execute Source
        End If
        
        'On Error Resume Next
        

        
        rsQry.Close()
        Set rsQry = nothing
End Sub
'-----------------------------------------------------------------------------------------------------------------
'-------------------- MAIN LINE ----------------------
WScript.Echo "==================== job:GenerateReleaseNotes ===================="

Set objArgs = WScript.Arguments

If (objArgs.Unnamed.Count > 0) Then
        Wscript.Echo "ERROR: Unnamed parameters!"
        objArgs.ShowUsage
        WScript.Quit
        
Else
        parPkg_name = objArgs.Named.Item("pkg_name")
        parPkg_Version = objArgs.Named.Item("pkg_version")
        parPv_id = objArgs.Named.Item("pv_id")
        parRtag_name = objArgs.Named.Item("rtag_name")
        parProj_id = objArgs.Named.Item("proj_id")
                
        If ( parPkg_name <> "" AND parPkg_Version <> "") Then
                Call Get_PV_ID ( parPkg_name, parPkg_Version, parPv_id )
                
        ElseIf parPv_id <> ""  Then
                Call Get_Pkg_Name_Version ( parPv_id, parPkg_name, parPkg_Version )
                
        Else
                objArgs.ShowUsage
                WScript.Quit
                
        End If
        
End If

Call Check_Requirements_To_Proceed ( parPv_id )
Call Generate_Release_Notes ()

WScript.Echo "Release Notes generated successfully!"
]]>
                </script>
        </job>
        <job id="PostRun" args="/pv_id:30261 /f:Y" prompt="no">
                <?job error="true" debug="true" ?>
                <runtime>
                        <named helpstring="Package Name" name="pkg_name" required="false" type="string"/>
                        <named helpstring="Package Version" name="pkg_version" required="false" type="string"/>
                        <named helpstring="Package primary key" name="pv_id" required="false" type="simple"/>
                        <named helpstring="Force Release Notes Generation" name="f" required="false" type="string"/>
                        <usage>
Usage: 
   on_Make_Official.wsf [/pkg_name:value] [/pkg_version:value]
OR
   on_Make_Official.wsf [/pv_id:value]

Options:

pkg_name     : Package Name
pkg_version  : Package Version
pv_id        : Package Version primary key
                        </usage>
                </runtime>
                <object id="Oracle_Objects_For_OLE" progid="OracleInProcServer.XOraSession" events="true"/>
                <script language="VBScript" src="common_subs.vbs"/>
                <script language="VBScript" src="config.vbs"/>
                <script language="VBScript" src="pkg_archive.vbs"/>
                <script id="PostRun" language="VBScript">
<![CDATA[
Option Explicit
'=====================================================
'        Name:  PostRun
' Description:  Process ran after the release notes 
'               have been generated.
'               INPUT:  pkg_name
'                               pkg_version
'=====================================================

'================ Variable Definition ================
Dim objArgs
Dim parPv_id
Dim parPkg_name
Dim parRtag_name
Dim parProj_id
Dim parPkg_Version
Dim objPkgFileSys
Dim rootPath
Dim notesLocation
'=============== Constants Declaration ===============
'================== Variable Init ====================
Set objPkgFileSys = New PkgArchive
'=====================================================
'-----------------------------------------------------------------------------------------------------------------
Sub Move_Files_From_Web_Archive ()
    Dim oFileSys, sPath, sSourcePath, sDestPath
    Set oFileSys = CreateObject("Scripting.FileSystemObject")
    
        
    ' Move doc folder contents
    sSourcePath = AppPath & TEMP_FOLDER &"\"& parPkg_name &"\"& parPkg_Version &"\"& DOC_FOLDER 
    sDestPath = rootPath &"\"& DOC_FOLDER
   
    If oFileSys.FolderExists( sSourcePath ) Then
        WScript.Echo "Moving attachments from Web Server..."
        On Error Resume Next
        
        oFileSys.CopyFile sSourcePath &"\*", sDestPath, True   ' Copy with overwrite
        Call ErrorCheck ( "[job:PostRun sub:Move_Files_From_Web_Archive]", _
                                  "sSourcePath: "& sSourcePath & VBNewLine &_
                                  "sDestPath: "& sDestPath  )
                 
        oFileSys.DeleteFolder sSourcePath, True      ' Clean up
        'Call ErrorCheck ( "[job:PostRun sub:Move_Files_From_Web_Archive]", _
        '                         "Delete Folder: "& sSourcePath )
        
    End If
    
    Call CleanUp_Folders ( AppPath & TEMP_FOLDER )
    
End Sub
'-----------------------------------------------------------------------------------------------------------------
Sub CleanUp_Folders ( sPath )
        Dim currentFolder
        ' Attempt to remove PKG_NAME/PKG_VERSION folders on web server
        WScript.Echo "Cleaning temp files/folders at Web Server..."
    On Error Resume Next

        ' Attempting to remove PKG_VERSION/
        currentFolder = sPath &"\"& parPkg_name &"\"& parPkg_version
        If Folder_Is_Empty ( currentFolder  ) Then 
            Call DeleteFolder( currentFolder )
        'Else
        '    Call Raise_Event ( enumEVENT_WARNING, "[job:PostRun sub:CleanUp_Folders]", _
        '                                                                                 "Deleting Folder: "& currentFolder , _
        '                                                                                 "PKG_VERSION Folder is not empty and is not removed! Skipping this process.", NULL )
        End If
        
        Call ErrorCheck ( "[job:PostRun sub:CleanUp_Folders]", _
                          "Delete Folder: "& currentFolder )
        
        
        
        ' Attempting to remove PKG_NAME/
        currentFolder = sPath &"\"& parPkg_name
        If Folder_Is_Empty ( currentFolder  ) Then 
            Call DeleteFolder( currentFolder )
        'Else
        '    Call Raise_Event ( enumEVENT_WARNING, "[job:PostRun sub:CleanUp_Folders]", _
        '                                                                                 "Deleting Folder: "& currentFolder , _
        '                                                                                 "PKG_NAME Folder is not empty and is not removed! Skipping this process.", NULL )
        End If
        
        Call ErrorCheck ( "[job:PostRun sub:CleanUp_Folders]", _
                          "Delete Folder: "& currentFolder )
        
End Sub
'-----------------------------------------------------------------------------------------------------------------
Sub Initial_Setup ( oPkgFileSys, sRootPath, sNotesLocation )
    Dim MappedDrive, nPkgType
    oPkgFileSys.Map_Network_Drive  UNC_ARCHIVE, MappedDrive     ' Map Drive if required
    nPkgType = Get_Package_Type ( parPv_id )
    
    oPkgFileSys.Remote_Host = TELNET_MACHINE
    If nPkgType = enumPKG_TYPE_ERG_PRODUCT Then
        sNotesLocation = URL_PATH_DEPLOY_ARCHIVE &"/"& parPkg_name &"/"& parPkg_Version &"/"& DOC_FOLDER &"/"& Format_FileName( parPkg_name, parPkg_Version, parPv_id )
        sRootPath = MappedDrive & DEPLOY_ARCHIVE &"\"& parPkg_name &"\"& parPkg_Version
        oPkgFileSys.Archive_Path = TELNET_DEPLOY_ARCHIVE
        
        '%%%%% Creation of Product folder is just temporary.
        '%%%%% Remove the line objPkgFileSys.Create_Pkg_Folder parPkg_name, parPkg_version when depoly_archive is in production
        oPkgFileSys.Create_Pkg_Folder parPkg_name, parPkg_Version
        '%%%%% Remove line above ^^^^^^^^^^
    
    Else
        sNotesLocation = URL_PATH_DPKG_ARCHIVE &"/"& parPkg_name &"/"& parPkg_Version &"/"& DOC_FOLDER &"/"& Format_FileName( parPkg_name, parPkg_Version, parPv_id )
        sRootPath = MappedDrive & DPKG_ARCHIVE &"\"& parPkg_name &"\"& parPkg_Version
        oPkgFileSys.Archive_Path = TELNET_DPKG_ARCHIVE
    
    End If
    objPkgFileSys.Ensure_Read_Write parPkg_name, parPkg_version         ' Make sure all files and folders can be read
    oPkgFileSys.Create_Doc_Folder parPkg_name, parPkg_Version, DOC_FOLDER       ' Create document folder if required

End Sub
'-----------------------------------------------------------------------------------------------------------------
'-------------------- MAIN LINE ----------------------
WScript.Echo "==================== job:PostRun ===================="

Set objArgs = WScript.Arguments

If (objArgs.Unnamed.Count > 0) Then
        Wscript.Echo "ERROR: Unnamed parameters!"
        objArgs.ShowUsage
        WScript.Quit
        
Else
        parPkg_name = objArgs.Named.Item("pkg_name")
        parPkg_Version = objArgs.Named.Item("pkg_version")
        parPv_id = objArgs.Named.Item("pv_id")
        parRtag_name = objArgs.Named.Item("rtag_name")
        parProj_id = objArgs.Named.Item("proj_id")
                
        If ( parPkg_name <> "" AND parPkg_Version <> "") Then
                Call Get_PV_ID ( parPkg_name, parPkg_Version, parPv_id )
                
        ElseIf parPv_id <> ""  Then
                Call Get_Pkg_Name_Version ( parPv_id, parPkg_name, parPkg_Version )
                
        Else
                objArgs.ShowUsage
                WScript.Quit
                
        End If
        
End If

Call Check_Requirements_To_Proceed ( parPv_id )
Call Initial_Setup ( objPkgFileSys, rootPath, notesLocation )

Call Move_Files_From_Web_Archive ()

WScript.Echo "Making all READ ONLY from folder "& parPkg_Version &"/"
objPkgFileSys.All_Read_Only  parPkg_name, parPkg_Version        ' Make sure all file and folders are read only. Starting from version folder.

Call Write_To_Release_Notes_Info ( parPv_id, notesLocation )

Set objPkgFileSys = Nothing

WScript.Echo "PostRun completed successfully!"
]]>
                </script>
        </job>
</package>