%
'=====================================================
'| |
'| REPORTS DEFINITION |
'| |
'=====================================================
' Good idea to set when using redirect
Response.Expires = 0 ' always load the page, dont store
Response.Buffer = TRUE
'To enable the script timeout to 10 mins
Server.ScriptTimeout=600
%>
<%
'------------ ACCESS CONTROL ------------------
%>
<%
'------------ Variable Definition -------------
Dim rsQry
Dim rsTemp
Dim parPv_id, parExt
Dim objReleaseContent
Dim aReleaseContent
Dim objPackageDetails
Dim outobjDetails
Dim dpv_id
Dim BldStd
'------------ Constants Declaration -----------
'------------ Variable Init -------------------
parExt = Request("ext")
Set objReleaseContent = CreateObject("Scripting.Dictionary")
Set objPackageDetails = CreateObject("Scripting.Dictionary")
Set outobjDetails = CreateObject("Scripting.Dictionary")
'----------------------------------------------------------------------------------------------------------------------------------------
Sub GetPackageInformation ( nPv_id, ByRef oPackageDetails )
Dim rsQry, query
query = _
" SELECT pkg.pkg_name, pv.* "&_
" FROM PACKAGES pkg,"&_
" PACKAGE_VERSIONS pv"&_
" WHERE pv.pv_id = "& nPv_id &_
" AND pv.pkg_id = pkg.pkg_id "
Set rsQry = OraDatabase.DbCreateDynaset( query, 0)
oPackageDetails.RemoveAll
If (NOT rsQry.BOF) AND (NOT rsQry.EOF) Then
oPackageDetails("pkg_name") = rsQry("pkg_name")
oPackageDetails("pkg_version") = rsQry("pkg_version")
oPackageDetails("v_ext") = rsQry("v_ext")
oPackageDetails("pv_description") = rsQry("pv_description")
oPackageDetails("pv_overview") = rsQry("pv_overview")
oPackageDetails("src_path") = rsQry("src_path")
oPackageDetails("pkg_label") = rsQry("pkg_label")
oPackageDetails("is_build_env_required") = rsQry("is_build_env_required")
End If
rsQry.Close()
Set rsQry = Nothing
End Sub
'----------------------------------------------------------------------------------------------------------------------------------------
Function SQL_Build_Std ( nPv_id )
SQL_Build_Std = _
" SELECT bs.bs_name"&_
" FROM RELEASE_MANAGER.PACKAGE_VERSIONS pv,"&_
" RELEASE_MANAGER.BUILD_STANDARDS bs"&_
" WHERE pv.PV_ID = "& nPv_id &_
" AND pv.BS_ID = bs.BS_ID "
End Function
'----------------------------------------------------------------------------------------------------------------------------------------
Function SQL_Build_Env ( nPv_id )
SQL_Build_Env = _
" SELECT bm.bm_name"&_
" FROM RELEASE_MANAGER.PACKAGE_BUILD_INFO pbi,"&_
" RELEASE_MANAGER.BUILD_MACHINES bm"&_
" WHERE pbi.PV_ID = "& nPv_id &_
" AND pbi.BM_ID = bm.BM_ID "&_
" ORDER BY UPPER(bm.BM_NAME) "
End Function
'----------------------------------------------------------------------------------------------------------------------------------------
Function SQL_Modules (nBomId)
Dim pvIdList : pvIdList = GetReleaseContentQuery(nBomId)
SQL_Modules = _
"SELECT DISTINCT"&_
" qry.DPV_ID "&_
" FROM ("&_
" SELECT dep.*,"&_
" LEVEL AS LEVEL_NUM"&_
" FROM PACKAGE_DEPENDENCIES dep"&_
" START WITH dep.PV_ID IN ( "& pvIdList &" ) "&_
" CONNECT BY PRIOR dep.DPV_ID = dep.PV_ID"&_
" ) qry,"&_
" PACKAGES pkg,"&_
" PACKAGE_VERSIONS pv"&_
" WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID"
End Function
'----------------------------------------------------------------------------------------------------------------------------------------
Function SQL_Build_Dependencies ( nPv_id )
SQL_Build_Dependencies = _
" SELECT dpkg.pkg_name, dpv.pkg_version"&_
" FROM PACKAGE_DEPENDENCIES dep,"&_
" PACKAGES dpkg,"&_
" PACKAGE_VERSIONS dpv"&_
" WHERE dep.pv_id = "& nPv_id &_
" AND dep.DPV_ID = dpv.pv_id"&_
" AND dpv.pkg_id = dpkg.pkg_id "&_
" ORDER BY UPPER(dpkg.pkg_name) "
End Function
'----------------------------------------------------------------------------------------------------------------------------------------
Sub GetReleaseContent ( nBom_id, ByRef oReleaseContent )
Dim rsQry, query
query = GetReleaseContentQuery(nBom_id) & " ORDER BY qry.seq_num, UPPER(qry.pkg_name), UPPER(qry.pkg_version)"
Set rsQry = OraDatabase.DbCreateDynaset( query, 0)
While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
oReleaseContent( CStr( rsQry("prod_id")) ) = ""
rsQry.MoveNext()
WEnd
rsQry.Close()
Set rsQry = Nothing
End Sub
'----------------------------------------------------------------------------------------------------------------------------------------
Function GetReleaseContentQuery ( nBom_id)
GetReleaseContentQuery = _
" SELECT qry.prod_id"&_
" FROM ("&_
" SELECT DISTINCT"&_
" osc.PROD_ID,"&_
" pkg.pkg_name,"&_
" pv.pkg_version,"&_
" 1 as seq_num"&_
" FROM DEPLOYMENT_MANAGER.bom_contents bc,"&_
" DEPLOYMENT_MANAGER.operating_systems os, "&_
" DEPLOYMENT_MANAGER.os_contents osc,"&_
" PACKAGES pkg,"&_
" PACKAGE_VERSIONS pv,"&_
" DEPLOYMENT_MANAGER.PRODUCT_DETAILS pd"&_
" WHERE osc.os_id = os.os_id "&_
" AND os.node_id = bc.node_id"&_
" AND bc.bom_id = "& nBom_id &_
" AND pd.PROD_ID (+) = osc.PROD_ID"&_
" AND pv.pkg_id = pkg.pkg_id"&_
" AND osc.prod_id = pv.pv_id "&_
" AND (pd.is_rejected IS NULL or pd.IS_REJECTED != 'Y') "&_
" UNION "&_
" SELECT DISTINCT bec.prod_id, pkg.pkg_name, pkg_version, 2 as seq_num"&_
" FROM DEPLOYMENT_MANAGER.boms bm,"&_
" DEPLOYMENT_MANAGER.bom_contents bc,"&_
" DEPLOYMENT_MANAGER.network_nodes nn,"&_
" DEPLOYMENT_MANAGER.operating_systems os,"&_
" DEPLOYMENT_MANAGER.os_base_env obe,"&_
" DEPLOYMENT_MANAGER.base_env_contents bec,"&_
" PACKAGES pkg,"&_
" package_versions pv,"&_
" DEPLOYMENT_MANAGER.base_env be,"&_
" DEPLOYMENT_MANAGER.bos_types bt,"&_
" DEPLOYMENT_MANAGER.PRODUCT_DETAILS pd"&_
" WHERE bm.bom_id = "& nBom_id &_
" AND bm.bom_id = bc.bom_id"&_
" AND nn.node_id = bc.node_id"&_
" AND os.node_id = nn.node_id"&_
" AND obe.os_id = os.os_id"&_
" AND pd.PROD_ID (+) = bec.PROD_ID"&_
" AND (pd.is_rejected IS NULL or pd.IS_REJECTED != 'Y') "&_
" AND bec.base_env_id = obe.base_env_id"&_
" AND bec.prod_id = pv.pv_id"&_
" AND pkg.pkg_id = pv.pkg_id"&_
" AND be.base_env_id = obe.base_env_id"&_
" AND bt.bos_id = be.bos_id"&_
" ) qry "
End Function
'----------------------------------------------------------------------------------------------------------------------------------------
Function PatchIcon ( cIsPatch, cIsPatchObsolete )
If IsNull(cIsPatch) Then
PatchIcon = ""
Else
If IsNull(cIsPatchObsolete) Then
PatchIcon = ""
Else
PatchIcon = ""
End If
End If
End Function
%>
<%
Sub Reports_List ( SSgroup )
Dim repNum
%>
<%Select Case SSgroup%>
<%Case "Advanced_Search"%>
<%repNum = 1%>
Find Jira / ClearQuest Bugs / Issues Location
Use this advance search to locate bugs / issues imported to Release Manager from Jira or ClearQuest. more...
<%repNum = 2%>
Find Packages Using "Ignore Warnings" feature
Lists packages which use "Ignore Warning" feature on their dependencies. more...
<%repNum = 4%>
Find A Package
Use this advanced search to find a package in Release Manager more...
<%repNum = 5%>
Find Package Version History
Find all package versions and their current locations. more...
<%repNum = 14%>
Find File with a Package
Find all files within a named package. more...
<%Case "Release_Status"%>
<%repNum = 3%>
Current Status of Release
Shows all packages in a selected release with their current state, owner and last modifier. more...
<%repNum = 8%>
Deployable Software Modules
This report shows new and current deployable software modules. Use this report to find which modules will be deployed to the customer.
Also, use this report to find if there are new modules flaged as 'deployable'. more...
<%repNum = 7%>
Unit Tests per Package
Use this report to check the unit tests performed on packages in a project. more...
<%repNum = 12%>
Release AutoBuildable Status
Use this report to check the package versions that are autobuildable/not autobuildable in a given release. more...
<%repNum = 13%>
Release DEVI Status
Use this report to obtain a list of DEVIs for all packages in a given release. more...
<%Case "Release_History"%>
<%repNum = 10%>
Build History
Use this report to find which packages have been officially released within specified date range. more...
<%Case "Admin_Reports"%>
All Packages by Project by Version Tree by Release
CSV output of all packages used in Release Manager per Project. more...
All Runtime Dependencies by Project by Version Tree by Release
CSV output of all runtime dependencies used in Release Manager per Project. more...
<%repNum = 6%>
Unused Packages
All packages (Not Products) with no entries in "Used By" tab.
Use this report to help you clean up a release and remove all potentially unused packages. more...
<%Case "Escrow"%>
<%repNum = 9%>
Bill of Materials (BOM)
List of all ERG Products per network node for a particular
project. Use this report to integrate a particular project. more...
<%repNum = 11%>
Escrow Report
List of all Products/Patches for the BOM including modules. Use this report to provide a build roadmap. more...
Build Dependencies per Package
Use this report to build package from source code. The report
include package repository location, label and build dependencies.
Not available yet.
Build Order
Use this reports to find the order in which packages should be built.
Not available yet.
<%Case Else%>
« Select reporting category.
<%End Select%>
<%End Sub%>
<%
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sub Get_Projects ( NNproj_id, BBallow_all )
Dim rsTemp, Query_String
Query_String = _
"SELECT * FROM projects ORDER BY proj_name ASC"
Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
Response.write ""
rsTemp.Close
Set rsTemp = nothing
End Sub
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sub Get_Version_Trees ( NNproj_id, NNvtree_id, BBallow_all )
Dim rsTemp, Query_String
Query_String = _
"SELECT vtree_id, vtree_name FROM vtrees WHERE hide = 'N' AND proj_id = "& NNproj_id &" ORDER BY vtree_id ASC"
Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
Response.write ""
rsTemp.Close
Set rsTemp = nothing
End Sub
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sub Get_Open_Release_Labels ( NNproj_id, NNrtag_id, BBallow_all )
Dim rsTemp, Query_String
Query_String = _
"SELECT rtag_id, rtag_name FROM release_tags WHERE proj_id = "& NNproj_id &"AND official in ('N','C','R') ORDER BY rtag_name ASC"
Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
Response.write ""
rsTemp.Close
Set rsTemp = nothing
End Sub
Sub Get_Release_Labels ( NNproj_id, NNrtag_id, BBallow_all )
Dim rsTemp, Query_String
Query_String = _
"SELECT rtag_id, rtag_name FROM release_tags WHERE proj_id = "& NNproj_id &" ORDER BY rtag_id ASC"
Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
Response.write ""
rsTemp.Close
Set rsTemp = nothing
End Sub
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sub Get_SBOM_Version ( NNproj_id, NNrtag_id, BBallow_all, NNversion )
Dim rsTemp, Query_String
Query_String = _
"SELECT BOM_ID, BRANCH_ID, BOM_VERSION ||'.'||BOM_LIFECYCLE AS VERSION FROM DEPLOYMENT_MANAGER.BOMS WHERE BRANCH_ID ="&NNrtag_id&" ORDER BY VERSION"
Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
Response.write ""
rsTemp.Close
Set rsTemp = nothing
End Sub
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sub Get_Branches ( NNproj_id, NNrtag_id, BBallow_all )
Dim rsTemp, Query_String
Query_String = _
"SELECT * FROM deployment_manager.branches WHERE proj_id = "& NNproj_id &" ORDER BY branch_id ASC"
Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
Response.write ""
rsTemp.Close
Set rsTemp = nothing
End Sub
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sub Get_Base_Views ( nRtag_id, nBase_view_id, BBallow_all )
Dim rsTemp, Query_String
Query_String = _
"SELECT DISTINCT vi.view_id, vi.view_name"&_
" FROM VIEWS vi,"&_
" RELEASE_CONTENT rc"&_
" WHERE rc.BASE_VIEW_ID = vi.VIEW_ID"&_
" AND rc.rtag_id = "& nRtag_id &_
"ORDER BY UPPER( vi.view_name )"
Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
Response.write ""
rsTemp.Close
Set rsTemp = nothing
End Sub
%>
<%
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------
'==================================================================================
' Report Name : Packages Using Ignore Feature
' Description : Lists packages which use "Ignore Warning"
' feature on their dependencies.
' INPUT : Project, Vesion Tree, Release Label
'==================================================================================
Sub Packages_Using_Ignore_Feature ( SSsection, NNproj_id, NNrtag_id )
Dim Query_String, rsRep
Const Allow_All = TRUE
If NNproj_id = "" Then NNproj_id = -1
If NNrtag_id = "" Then NNrtag_id = -1
If SSsection = "TITLE" Then
Response.write "Packages Using 'Ignore Warnings' Feature"
Exit Sub
End If
If SSsection = "FORM" Then
%>
<% Exit Sub
End If
If SSsection = "BODY" Then
If NOT CBool(Request("action")) Then Exit Sub
Query_String = ReadFile( rootPath & "queries\rep_packages_using_ignore_feature.sql" )
OraDatabase.Parameters.Add "PROJ_ID", NNproj_id, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "RTAG_ID", NNrtag_id, ORAPARM_INPUT, ORATYPE_NUMBER
%>
Package Name
Version
<%
Dim currRtag_id
currRtag_id = -1
Set rsRep = OraDatabase.DbCreateDynaset( Query_String, 0 )
OraDatabase.Parameters.Remove "PROJ_ID"
OraDatabase.Parameters.Remove "RTAG_ID"
If rsRep.RecordCount = 0 Then
With Response
.write "
"
.write "
Found 0 records
"
.write "
"
End With
End If
While ((NOT rsRep.BOF) AND (NOT rsRep.EOF))
' -------- GROUP BY RTAG_ID -----------------
If CDbl(currRtag_id) <> CDbl(rsRep("rtag_id")) Then
%>
<%End If%>
<%
rsRep.Close
Set rsRep = nothing
End If
End Sub
%>
<%
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------
'==================================================================================
' Report Name : Current State of Release
' Description : Show all packages in a release with their state, owner and modifier
' Form Input : Project, Vesion Tree, Release Label
' SQL INPUT : rtag_id
'==================================================================================
Sub Current_State_of_Release ( SSsection, NNproj_id, NNrtag_id, NNpkg_states )
Dim Query_String, rsRep
Const Disallow_All = FALSE
If NNproj_id = "" Then NNproj_id = -1
If NNrtag_id = "" Then NNrtag_id = -1
If NNpkg_states = "" Then NNpkg_states = -1
If SSsection = "TITLE" Then
Response.write "Current State of Release"
Exit Sub
End If
If SSsection = "FORM" Then
%>
<% Exit Sub
End If
If SSsection = "BODY" Then
If NOT CBool(Request("action")) Then Exit Sub
Query_String = ReadFile( rootPath & "queries\rep_details_current_status_of_release.sql" )
Query_String = Replace ( Query_String, "/*PKG_STATES*/", NNpkg_states )
OraDatabase.Parameters.Add "RTAG_ID", NNrtag_id, ORAPARM_INPUT, ORATYPE_NUMBER
%>
Package Name and Version
Owner
Last Modifier
Added to Release
<%
Dim currView_id
currView_id = -1
Set rsRep = OraDatabase.DbCreateDynaset( Query_String, 0 )
OraDatabase.Parameters.Remove "RTAG_ID"
If rsRep.RecordCount = 0 Then
With Response
.write "
"
.write "
Found 0 records
"
.write "
"
End With
End If
While ((NOT rsRep.BOF) AND (NOT rsRep.EOF))
' -------- GROUP BY RTAG_ID -----------------
If CDbl(currView_id) <> CDbl(rsRep("view_id")) Then
%>
<%=rsRep("view_name")%>
<%
currView_id = CDbl(rsRep("view_id"))
End If
' -------- END GROUP ------------------------
%>
<%End If%>
<%
rsRep.Close
Set rsRep = nothing
End If
End Sub
%>
<%
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------
'==================================================================================
' Report Name : Find ClearQuest Bugs / Issues Location
' Description : Locates bugs / issues imported from ClearQuest
' Form Input : CQ issue Database, CQ issue number list space separated
'==================================================================================
Sub Where_Are_Bugs_Located ( SSsection, NNiss_db, SSiss_num_list )
If SSsection = "TITLE" Then
Response.write "Find Jira or ClearQuest Bugs / Issues Location"
Exit Sub
End If
If SSsection = "FORM" Then
%>
<% Exit Sub
End If
If SSsection = "BODY" Then
If NOT CBool(Request("action")) Then Exit Sub
If CDbl(NNiss_db) = enumCLEARQUEST_DEVI_ID Then
Call Where_Are_Bugs_Located_ClearQuest( SSsection, NNiss_db, SSiss_num_list)
ElseIf CDbl(NNiss_db) = enumJIRA_DEVI_ID Then
Call Where_Are_Bugs_Located_Jira (SSsection, NNiss_db, SSiss_num_list)
End If
%>
<%If parPrint = "" Then%>
Print this report
<%End If%>
<%
End If
End Sub
'-------------------------------------------------
' Function: Where_Are_Bugs_Located_Jira
' Description: Body of the report for Jira Issues
'
Sub Where_Are_Bugs_Located_Jira ( SSsection, NNiss_db, SSiss_num_list )
Dim Query_String, rsRep
Dim SSsql, issARR, num_item, issNumDict, rsCQ, recCount, maxRecCount
Set issNumDict = CreateObject("Scripting.Dictionary")
'---- Find Issue numbers in JIRA ----
SSsql = _
" select distinct ISS_KEY"&_
" FROM release_manager.JIRA_ISSUES"&_
" WHERE "
'---- Split multiple search ----
SSiss_num_list = Trim(SSiss_num_list)
If InStr( SSiss_num_list, " " ) > 0 Then
' space separator found
issARR = Split ( SSiss_num_list, " ")
For Each num_item In issARR
If num_item <> "" Then
SSsql = SSsql & " ISS_KEY LIKE ('%"& Replace( SQLstring(num_item), "*", "%" ) & "') OR"
End If
Next
SSsql = Left ( SSsql, Len(SSsql) - 2 ) ' Removes last OR
Else
SSsql = SSsql & " ISS_KEY LIKE ('%"& Replace( SQLstring(SSiss_num_list), "*", "%") &"')"
End If
Set rsCQ = OraDatabase.DbCreateDynaset( SSsql, cint(0))
' Get find results from CQ
recCount = 1
maxRecCount = 1000
issNumDict.ADD "'-1'", "-1" ' take care of no results
While ((NOT rsCQ.BOF) AND (NOT rsCQ.EOF) AND (recCount < maxRecCount))
issNumDict.ADD "'" & Cstr(rsCQ("ISS_KEY")) & "'", "1"
recCount = recCount + 1
rsCQ.MoveNext
WEnd
rsCQ.Close
Set rsCQ = nothing
Query_String = ReadFile( rootPath & "queries\rep_where_are_jirabugs_located.sql" )
Query_String = Replace ( Query_String, "/*ISS_ID_LIST*/", Join( issNumDict.Keys, ",") )
%>
Issue Number
Package Name and Version
Currently used Release
<%
Dim currIss_id
currIss_id = -1
Set rsRep = OraDatabase.DbCreateDynaset( Query_String, 0 )
If rsRep.RecordCount = 0 Then
With Response
.write "
"
.write "
Found 0 records
"
.write "
"
End With
End If
While ((NOT rsRep.BOF) AND (NOT rsRep.EOF))
' -------- GROUP BY ISS_KEY -----------------
If Cstr(currIss_id) <> Cstr(rsRep("iss_key")) Then
%>
<% ' -- line between issues %>
<%
rsRep.Close
Set rsRep = nothing
End Sub
'-------------------------------------------------
' Function: Where_Are_Bugs_Located_ClearQuest
' Description: Body of the report for ClearQuest Issues
'
Sub Where_Are_Bugs_Located_ClearQuest ( SSsection, NNiss_db, SSiss_num_list )
Dim Query_String, rsRep
Dim SSsql, issARR, num_item, iss_num_col, issNumDict, rsCQ, recCount, maxRecCount
Set issNumDict = CreateObject("Scripting.Dictionary")
'---- Find Issue numbers in ClearQuest ----
iss_num_col = "new_num"
SSsql = _
" SELECT si.dbid AS iss_id, si."& iss_num_col &" AS iss_num"&_
" FROM release_manager.cq_software_issue si"&_
" WHERE "
'---- Split multiple search ----
SSiss_num_list = Trim(SSiss_num_list)
If InStr( SSiss_num_list, " " ) > 0 Then
' space separator found
issARR = Split ( SSiss_num_list, " ")
For Each num_item In issARR
If num_item <> "" Then
SSsql = SSsql & " (si."& iss_num_col &" LIKE '%"& Replace( SQLstring(num_item), "*", "%" ) &"%') OR"
End If
Next
SSsql = Left ( SSsql, Len(SSsql) - 2 ) ' Removes last OR
Else
SSsql = SSsql & " (si."& iss_num_col &" LIKE '%"& Replace( SQLstring(SSiss_num_list), "*", "%") &"%')"
End If
Set rsCQ = OraDatabase.DbCreateDynaset( SSsql, cint(0))
' Get find results from CQ
recCount = 1
maxRecCount = 1000
issNumDict.ADD "-1", "-1" ' take care of no results
While ((NOT rsCQ.BOF) AND (NOT rsCQ.EOF) AND (recCount < maxRecCount))
issNumDict.ADD Cstr(rsCQ("iss_id")), Cstr(rsCQ("iss_num"))
recCount = recCount + 1
rsCQ.MoveNext
WEnd
rsCQ.Close
Set rsCQ = nothing
Query_String = ReadFile( rootPath & "queries\rep_where_are_bugs_located.sql" )
Query_String = Replace ( Query_String, "/*ISS_DB*/", NNiss_db )
Query_String = Replace ( Query_String, "/*ISS_ID_LIST*/", Join( issNumDict.Keys, ",") )
%>
Issue Number
Fixed
Package Name and Version
Notes
<%
Dim currIss_id
currIss_id = -1
Set rsRep = OraDatabase.DbCreateDynaset( Query_String, 0 )
If rsRep.RecordCount = 0 Then
With Response
.write "
"
.write "
Found 0 records
"
.write "
"
End With
End If
While ((NOT rsRep.BOF) AND (NOT rsRep.EOF))
' -------- GROUP BY ISS_ID -----------------
If Cstr(currIss_id) <> Cstr(rsRep("iss_id")) Then
%>
<%
Set rsQry = OraDatabase.DbCreateDynaset( "select * from release_content rc, release_tags rt where rc.rtag_id = rt.rtag_id and "&_
" pv_id ="&rsRep("pv_id"), 0 )
While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))
%>
<%
rsQry.MoveNext()
WEnd
rsQry.Close()
Set rsQry = Nothing
%>
<%=rsRep("notes")%>
<% rsRep.MoveNext
WEnd
%>
<%
rsRep.Close
Set rsRep = nothing
End Sub
%>
<%
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------
'==================================================================================
' Report Name : Find a Package
' Description : Locate a package in Release Manager
' Form Input : Package Name, version extension
'==================================================================================
Sub Find_Package ( SSsection, SSpkg_name, SSv_ext )
Dim Query_String, rsRep, oRegExp
If SSsection = "TITLE" Then
Response.write "Find a Package"
Exit Sub
End If
If SSsection = "FORM" Then
%>
<% Exit Sub
End If
If SSsection = "BODY" Then
If NOT CBool(Request("action")) Then Exit Sub
If SSpkg_name = "" Then SSpkg_name = "%"
If SSv_ext = "" Then SSv_ext = "%"
If Request("withwcard") <> "" Then SSpkg_name = "%"& Replace( SQLstring(SSpkg_name), "*", "") &"%" 'Place wild card automatically
' -- Check if this is PV_ID
Set oRegExp = New RegExp
oRegExp.Global = False 'Find only first match
oRegExp.Pattern = "\D" 'Match number only
If NOT oRegExp.Test(Request("FRpkg_name")) Then
Query_String = ReadFile( rootPath & "queries\rep_find_package_by_pv_id.sql" )
Query_String = Replace ( Query_String, "/*PV_ID*/", SQLstring(Request("FRpkg_name") ) )
Else
Query_String = ReadFile( rootPath & "queries\rep_find_package.sql" )
Query_String = Replace ( Query_String, "/*PKG_NAME*/", Replace( SQLstring(SSpkg_name), "*", "%") )
Query_String = Replace ( Query_String, "/*V_EXT*/", Replace( SQLstring(SSv_ext), "*", "%") )
End If
%>
Package Name and Version
Location
<%
Dim currPv_id, currVext
currPv_id = -2
currVext = ""
Set rsRep = OraDatabase.DbCreateDynaset( Query_String, 0 )
If rsRep.RecordCount = 0 Then
With Response
.write "
"
.write "
Found 0 records
"
.write "
"
End With
End If
While ((NOT rsRep.BOF) AND (NOT rsRep.EOF))
' -------- GROUP BY Package Version -----------------
If (Cstr(currPv_id) <> Cstr(rsRep("pv_id"))) OR (currVext <> rsRep("V_EXT")) Then
%>
<%If Request("withwcard") <> "" Then%>
<%' Highlight results for package search from index page%>
<%
currPv_id = Cstr(rsRep("pv_id"))
currVext = rsRep("V_EXT")
End If
' -------- END GROUP ------------------------
%>
<%If NOT IsNull(rsRep("proj_name")) Then%>
<%End If%>
<%
rsRep.Close
Set rsRep = nothing
End If
End Sub
%>
<%
'==================================================================================
' Report Name : Find Package Version History
' Description : Locate all package versions and their current location
' Form Input : Package Name, version extension
'==================================================================================
Sub Find_Package_Version_History ( SSsection, SSpkg_name, SSv_ext )
Dim Query_String, rsRep
If SSsection = "TITLE" Then
Response.write "Find Package Version History"
Exit Sub
End If
If SSsection = "FORM" Then
%>
<% Exit Sub
End If
If SSsection = "BODY" Then
Const img_Official = ""
If NOT CBool(Request("action")) Then Exit Sub
If SSpkg_name = "" Then SSpkg_name = "%"
If SSv_ext = "" Then SSv_ext = "%"
Query_String = ReadFile( rootPath & "queries\rep_package_version_history.sql" )
Query_String = Replace ( Query_String, "/*PKG_NAME*/", Replace( SQLstring(SSpkg_name), "*", "%") )
Query_String = Replace ( Query_String, "/*V_EXT*/", Replace( SQLstring(SSv_ext), "*", "%") )
%>
Official<%=img_Official%>
Package Name and Version
Location
<%
Dim currPv_id
currPv_id = -1
Set rsRep = OraDatabase.DbCreateDynaset( Query_String, 0 )
If rsRep.RecordCount = 0 Then
With Response
.write "
"
.write "
Found 0 records
"
.write "
"
End With
End If
While ((NOT rsRep.BOF) AND (NOT rsRep.EOF))
' -------- GROUP BY Package Version -----------------
If Cstr(currPv_id) <> Cstr(rsRep("pv_id")) Then
%>
<%End If%>
<%
rsRep.Close
Set rsRep = nothing
End If
End Sub
%>
<%
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------
'==================================================================================
' Report Name : Obsolete Packages
' Description : List packages that are not used (exclude products)
' INPUT : Project, Vesion Tree, Release Label
'==================================================================================
Sub Obsolete_Packages ( SSsection, NNproj_id, NNrtag_id )
Dim Query_String, rsRep
Const Allow_All = TRUE
Const Disallow_All = FALSE
If NNproj_id = "" Then NNproj_id = -1
If NNrtag_id = "" Then NNrtag_id = -1
If SSsection = "TITLE" Then
Response.write "Unused Packages"
Exit Sub
End If
If SSsection = "FORM" Then
%>
<% Exit Sub
End If
If SSsection = "BODY" Then
If NOT CBool(Request("action")) Then Exit Sub
Query_String = ReadFile( rootPath & "queries\rep_obsolete_packages.sql" )
OraDatabase.Parameters.Add "RTAG_ID", NNrtag_id, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "SMODE", 1, ORAPARM_INPUT, ORATYPE_NUMBER
%>
Package Name and Version
Released
Added to Release
<%
Dim currView_id
currView_id = -1
Set rsRep = OraDatabase.DbCreateDynaset( Query_String, 0 )
OraDatabase.Parameters.Remove "RTAG_ID"
OraDatabase.Parameters.Remove "SMODE"
If rsRep.RecordCount = 0 Then
With Response
.write "
"
.write "
Found 0 records
"
.write "
"
End With
End If
While ((NOT rsRep.BOF) AND (NOT rsRep.EOF))
' -------- GROUP BY BASE VIEW -----------------
If CDbl(currView_id) <> CDbl(rsRep("view_id")) Then
%>
<%=rsRep("view_name")%>
<%
currView_id = CDbl(rsRep("view_id"))
End If
' -------- END GROUP ------------------------
%>
<%=DisplayDate( rsRep("modified_stamp") )%> by <%=emailField(rsRep("modifier"),rsRep("modifier_email"))%>
<%=DisplayDate( rsRep("insert_stamp") )%> by <%=emailField(rsRep("insertor"),rsRep("insertor_email"))%>
<% rsRep.MoveNext
WEnd
%>
<%If parPrint = "" Then%>
Print this report
<%End If%>
<%
rsRep.Close
Set rsRep = nothing
End If
End Sub
%>
<%
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------
'==================================================================================
' Report Name : Deployable Software Modules
' Description : Shows packages that are deployed to the customers and shows new packages marked as deployable.
' INPUT : Project, Vesion Tree, Release Label, Base View (hard-coded to PRODUCTS)
'==================================================================================
Sub Deployable_Software_Modules ( sSection, nProj_id, nRtag_id, nBase_view_id )
Dim Query_String, rsRep
Const Allow_All = TRUE
Const Disallow_All = FALSE
If nProj_id = "" Then nProj_id = -1
If nRtag_id = "" Then nRtag_id = -1
If sSection = "TITLE" Then
Response.write "Deployable Software Modules"
Exit Sub
End If
If sSection = "FORM" Then
%>
<% Exit Sub
End If
If sSection = "BODY" Then
If NOT CBool(Request("action")) Then Exit Sub
'--- New Deployable Modules ---
Query_String = ReadFile( rootPath & "queries\rep_new_deployable_packages.sql" )
OraDatabase.Parameters.Add "RTAG_ID", nRtag_id, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "BASE_VIEW_ID", nBase_view_id, ORAPARM_INPUT, ORATYPE_NUMBER
%>
<%
Dim currPv_id
currPv_id = -1
OraDatabase.Parameters.Add "RTAG_ID", nRtag_id, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "BASE_VIEW_ID", nBase_view_id, ORAPARM_INPUT, ORATYPE_NUMBER
Set rsRep = OraDatabase.DbCreateDynaset( Query_String, 0 )
OraDatabase.Parameters.Remove "RTAG_ID"
OraDatabase.Parameters.Remove "BASE_VIEW_ID"
If rsRep.RecordCount = 0 Then
With Response
.write "
"
.write "
Found 0 records
"
.write "
"
End With
End If
While ((NOT rsRep.BOF) AND (NOT rsRep.EOF))
' -------- GROUP BY PRODUCT NAME -----------------
If CDbl(currPv_id) <> CDbl(rsRep("pv_id")) Then
%>
<%End If%>
<%
rsRep.Close
Set rsRep = nothing
End If
End Sub
%>
<%
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------
'==================================================================================
' Report Name : Bill Of Materials
' Description : List products for a BOM
' INPUT :
'==================================================================================
Sub Bill_of_Materials ( SSsection, NNproj_id, NNrtag_id, NNbom_id, NNversion )
Dim Query_String, rsRep, rsQry
Const Allow_All = TRUE
Const Disallow_All = FALSE
If NNproj_id = "" Then NNproj_id = -1
If NNrtag_id = "" Then NNrtag_id = -1
If NNversion = "" Then NNversion = -1
If SSsection = "TITLE" Then
Response.write "Software Bill Of Materials (SBOM) products"
Exit Sub
End If
If SSsection = "FORM" Then
%>
<% Exit Sub
End If
OraDatabase.Parameters.Add "BRANCH_ID", NNrtag_id, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "BOM_VERSION", Request("FRVersion"), ORAPARM_INPUT, ORATYPE_STRING
Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("rep_SBOM.sql"), cint(0))
OraDatabase.Parameters.Remove "BRANCH_ID"
OraDatabase.Parameters.Remove "BOM_VERSION"
Dim bomId
bomId = rsQry("bom_id")
rsQry.close
Set rsQry = nothing
If SSsection = "BODY" Then
If NOT CBool(Request("action")) Then Exit Sub
Query_String = ReadFile( rootPath & "queries\AllProducts.sql" )
OraDatabase.Parameters.Add "BOM_ID", bomId, ORAPARM_INPUT, ORATYPE_NUMBER
%>
Node Name
Operating System
Product
Version
<%
Dim currNode_id, currOs_id
currNode_id = -1
currOs_id = -1
Set rsRep = OraDatabase.DbCreateDynaset( Query_String, 0 )
OraDatabase.Parameters.Remove "BOM_ID"
If rsRep.RecordCount = 0 Then
With Response
.write "
"
.write "
Found 0 records
"
.write "
"
End With
End If
While ((NOT rsRep.BOF) AND (NOT rsRep.EOF))
' -------- GROUP BY BASE VIEW -----------------
If CDbl(currNode_id) <> CDbl(rsRep("node_id")) Then
%>
<%=rsRep("node_name")%>
<%
currNode_id = CDbl(rsRep("node_id"))
End If
' -------- END GROUP ------------------------
If CDbl(currOs_id) <> CDbl(rsRep("os_id")) Then
%>
<%End If%>
<%
rsRep.Close
Set rsRep = nothing
End If
End Sub
%>
<%
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------
'==================================================================================
' Report Name : Build History
' Description : List packages which were build between certain dates.
' INPUT :
'==================================================================================
Sub Build_History ( SSsection, NNproj_id, NNrtag_id)
Dim Query_String, rsRep, rsQry
Const Allow_All = TRUE
Const Disallow_All = FALSE
If NNproj_id = "" Then NNproj_id = -1
If NNrtag_id = "" Then NNrtag_id = -1
If SSsection = "TITLE" Then
Response.write "Build History"
Exit Sub
End If
If SSsection = "FORM" Then
%>
<% Exit Sub
End If
If SSsection = "BODY" Then
If NOT CBool(Request("action")) Then Exit Sub
%>
Package
Version
<%
Dim currView_id
currView_id = -1
OraDatabase.Parameters.Add "RTAG_ID", NNrtag_id, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "INITDATE", Request.Form("FRinitdate"), ORAPARM_INPUT, ORATYPE_STRING
OraDatabase.Parameters.Add "DUEDATE", Request.Form("FRduedate"), ORAPARM_INPUT, ORATYPE_STRING
Set rsRep = OraDatabase.DbCreateDynaset( GetQuery("rep_build_history.sql"), cint(0) )
OraDatabase.Parameters.Remove "RTAG_ID"
OraDatabase.Parameters.Remove "INITDATE"
OraDatabase.Parameters.Remove "DUEDATE"
If rsRep.RecordCount = 0 Then
With Response
.write "
"
.write "
Found 0 records
"
.write "
"
End With
End If
While ((NOT rsRep.BOF) AND (NOT rsRep.EOF))
' -------- GROUP BY BASE VIEW -----------------
If CDbl(currView_id) <> CDbl(rsRep("view_id")) Then
%>
<%=rsRep("view_name")%>
<%
currView_id = CDbl(rsRep("view_id"))
End If
' -------- END GROUP ------------------------
%>
<%End If%>
<%
rsRep.Close
Set rsRep = nothing
End If
End Sub
%>
<%
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------
'==================================================================================
' Report Name : Escrow Report
' Description : Report to extract Products/Patches for Building A RoadMap
' INPUT :
'==================================================================================
Sub Escrow_Report (SSsection, NNproj_id, NNrtag_id, NNbom_id, NNversion)
Dim Query_String, rsRep, rsQry
Const Allow_All = TRUE
Const Disallow_All = FALSE
If NNproj_id = "" Then NNproj_id = -1
If NNrtag_id = "" Then NNrtag_id = -1
If NNversion = "" Then NNversion = -1
If SSsection = "TITLE" Then
Response.write "Generation of ESCROW REPORT"
Exit Sub
End If
If SSsection = "FORM" Then
%>
<% Exit Sub
End If
OraDatabase.Parameters.Add "BRANCH_ID", NNrtag_id, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "BOM_VERSION", Request("FRVersion"), ORAPARM_INPUT, ORATYPE_STRING
Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("rep_SBOM.sql"), cint(0))
OraDatabase.Parameters.Remove "BRANCH_ID"
OraDatabase.Parameters.Remove "BOM_VERSION"
Dim bomId, ext
bomId = rsQry("bom_id")
Set rsQry = OraDatabase.DbCreateDynaset( "select * from release_manager.project_extentions where proj_id="&NNproj_id, cint(0))
ext = rsQry("ext_name")
rsQry.close
Set rsQry = nothing
If SSsection = "BODY" Then
If NOT CBool(Request("action")) Then Exit Sub
'---------------------- Run Before Page ---------------------------
Call GetReleaseContent ( bomId, objReleaseContent )
'Call GetBomDetails (bomId, outobjDetails)
'outobjDetails.Item("bom_full_version") = outobjDetails.Item("bom_name")&" "& outobjDetails.Item("bom_version") &"."& outobjDetails.Item("bom_lifecycle")
'------------------------------------------------------------------
%>
Release Manager - Escrow Report
<%=outobjDetails.Item("bom_full_version")%>
Products
<%
Set outobjDetails = Nothing
aReleaseContent = objReleaseContent.Keys
For Each parPv_id In aReleaseContent
Call GetPackageInformation ( parPv_id, objPackageDetails )
Response.Flush
%>
">
<%
rsTemp.MoveNext
WEnd
rsTemp.Close()
Set rsTemp = Nothing
End If
End Sub
%>
<%
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------
'==================================================================================
' Report Name : AutoBuildable_Report
' Description : List packages which were build between certain dates.
' INPUT :
'==================================================================================
Sub AutoBuildable_Report ( SSsection, NNproj_id, NNrtag_id)
Dim Query_String, rsRep, rsQry
Const Allow_All = TRUE
Const Disallow_All = FALSE
If NNproj_id = "" Then NNproj_id = -1
If NNrtag_id = "" Then NNrtag_id = -1
If SSsection = "TITLE" Then
Response.write "Release AutoBuildable Status"
Exit Sub
End If
If SSsection = "FORM" Then
%>
<% Exit Sub
End If
If SSsection = "BODY" Then
If NOT CBool(Request("action")) Then Exit Sub
If Request("btn") = "Assign" Then
OraDatabase.Parameters.Add "RTAG_ID", NNrtag_id, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "PV_ID_LIST", Request("prod_id_list"), ORAPARM_INPUT, ORATYPE_VARCHAR2
objEH.TryORA ( OraSession )
On Error Resume Next
OraDatabase.ExecuteSQL "BEGIN SET_TO_AUTOBUILDABLE( :RTAG_ID, :PV_ID_LIST ); END;"
objEH.CatchORA ( OraSession )
OraDatabase.Parameters.Remove "PV_ID_LIST"
OraDatabase.Parameters.Remove "RTAG_ID"
End If
%>
Base View
Package
Version
Autobuildable
<%
Dim currView_id
currView_id = -1
OraDatabase.Parameters.Add "RTAG_ID", NNrtag_id, ORAPARM_INPUT, ORATYPE_NUMBER
Set rsRep = OraDatabase.DbCreateDynaset( "SELECT * FROM RELEASE_CONTENT rc, VIEWS vw, PACKAGES pkg, PACKAGE_VERSIONS pv "&_
" WHERE pv.pv_id = rc.pv_id" &_
" and rc.base_view_id = vw.view_id" &_
" and pkg.pkg_id = pv.pkg_id" &_
" and rc.RTAG_ID = :RTAG_ID" &_
" order by vw.view_name, pkg.pkg_name", cint(0) )
OraDatabase.Parameters.Remove "RTAG_ID"
If rsRep.RecordCount = 0 Then
With Response
.write "
"
.write "
Found 0 records
"
.write "
"
End With
End If
While ((NOT rsRep.BOF) AND (NOT rsRep.EOF))
' -------- GROUP BY BASE VIEW -----------------
If CDbl(currView_id) <> CDbl(rsRep("view_id")) Then
%>
<%=rsRep("view_name")%>
<%
currView_id = CDbl(rsRep("view_id"))
End If
' -------- END GROUP ------------------------
%>
<%If rsRep("is_autobuildable") = "Y" Then%>
<%End If%>
<%
rsRep.Close()
Set rsRep = nothing
End If
End Sub
%>
<%
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------
'==================================================================================
' Report Name : Unit Tests per Package
' Description : List unit tests per package showing the unit test completeness
' INPUT : Project, Vesion Tree, Release Label, Base View, Level of Completeness, Show/Hide Dependencies, PV_ID
'==================================================================================
Sub Unit_Tests_Per_Package ( sSection, nProj_id, nRtag_id, nBase_view_id, nLevel_of_complete, nShow_dependencies, nPv_id )
Dim Query_String, rsRep
Const Allow_All = TRUE
Const Disallow_All = FALSE
If nProj_id = "" Then nProj_id = -1
If nRtag_id = "" Then nRtag_id = -1
If nShow_dependencies = "" Then nShow_dependencies = 0
If nPv_id = "" Then nPv_id = -1
If sSection = "TITLE" Then
Response.write "Unit Tests per Package"
Exit Sub
End If
If sSection = "FORM" Then
%>
<% Exit Sub
End If
If sSection = "BODY" Then
If NOT CBool(Request("action")) Then Exit Sub
Query_String = ReadFile( rootPath & "queries\rep_unit_tests_per_package.sql" )
OraDatabase.Parameters.Add "RTAG_ID", nRtag_id, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "BASE_VIEW", nBase_view_id, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "COMPLETENESS", nLevel_of_complete, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "SHOW_DEPS", nShow_dependencies, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "PV_ID", nPv_id, ORAPARM_INPUT, ORATYPE_NUMBER
%>
Package Name
Version
Test Name
Test Summary
Stamp
Test Completed
<%
Dim currBase_view_id, currPv_id, currDpv_id, showTests
currBase_view_id = -1
currPv_id = -1
currDpv_id = -1
Set rsRep = OraDatabase.DbCreateDynaset( Query_String, 0 )
OraDatabase.Parameters.Remove "RTAG_ID"
OraDatabase.Parameters.Remove "BASE_VIEW"
OraDatabase.Parameters.Remove "COMPLETENESS"
OraDatabase.Parameters.Remove "SHOW_DEPS"
OraDatabase.Parameters.Remove "PV_ID"
If rsRep.RecordCount = 0 Then
With Response
.write "
"
.write "
Found 0 records
"
.write "
"
End With
End If
While ((NOT rsRep.BOF) AND (NOT rsRep.EOF))
If nShow_dependencies <> 0 Then
' show dependency is ON
If rsRep("dpkg_name") = "------" Then
showTests = FALSE
Else
showTests = TRUE
End If
Else
showTests = TRUE
End If
' -------- GROUP BY BASE VIEW -----------------
If CDbl(currBase_view_id) <> CDbl(rsRep("base_view_id")) Then
%>
<%=rsRep("view_name")%>
<%
currBase_view_id = CDbl(rsRep("base_view_id"))
End If
' -------- END GROUP BASE VIEW ------------------------
%>
<%
' -------- GROUP BY PACKAGE -----------------
If CDbl(currPv_id) <> CDbl(rsRep("pv_id")) Then
%>
<%
currPv_id = CDbl(rsRep("pv_id"))
End If
' -------- END GROUP PACKAGE ------------------------
%>
<%
' -------- GROUP BY DEPENDENCY -----------------
If Not IsNull(rsRep("dpv_id")) Then
If CDbl(currDpv_id) <> CDbl(rsRep("dpv_id")) Then
%>
<%
currDpv_id = CDbl(rsRep("dpv_id"))
End If
End If
' -------- END GROUP DEPENDENCY ------------------------
%>
<%If Not IsNull( rsRep("completed_by") ) AND showTests Then%>
<%End If%>
<%
rsRep.Close
Set rsRep = nothing
End If
End Sub
%>
<%
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Function Get_CQ_Issues ( SSsql, OOrsCQ )
On Error Resume Next
Set OOrsCQ = OraDatabase.DbCreateDynaset( SSsql, cint(0))
Get_CQ_Issues = Err.Number
End Function
'----------------------------------------------------------------------------------------------------------------------------------------
Function GetRMIssueState (NNpv_id, NNissId)
Dim rsTemp, Query_String
Dim s
Query_String = _
" SELECT (CASE WHEN iss_state = 0 THEN ' (O)' ELSE ' (F)' END) AS issState "&_
" FROM cq_issues cq "&_
" WHERE cq.pv_id = "& NNpv_id &_
" AND cq.iss_id = "& NNissId
Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
s = ""
If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
s = (rsTemp.Fields("issState"))
End If
rsTemp.Close
Set rsTemp = nothing
GetRMIssueState = s
End Function
'----------------------------------------------------------------------------------------------------------------------------------------
' Function returns the number of imported clearquest issues
' and builds a string suitable for querying the clearquest issues database
Function Get_Package_Issues ( NNpv_id, SSsql, DDfixedIss, DDnotesIssDict, nIssState )
Dim rsTemp, sqlstr, DEVIiss, retVal
sqlstr = "SELECT iss_db, iss_id, iss_state, notes FROM CQ_ISSUES WHERE pv_id="& NNpv_id &" AND iss_state IN (" & nIssState & ")"
Set rsTemp = OraDatabase.DbCreateDynaset( sqlstr, cint(0))
retVal = rsTemp.RecordCount
DEVIiss = "-1"
While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))
If CInt(rsTemp("iss_db")) = CInt(enumCLEARQUEST_DEVI_ID) Then
DEVIiss = DEVIiss &","& rsTemp("iss_id")
End If
rsTemp.MoveNext
WEnd
' Construct SQL statement for CQ database
SSsql = ReadFile( rootPath & "queries\cq_issues_rep1.sql" )
SSsql = Replace( SSsql, "/*enumCLEARQUEST_DEVI_ID*/", enumCLEARQUEST_DEVI_ID)
SSsql = Replace( SSsql, "/*DEVIiss*/", DEVIiss)
rsTemp.Close()
Set rsTemp = nothing
Get_Package_Issues = retVal
End Function
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sub sdAdd( dict, key, value )
if IsNull(value) Then
dict.Add CStr(key),""
else
dict.Add CStr(key),CStr(value)
End If
End Sub
Function sdItem( dict, i )
Dim a
Dim s
a = dict.Items
s = a(i)
sdItem=s
End Function
Function sdKey( dict, i )
Dim a
a = dict.Keys
sdKey = a(i)
End Function
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Function ReleaseDeviStatus_ReportCheckbox( width, NameAndValue, Label, bCheck )
Dim s
If (IsNull(Request(NameAndValue)) OR (Request(NameAndValue) = "")) AND (not bCheck) Then
s = "
" & Label & "
"
Else
s = "
" & Label & "
"
End If
ReleaseDeviStatus_ReportCheckbox = s
End Function
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Function GetCQIssuesListFilter
Dim s
s = ""
If not (IsNull(Request("CB_FILTER_FIXED")) OR (Request("CB_FILTER_FIXED") = "")) Then
s = CStr(enumISSUES_STATE_FIXED)
If not (IsNull(Request("CB_FILTER_OUTSTANDING")) OR (Request("CB_FILTER_OUTSTANDING") = "")) Then
s = s & "," & CStr(enumISSUES_STATE_IMPORTED)
End If
Else
If not (IsNull(Request("CB_FILTER_OUTSTANDING")) OR (Request("CB_FILTER_OUTSTANDING") = "")) Then
s = CStr(enumISSUES_STATE_IMPORTED)
End If
End If
GetCQIssuesListFilter = s
End Function
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Function GetPkgNameAndVersion(SSPvId, SSPkgNameAndVer)
Dim SSpkgID, SSpkgName, SSpkgVersion, SSsrc_path, SSpkgDesc, BBdlocked
SSpkgID = ""
SSpkgName = ""
SSpkgVersion = ""
SSsrc_path = ""
SSpkgDesc = ""
BBdlocked = 0
Call Get_Pkg_Short_Info( SSPvId, SSpkgID, SSpkgName, SSpkgVersion, SSsrc_path, SSpkgDesc, BBdlocked )
If not ((SSpkgName = "") and (SSpkgVersion = "")) Then
SSPkgNameAndVer = SSpkgName & " " & SSpkgVersion
GetPkgNameAndVersion = True
Else
SSPkgNameAndVer = ""
GetPkgNameAndVersion = False
End If
End Function
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------
'==================================================================================
' Report Name : ReleaseDeviStatus_Report
' Description : List DEVIs for all Package Versions in a Release
' INPUT :
'==================================================================================
Sub ReleaseDeviStatus_Report ( SSsection, NNproj_id, NNrtag_id)
Dim rsCQQry ' Query for the CLEARQUEST database
Dim rsRMQry ' Query for the RELEASE MANAGER database
Dim SQLstr ' String to contain a query
Dim issueCnt ' Records how many CQ issues were found for a given RM package version
Dim retVal ' General return value
Dim isFirstDeviRow ' HTML rendering helper
Dim isRowOpen ' HTML rendering helper
Dim dict_Iss_Id_to_Iss_Num ' Dictionaries populated during the formation of the package DEVI list
Dim dict_Iss_Id_to_Iss_DB ' creation, supporting the generation of the DEVI details list.
Dim dict_Iss_Id_to_Risk
Dim dict_Iss_Id_to_Summary
Dim dict_Iss_Id_to_CodeRev
Dim dict_Iss_Id_to_IntNotes
Dim dict_Iss_Id_to_RelDBPatches
Dim dict_Iss_Id_to_Pkg
Dim dict_Iss_Id_to_PvId
Dim dict_Iss_Id_to_Iss_Status
Dim dict_Iss_Id_to_Iss_Type
Dim dict_Iss_Id_to_Aff_Pkg
Dim i,j,k ' General loop vars
Dim s,strIn,strOut,sDisplay ' General string vars
Dim a ' General array var
Dim pkgArr ' Holds an array of CSV strings listing RM package names, 1 array element per unique CQ issue found
Dim pkgCsv ' Holds a single CSV string listing RM package names, related to a single unique CQ issue
Dim pvIdArr ' Holds an array of CSV strings listing RM package PV IDs, 1 array element per unique CQ issue found
Dim pvIdCsv ' Holds a single CSV string listing RM package PV IDs, related to a single unique CQ issue
Dim crRefArr ' Holds an array of code review reference strings
Dim relDbPatchArr ' Holds an array of related DB patch strings
Dim sqlTblCnt ' Counts the number of tables in the RM query string
Dim FSO ' File System Object
Dim NewTextFile ' File Object
Dim emailReport ' Boolean flag signalling email generation
Dim cqFilterStr ' Fixed and/or Outstanding Issues Filter for RM Query
Dim cbWIPChecked ' Default checkbox states
Dim cbPendingChecked
Dim cbReleasedChecked
Dim cbFixed
Dim cbOutstanding
Dim cbWithoutIssues
Dim cbTraverseRipples
Dim reObj ' regular expression object
Dim reObjMatch
Dim NumPkgsListed ' Stats collection vars
Dim NumIssuesListed
Dim parRipDate ' traverse ripple limit date
Dim lastNonRipplePvId ' pv_id after ripple version traversal
Dim cqIssId ' clearquest database ID for a given issue (not a human readable number)
Const Allow_All = TRUE
Const Disallow_All = FALSE
NumPkgsListed = 0
NumIssuesListed = 0
If NNproj_id = "" Then NNproj_id = -1
If NNrtag_id = "" Then NNrtag_id = -1
If SSsection = "TITLE" Then
Response.write "Release DEVI Status"
Exit Sub
End If
' Determine if we have to assert default check status on one of the checkboxes
cbWIPChecked = False
cbPendingChecked = False
cbReleasedChecked = False
cbFixed = False
cbOutstanding = False
cbWithoutIssues = False
cbTraverseRipples = False
If (IsNull(Request("CB_FILTER_WIP")) OR (Request("CB_FILTER_WIP") = "")) _
and (IsNull(Request("CB_FILTER_PENDING")) OR (Request("CB_FILTER_PENDING") = "")) _
and (IsNull(Request("CB_FILTER_RELEASED")) OR (Request("CB_FILTER_RELEASED") = "")) Then
cbWIPChecked = True
End If
If (IsNull(Request("CB_FILTER_FIXED")) OR (Request("CB_FILTER_FIXED") = "")) _
and (IsNull(Request("CB_FILTER_OUTSTANDING")) OR (Request("CB_FILTER_OUTSTANDING") = "")) Then
cbFixed = True
End If
If (IsNull(Request("FRripdate")) OR (Request("FRripdate") = "")) Then
parRipDate = DisplayDate(DateAdd("d",-31,Date))
Else
parRipDate = Request("FRripdate")
End If
If SSsection = "FORM" Then
%>
<%
Exit Sub
End If
If SSsection = "BODY" Then
emailReport = false
If Request("btn") = "Mail Me CSV Report" Then
emailReport = true
End If
If NOT CBool(Request("action")) Then Exit Sub
If NNrtag_id = -1 then Exit Sub
' Construct Release Manager Query based upon form settings (rtag and checkbox states)
sqlTblCnt = 0
SQLstr = "SELECT * FROM ( "
If not (IsNull(Request("CB_FILTER_WIP")) OR (Request("CB_FILTER_WIP") = "")) Then
sqlTblCnt = sqlTblCnt + 1
SQLstr = SQLstr & " SELECT p.PROJ_ID, rt.RTAG_ID, v.VIEW_ID, pk.PKG_ID, pv.PV_ID,"&_
" p.PROJ_NAME, rt.RTAG_NAME, v.VIEW_NAME, pk.PKG_NAME, pv.PKG_VERSION, pv.PKG_LABEL, pv.BUILD_TYPE, pv.DLOCKED, 'WIP' as STATE"&_
" FROM PACKAGE_VERSIONS pv,"&_
" PACKAGES pk,"&_
" RELEASE_TAGS rt,"&_
" PROJECTS p,"&_
" VIEWS v," &_
" WORK_IN_PROGRESS wip"&_
" WHERE wip.RTAG_ID = :RTAG_ID"&_
" AND wip.RTAG_ID = rt.RTAG_ID"&_
" AND wip.PV_ID = pv.PV_ID"&_
" AND wip.VIEW_ID = v.VIEW_ID"&_
" AND pv.PKG_ID = pk.PKG_ID"&_
" AND rt.PROJ_ID = p.PROJ_ID"
End If
If not (IsNull(Request("CB_FILTER_PENDING")) OR (Request("CB_FILTER_PENDING") = "")) Then
If sqlTblCnt > 0 Then
SQLstr = SQLstr & " UNION ALL "
End If
sqlTblCnt = sqlTblCnt + 1
SQLstr = SQLstr & " SELECT p.PROJ_ID, rt.RTAG_ID, v.VIEW_ID, pk.PKG_ID, pv.PV_ID,"&_
" p.PROJ_NAME, rt.RTAG_NAME, v.VIEW_NAME, pk.PKG_NAME, pv.PKG_VERSION, pv.PKG_LABEL, pv.BUILD_TYPE, pv.DLOCKED, 'Pending' as STATE"&_
" FROM PACKAGE_VERSIONS pv,"&_
" PACKAGES pk,"&_
" RELEASE_TAGS rt,"&_
" PROJECTS p,"&_
" VIEWS v," &_
" PLANNED pl"&_
" WHERE pl.RTAG_ID = :RTAG_ID"&_
" AND pl.RTAG_ID = rt.RTAG_ID"&_
" AND pl.PV_ID = pv.PV_ID"&_
" AND pl.VIEW_ID = v.VIEW_ID"&_
" AND pv.PKG_ID = pk.PKG_ID"&_
" AND rt.PROJ_ID = p.PROJ_ID"
End If
If not (IsNull(Request("CB_FILTER_RELEASED")) OR (Request("CB_FILTER_RELEASED") = "")) Then
If sqlTblCnt > 0 Then
SQLstr = SQLstr & " UNION ALL "
End If
sqlTblCnt = sqlTblCnt + 1
SQLstr = SQLstr & " SELECT p.PROJ_ID, rt.RTAG_ID, v.VIEW_ID, pk.PKG_ID, pv.PV_ID,"&_
" p.PROJ_NAME, rt.RTAG_NAME, v.VIEW_NAME, pk.PKG_NAME, pv.PKG_VERSION, pv.PKG_LABEL, pv.BUILD_TYPE, pv.DLOCKED, 'Released' as STATE"&_
" FROM PACKAGE_VERSIONS pv,"&_
" PACKAGES pk,"&_
" RELEASE_TAGS rt,"&_
" PROJECTS p,"&_
" VIEWS v," &_
" RELEASE_CONTENT rc"&_
" WHERE rc.RTAG_ID = :RTAG_ID"&_
" AND rc.RTAG_ID = rt.RTAG_ID"&_
" AND rc.PV_ID = pv.PV_ID"&_
" AND rc.BASE_VIEW_ID = v.VIEW_ID"&_
" AND pv.PKG_ID = pk.PKG_ID"&_
" AND rt.PROJ_ID = p.PROJ_ID"
End If
SQLstr = SQLstr & " )"
SQLstr = SQLstr & " ORDER BY UPPER(PKG_NAME), PKG_VERSION"
' Exit if nothing to do
If sqlTblCnt = 0 Then
Response.Write "Select one or more of Work-in-progress/Pending/Released package version states to be considered"
Exit Sub
End If
' Get SQL string for querying the CLEARQUEST database for this package version's fixed issues enumISSUES_STATE_IMPORTED or enumISSUES_STATE_FIXED
cqFilterStr = GetCQIssuesListFilter()
If cqFilterStr = "" Then
Response.Write "Select one or both of Fixed/Outstanding issues lists to be considered"
Exit Sub
End If
' Query RELEASE MANAGER for Package versions
OraDatabase.Parameters.Add "RTAG_ID", NNrtag_id, ORAPARM_INPUT, ORATYPE_NUMBER
Set rsRMQry = OraDatabase.DbCreateDynaset( SQLstr, cint(0))
OraDatabase.Parameters.Remove "RTAG_ID"
' If no records returned issue a message to user and exit
If rsRMQry.RecordCount = 0 Then
Response.Write "No records returned - try including additional package version states"
Exit Sub
End If
' Create a downloadable file
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
Set NewTextFile = FSO.CreateTextFile(Server.MapPath("docs\ReleaseDEVIStatus_"&objAccessControl.UserName&".csv"), true)
' Create some dictionaries
set dict_Iss_Id_to_Iss_Num = CreateObject("Scripting.Dictionary")
set dict_Iss_Id_to_Iss_DB = CreateObject("Scripting.Dictionary")
set dict_Iss_Id_to_Pkg = CreateObject("Scripting.Dictionary")
set dict_Iss_Id_to_Risk = CreateObject("Scripting.Dictionary")
set dict_Iss_Id_to_Summary = CreateObject("Scripting.Dictionary")
set dict_Iss_Id_to_CodeRev = CreateObject("Scripting.Dictionary")
set dict_Iss_Id_to_IntNotes = CreateObject("Scripting.Dictionary")
set dict_Iss_Id_to_RelDBPatches = CreateObject("Scripting.Dictionary")
set dict_Iss_Id_to_PvId = CreateObject("Scripting.Dictionary")
set dict_Iss_Id_to_Iss_Status = CreateObject("Scripting.Dictionary")
set dict_Iss_Id_to_Iss_Type = CreateObject("Scripting.Dictionary")
set dict_Iss_Id_to_Aff_Pkg = CreateObject("Scripting.Dictionary")
set reObj = new RegExp
NewTextFile.WriteLine(DoubleQuotes("Release DEVI Status Report for " & Get_Proj_Name(Request("FRproj_id")) & ", release " & Get_Release_Name(Request("FRrtag_id"))))
NewTextFile.WriteLine("")
NewTextFile.WriteLine("Package DEVI List")
NewTextFile.WriteLine("")
NewTextFile.WriteLine("""Package"",""Label"",""State"",""Issue Number"",""Issue Summary""")
%>
This contains the list of CLEARQUEST issues for the release, along with selected details for each, and a reference back to the package versions to which they have been assigned.
<%
while ((NOT rsRMQry.BOF) AND (NOT rsRMQry.EOF))
isFirstDeviRow = 1
isRowOpen = 1
' If this package version is a ripple, try and find its non-ripple predecessor in order to get at the
' issues that were addressed
lastNonRipplePvId = rsRMQry("PV_ID")
If not (IsNull(Request("CB_FILTER_TRAVERSE_RIPPLES")) OR (Request("CB_FILTER_TRAVERSE_RIPPLES") = "")) Then
if ((rsRMQry("BUILD_TYPE") = "Y") and (rsRMQry("DLOCKED") = "Y")) Then
If (IsNull(Request("FRripdate")) OR (Request("FRripdate") = "")) Then
lastNonRipplePvId = getLastNonRippleVersionPVID(rsRMQry("PV_ID"), NULL, NULL)
Else
lastNonRipplePvId = getLastNonRippleVersionPVIDLimitedByDate(rsRMQry("PV_ID"), Request("FRripdate"))
End If
If IsNull(lastNonRipplePvId) or (lastNonRipplePvId = "") Then
lastNonRipplePvId = rsRMQry("PV_ID")
End If
End If
End If
issueCnt = Get_Package_Issues (lastNonRipplePvId, SQLstr, NULL, NULL, cqFilterStr )
if (issueCnt > 0) _
or not(IsNull(Request("CB_FILTER_WITHOUT_ISSUES")) OR (Request("CB_FILTER_WITHOUT_ISSUES") = "")) Then
NumPkgsListed = NumPkgsListed + 1
%>
<%
' Complete the row immediately if this package version has no issues, else process the issues.
if issueCnt = 0 Then
NewTextFile.WriteLine(",")
%>
<%
isRowOpen = 0
Else
' Query the CLEARQUEST database
retVal = Get_CQ_Issues ( SQLstr, rsCQQry )
If retVal = 0 Then
While ((NOT rsCQQry.BOF) AND (NOT rsCQQry.EOF))
Dim issueNumber
issueNumber = rsCQQry("ISS_NUM") & GetRMIssueState (lastNonRipplePvId, rsCQQry("ISS_ID"))
' Keep dictionary of issue IDs to human readable issue numbers, plus other info we will need later on for the report
If not dict_Iss_Id_to_Iss_Num.Exists(CStr(rsCQQry("ISS_ID"))) Then
sdAdd dict_Iss_Id_to_Iss_Num, rsCQQry("ISS_ID"), issueNumber
sdAdd dict_Iss_Id_to_Iss_DB, rsCQQry("ISS_ID"), rsCQQry("ISS_DB")
sdAdd dict_Iss_Id_to_Risk, rsCQQry("ISS_ID"), rsCQQry("RISK")
sdAdd dict_Iss_Id_to_Summary, rsCQQry("ISS_ID"), rsCQQry("SUMMARY")
sdAdd dict_Iss_Id_to_CodeRev, rsCQQry("ISS_ID"), rsCQQry("CR_REF")
sdAdd dict_Iss_Id_to_IntNotes, rsCQQry("ISS_ID"), rsCQQry("INT_NOTES")
sdAdd dict_Iss_Id_to_RelDBPatches, rsCQQry("ISS_ID"), rsCQQry("DB_PATCHES")
sdAdd dict_Iss_Id_to_Iss_Type, rsCQQry("ISS_ID"), rsCQQry("ISSUE_TYPE")
sdAdd dict_Iss_Id_to_Iss_Status, rsCQQry("ISS_ID"), rsCQQry("STATUS")
sdAdd dict_Iss_Id_to_Aff_Pkg, rsCQQry("ISS_ID"), rsCQQry("AFFECTED_PACKAGES")
End If
' Keep dictionary of issue IDs to release manager package names (latter is a comma separated list)
If dict_Iss_Id_to_Pkg.Exists(CStr(rsCQQry("ISS_ID"))) Then
dict_Iss_Id_to_Pkg.Item(CStr(rsCQQry("ISS_ID"))) = dict_Iss_Id_to_Pkg.Item(CStr(rsCQQry("ISS_ID"))) & "," & CStr(rsRMQry("PKG_NAME")) & " " & CStr(rsRMQry("PKG_VERSION"))
Else
sdAdd dict_Iss_Id_to_Pkg, rsCQQry("ISS_ID"), rsRMQry("PKG_NAME") & " " & CStr(rsRMQry("PKG_VERSION"))
End If
' Keep dictionary of issue IDs to release manager package version IDs (latter is a comma separated list)
If dict_Iss_Id_to_PvId.Exists(CStr(rsCQQry("ISS_ID"))) Then
dict_Iss_Id_to_PvId.Item(CStr(rsCQQry("ISS_ID"))) = dict_Iss_Id_to_PvId.Item(CStr(rsCQQry("ISS_ID"))) & "," & CStr(rsRMQry("PV_ID"))
Else
sdAdd dict_Iss_Id_to_PvId, rsCQQry("ISS_ID"), rsRMQry("PV_ID")
End If
' Begin new row if needed
if isRowOpen = 0 Then
isRowOpen = 1
%>
<%
End If
' If first row, no need to pad since those columns have already been filled in outer loop
If isFirstDeviRow = 1 Then
isFirstDeviRow = 0
NewTextFile.Write(DoubleQuotes(issueNumber) & ",")
NewTextFile.WriteLine(DoubleQuotes(rsCQQry("SUMMARY")))
%>
<%
rsCQQry.MoveNext
Wend ' end of loop processing each issue
rsCQQry.Close
Else
NewTextFile.WriteLine("," & DoubleQuotes("ERROR - could not get issue details from CLEARQUEST"))
%>
ERROR - could not get issue details from CLEARQUEST
<%
End If
' Complete the row if needed
if isRowOpen = 1 Then
if (isFirstDeviRow = 1) Then
NewTextFile.WriteLine(",")
%>
<%
End If
isRowOpen = 0
%><%
End If
End If
End If
rsRMQry.MoveNext
Wend ' End of loop processing each package version
set rsCQQry = nothing
%>
<%
For i = 0 To (dict_Iss_Id_to_Iss_Num.Count - 1)
cqIssId = sdKey(dict_Iss_Id_to_Iss_Num, i)
NumIssuesListed = NumIssuesListed + 1
%>
<%
'-------------------------------------------------------------------------------------------------------------------------------
' First line is the DEVI Number, and its summary info
s = sdItem(dict_Iss_Id_to_Summary,i) ' Prepare for CSV
s = Replace(s,"""","""""")
NewTextFile.WriteLine(DoubleQuotes(sdItem(dict_Iss_Id_to_Iss_Num,i)) & ",Issue Summary," & DoubleQuotes(s))
s = sdItem(dict_Iss_Id_to_Summary,i) ' Prepare for HTML
s = NewLine_To_BR(To_HTML(s))
%>
<%
'-------------------------------------------------------------------------------------------------------------------------------
' Next line is the DEVI Type Value (ie Defect, Future Enhancement, etc)
NewTextFile.WriteLine(",Type," & DoubleQuotes(sdItem(dict_Iss_Id_to_Iss_Type,i)))
%>
Type:
<%=sdItem(dict_Iss_Id_to_Iss_Type, i)%>
<%
'-------------------------------------------------------------------------------------------------------------------------------
' Next line is the DEVI Status Value
NewTextFile.WriteLine(",Status," & DoubleQuotes(sdItem(dict_Iss_Id_to_Iss_Status,i)))
%>
Status:
<%=sdItem(dict_Iss_Id_to_Iss_Status, i)%>
<%
'-------------------------------------------------------------------------------------------------------------------------------
' Next line is the DEVI Risk Value
NewTextFile.WriteLine(",Risk," & DoubleQuotes(sdItem(dict_Iss_Id_to_Risk,i)))
%>
Risk:
<%=sdItem(dict_Iss_Id_to_Risk, i)%>
<%
'-------------------------------------------------------------------------------------------------------------------------------
' Next line is the DEVI's code review reference
a = dict_Iss_Id_to_CodeRev.Items ' Get collection into an array
s = a(i) ' Get array element into a string
s = Replace(s, chr(13), "+") ' Replace possible delimiters with a single delimiter ("+")
s = Replace(s, chr(10), "+")
s = Replace(s, " ", "+")
crRefArr = Split(s,"+") ' Split on our contrived delimiter and iterate through results
NewTextFile.Write(",Code Review Ref,""")
%>
Code Review Ref:
<%
For j = 0 To UBOUND(crRefArr)
if not ((crRefArr(j) = "+") or (crRefArr(j) = ",") or (Trim(crRefArr(j)) = "")) Then
if j = 0 Then
NewTextFile.Write(Trim(crRefArr(j)))
%>
<%=Trim(crRefArr(j))%>
<%
Else
NewTextFile.Write("," & Trim(crRefArr(j)))
%>
<%=Trim(crRefArr(j))%>
<%
End If
End If
Next
NewTextFile.WriteLine("""")
%>
<%
'-------------------------------------------------------------------------------------------------------------------------------
' Next line is the DEVI's related DB Patches
' This is quite complicated but at the end of the day, we are aiming to convert the free form text in
' the CLEARQUEST devi into a list of hyperlinks to the actual package versions in RM, based on the assumption
' that the free form text contains PV_ID numbers somewhere therein.
a = dict_Iss_Id_to_RelDBPatches.Items ' Get collection into an array
s = a(i) ' Get array element into a string
s = Replace(s, chr(13), "+") ' Replace possible delimiters with a single delimiter ("+")
s = Replace(s, chr(10), "+")
s = Replace(s, " ", "+")
relDbPatchArr = Split(s,"+") ' Split on our contrived delimiter and iterate through results
NewTextFile.Write(",Related DB Patches,""")
%>
Related DB Patches:
<%
For j = 0 To UBOUND(relDbPatchArr)
if not ((relDbPatchArr(j) = "+") or (relDbPatchArr(j) = ",") or (Trim(relDbPatchArr(j)) = "")) Then
' Given that the Related DB Patches is a free form text field in a CLEARQUEST DEVI,
' it can contain a variety of text. Normally it contains a list of PV_ID's but it
' can also contain the patch file names (eg. orahops.467229_patch.xml) which normally
' contains PV_IDs embedded within them. We have to cater for both approaches and
' somehow extract those PV_IDs. We have already split the string so we know we are
' now dealing with a single item, but sometimes users name their packages or files with
' numbers as well as letters. The code below looks for the longest numeric sequence
' and assumes that is the PV_ID
Dim lenMax,lenThis,objMatch
lenMax = 0
lenThis = 0
sDisplay = Trim(relDbPatchArr(j)) 'default
' search for numeric sequences in the string
reObj.IgnoreCase = True
reObj.Global = True
reObj.Pattern = "[0-9]+"
set reObjMatch = reObj.Execute(Trim(relDbPatchArr(j)))
If reObjMatch.Count > 0 Then
' Look for the longest numeric sequence
for each objMatch in reObjMatch
lenThis = objMatch.Length
If lenThis > lenMax Then
lenMax = lenThis
sDisplay = objMatch 'sDisplay is now a numeric sequence
End If
next
if (lenMax > 0) Then
' Form the display string as "PV_ID (package-name package-version)"
If GetPkgNameAndVersion(sDisplay, s) Then
sDisplay = sDisplay & " (" & s & ")"
Else
' Couldn't get the package name/version from RM so it is likely this number
' is not a true/real PV_ID so revert to the simpler display format we began with
' as a default.
sDisplay = Trim(relDbPatchArr(j)) 'reset to full string
lenMax = 0 'zero to force simpler display format in HTML
End If
End If
End If
if j = 0 Then
NewTextFile.Write(Trim(sDisplay))
If (lenMax = 0) Then
%><%=Trim(relDbPatchArr(j))%><%
Else
%><%=sDisplay%><%
End If
Else
NewTextFile.Write("," & Trim(sDisplay))
If (lenMax = 0) Then
%><%=Trim(relDbPatchArr(j))%><%
Else
%> <%=sDisplay%><%
End If
End If
End If
Next
NewTextFile.WriteLine("""")
%>
<%
'-------------------------------------------------------------------------------------------------------------------------------
' Next line is the DEVI's affected packages field
s = sdItem(dict_Iss_Id_to_Aff_Pkg,i) ' Prepare for CSV
s = Replace(s,"""","""""")
NewTextFile.WriteLine(",Affected Packages," & DoubleQuotes(s))
s = sdItem(dict_Iss_Id_to_Aff_Pkg,i) ' Prepare for HTML
s = NewLine_To_BR(To_HTML(s))
%>
Affected Packages:
<%=s %>
<%
'-------------------------------------------------------------------------------------------------------------------------------
' Next line(s) is/are the packages this DEVI is assigned to, in release manager
pkgArr = dict_Iss_Id_to_Pkg.Items
pkgCsv = pkgArr(i)
pkgArr = Split(pkgCsv, ",")
pvIdArr = dict_Iss_Id_to_PvId.Items
pvIdCsv = pvIdArr(i)
pvIdArr = Split(pvIdCsv, ",")
NewTextFile.Write(",RM Assigned Packages,""")
%>
RM Assigned Packages:
<%
For j = 0 To UBOUND(pkgArr)
If j = 0 Then
NewTextFile.Write(pkgArr(j))
%><%=pkgArr(j)%><%
Else
NewTextFile.Write("," & pkgArr(j))
%> <%=pkgArr(j)%><%
End If
Next
NewTextFile.WriteLine("""")
%>
<%
'-------------------------------------------------------------------------------------------------------------------------------
' Next line is the DEVI's integration notes
s = sdItem(dict_Iss_Id_to_IntNotes, i) 'Prepare for CSV
s = Replace(s,"""","""""")
NewTextFile.WriteLine(",Integration Notes," & DoubleQuotes(s))
s = sdItem(dict_Iss_Id_to_IntNotes, i) ' Prepare for HTML
s = NewLine_To_BR(To_HTML(s))
%>
Report generated on <%=DisplayDate(Date)%> at <%=Time%>
<%=NumPkgsListed %> Package(s) Listed
<%=NumIssuesListed %> Issue(s) Listed
<%If parPrint = "" Then%>
Print this report
<%End If%>
<%
' Clean up
rsRMQry.Close
set rsRMQry = nothing
set dict_Iss_Id_to_Iss_Num = nothing
set dict_Iss_Id_to_Iss_DB = nothing
set dict_Iss_Id_to_Pkg = nothing
set dict_Iss_Id_to_Risk = nothing
set dict_Iss_Id_to_Summary = nothing
set dict_Iss_Id_to_CodeRev = nothing
set dict_Iss_Id_to_IntNotes = nothing
set dict_Iss_Id_to_RelDBPatches = nothing
set dict_Iss_Id_to_PvId = nothing
set dict_Iss_Id_to_Iss_Status = nothing
set dict_Iss_Id_to_Iss_Type = nothing
set dict_Iss_Id_to_Aff_Pkg = nothing
set reObj = nothing
NewTextFile.Close
Set NewTextFile=Nothing
' EMAIL CSV report if user has requested it
If emailReport Then
Dim LocalPath
LocalPath = Server.MapPath("docs\ReleaseDEVIStatus_"&objAccessControl.UserName&".csv")
Send_Email "Release Manager Notification",_
ADMIN_EMAIL, _
objAccessControl.UserEmail,_
"Release DEVI Status Report (csv) from Release Manager", _
"Your requested report...",_
LocalPath
End If
End If
End Sub
%>
<%
'==================================================================================
' Report Name : Find Files within a Package
' Description : Locate all files in all versions of the package
' Form Input : Package Name, File Name ( Wild cards allowed )
'==================================================================================
Sub Find_Package_File ( SSsection, SSpkg_name, SSfile_name )
Dim Query_String, rsRep
If SSsection = "TITLE" Then
Response.write "Find Files within a Package"
Exit Sub
End If
If SSsection = "FORM" Then
%>
<% Exit Sub
End If
If SSsection = "BODY" Then
Const img_Official = ""
If NOT CBool(Request("action")) Then Exit Sub
If SSpkg_name = "" Then SSpkg_name = "%"
If SSv_ext = "" Then SSv_ext = "%"
Query_String = ReadFile( rootPath & "queries\rep_package_version_history.sql" )
Query_String = Replace ( Query_String, "/*PKG_NAME*/", Replace( SQLstring(SSpkg_name), "*", "%") )
Query_String = Replace ( Query_String, "/*V_EXT*/", Replace( SQLstring(SSv_ext), "*", "%") )
%>
Official<%=img_Official%>
Package Name and Version
Location
<%
Dim currPv_id
currPv_id = -1
Set rsRep = OraDatabase.DbCreateDynaset( Query_String, 0 )
If rsRep.RecordCount = 0 Then
With Response
.write "
"
.write "
Found 0 records
"
.write "
"
End With
End If
While ((NOT rsRep.BOF) AND (NOT rsRep.EOF))
' -------- GROUP BY Package Version -----------------
If Cstr(currPv_id) <> Cstr(rsRep("pv_id")) Then
%>
<%End If%>
<%
rsRep.Close
Set rsRep = nothing
End If
End Sub
%>
<%
'==================================================================================
' Report Name : Find Files within a Package
' Description : Locate all files in all versions of the package
' Form Input : Package Name, File Name ( Wild cards allowed )
'==================================================================================
Sub Find_Package_File ( SSsection, SSpkg_name, SSfile_name )
Dim Query_String, rsRep
If SSsection = "TITLE" Then
Response.write "Find Files within a Package"
Exit Sub
End If
If SSsection = "FORM" Then
%>
<% Exit Sub
End If
If SSsection = "BODY" Then
Const img_Official = ""
If NOT CBool(Request("action")) Then Exit Sub
If SSpkg_name = "" Then SSpkg_name = "%"
If SSfile_name = "" Then SSfile_name = "%"
Query_String = ReadFile( rootPath & "queries\rep_package_version_history.sql" )
Query_String = Replace ( Query_String, "/*PKG_NAME*/", Replace( SQLstring(SSpkg_name), "*", "%") )
Query_String = Replace ( Query_String, "/*V_EXT*/", Replace( SQLstring(SSfile_name), "*", "%") )
%>
Official<%=img_Official%>
Package Name and Version
Location
<%
Dim currPv_id
currPv_id = -1
Set rsRep = OraDatabase.DbCreateDynaset( Query_String, 0 )
If rsRep.RecordCount = 0 Then
With Response
.write "
"
.write "
Found 0 records
"
.write "
"
End With
End If
While ((NOT rsRep.BOF) AND (NOT rsRep.EOF))
' -------- GROUP BY Package Version -----------------
If Cstr(currPv_id) <> Cstr(rsRep("pv_id")) Then
%>
<%End If%>
<%
rsRep.Close
Set rsRep = nothing
End If
End Sub
%>
<%
'==================================================================================
' Report Name : Find Files within a Package
' Description : Locate all files in all versions of the package
' Form Input : Package Name, File Name ( Wild cards allowed )
'==================================================================================
Sub Find_Package_File ( SSsection, SSpkg_name, SSfile_name )
Dim Query_String, rsRep
If SSsection = "TITLE" Then
Response.write "Find Files within a Package"
Exit Sub
End If
If SSsection = "FORM" Then
%>
<% Exit Sub
End If
If SSsection = "BODY" Then
If NOT CBool(Request("action")) Then Exit Sub
If SSpkg_name = "" Then SSpkg_name = "%"
If SSfile_name = "" Then SSfile_name = "%"
Query_String = ReadFile( rootPath & "queries\rep_package_file_find.sql" )
Query_String = Replace ( Query_String, "/*PKG_NAME*/", Replace( SQLstring(SSpkg_name), "*", "%") )
Query_String = Replace ( Query_String, "/*FILE_NAME*/", Replace( SQLstring(SSfile_name), "*", "%") )
%>
Package Name and Version
Location
<%
Dim currPv_id
currPv_id = -1
Set rsRep = OraDatabase.DbCreateDynaset( Query_String, 0 )
If rsRep.RecordCount = 0 Then
With Response
.write "
"
.write "
Found 0 records
"
.write "
"
End With
End If
While ((NOT rsRep.BOF) AND (NOT rsRep.EOF))
' -------- GROUP BY Package Version -----------------
If Cstr(currPv_id) <> Cstr(rsRep("pv_id")) Then
%>