%@LANGUAGE="VBSCRIPT"%> <% '===================================================== '| | '| REPORT | '| SBOM Issues | '===================================================== %> <% Option explicit ' Good idea to set when using redirect Response.Expires = 0 ' always load the page, dont store 'To enable the script timeout to 5 mins Server.ScriptTimeout=300 %> <% '------------ ACCESS CONTROL ------------------ %> <% '------------ Variable Definition ------------- Dim rsQry Dim parPv_id Dim objSbomDetailsA, objSbomDetailsB Dim objRelCollectorA, objRelCollectorB Dim parSbomA, parSbomB Dim retValCQIssues Dim retValJIRAIssues Dim topLevelId Dim DEVIiss Dim pvIdList Dim objIssueDetails Dim cqIssues Dim jiraIssues Dim rsBomPackages Dim rsPkgDeps Dim multiPackagesEnabled '------------ Constants Declaration ----------- '------------ Variable Init ------------------- parSbomA = Request("sbomA") parSbomB = Request("sbomB") Set objRelCollectorA = CreateObject("Scripting.Dictionary") Set objRelCollectorB = CreateObject("Scripting.Dictionary") Set objSbomDetailsA = CreateObject("Scripting.Dictionary") Set objSbomDetailsB = CreateObject("Scripting.Dictionary") Set objIssueDetails = CreateObject("Scripting.Dictionary") Set jiraIssues = CreateObject( "Scripting.Dictionary" ) Set rsBomPackages = Server.CreateObject("ADODB.Recordset") Set rsPkgDeps = Server.CreateObject("ADODB.Recordset") '---------------------------------------------- %> <% '---------------------------------------------------------------------------------------------------------------------------------------- Sub GetFormDetails ( nSourceSBOM, ByRef tempObjRelCollector ) Dim rsQry, query ' Exit if nSourceRtagId is empty If nSourceSBOM = "" Then Exit Sub OraDatabase.Parameters.Add "SBOM", nSourceSBOM, ORAPARM_INPUT, ORATYPE_NUMBER query = _ " SELECT pr.PROJ_NAME ||' > '|| br.BRANCH_NAME ||' > '|| b.BOM_VERSION ||'.'||b.BOM_LIFECYCLE AS LOCATION, "&_ " pr.PROJ_ID, b.BOM_ID, br.BRANCH_ID, b.IS_READONLY, b.RTAG_ID_FK"&_ " FROM BRANCHES br,"&_ " BOMS b,"&_ " DM_PROJECTS pr"&_ " WHERE br.PROJ_ID = pr.PROJ_ID"&_ " AND b.BRANCH_ID = br.BRANCH_ID"&_ " AND b.BOM_ID = :SBOM" Set rsQry = OraDatabase.DbCreateDynaset( query, ORADYN_DEFAULT ) OraDatabase.Parameters.Remove "SBOM" If rsQry.RecordCount > 0 Then tempObjRelCollector ("location") = rsQry("location") tempObjRelCollector ("official") = rsQry("IS_READONLY") tempObjRelCollector ("proj_id") = rsQry("proj_id") tempObjRelCollector ("branch_id") = rsQry("branch_id") tempObjRelCollector ("bom_id") = rsQry("bom_id") tempObjRelCollector ("rtag_id_fk") = rsQry("rtag_id_fk") Else Err.Raise 8, "Sub GetFormDetails in "& SCRIPT_NAME, "Empty record set returned. nSourceSBOM="& nSourceSBOM End If If tempObjRelCollector ("location") = "" Then tempObjRelCollector.Item ("location") = "N" End If rsQry.Close Set rsQry = Nothing End Sub '---------------------------------------------------------------------------------------------------------------------------------------- Sub GetPackageDetailsForIssue ( nIss_id, sPvIdList, tempIssDetails ) Dim query query = " SELECT DISTINCT pkg.pkg_name, pv.pkg_version, pv.v_ext, pkg.pkg_id, pv.pv_id "&_ " FROM package_versions pv, packages pkg, cq_issues iss "&_ " WHERE pv.pkg_id = pkg.pkg_id AND pv.pv_id = iss.pv_id AND iss.iss_id = :ISS_ID AND pv.pv_id IN ("& sPvIdList &")" OraDatabase.Parameters.Add "ISS_ID", nIss_id, ORAPARM_INPUT, ORATYPE_NUMBER Set tempIssDetails = OraDatabase.DbCreateDynaset( query, ORADYN_DEFAULT ) OraDatabase.Parameters.Remove "ISS_ID" If tempIssDetails.RecordCount = 0 Then Err.Raise 8, "Sub GetPackageDetailsForIssue in "& SCRIPT_NAME, "Empty record set returned. nIss_id="& nIss_id End If End Sub '---------------------------------------------------------------------------------------------------------------------------------------- Sub GetPackageDetailsForJIRAIssue ( nIss_Key, sPvIdList, tempIssDetails ) Dim query query = " SELECT DISTINCT pkg.pkg_name, pv.pkg_version, pv.v_ext, pkg.pkg_id, pv.pv_id "&_ " FROM package_versions pv, packages pkg, jira_issues iss "&_ " WHERE pv.pkg_id = pkg.pkg_id AND pv.pv_id = iss.pv_id AND iss.iss_key = :ISS_ID AND pv.pv_id IN ("& sPvIdList &")" OraDatabase.Parameters.Add "ISS_ID", nIss_Key, ORAPARM_INPUT, ORATYPE_NUMBER Set tempIssDetails = OraDatabase.DbCreateDynaset( query, ORADYN_DEFAULT ) OraDatabase.Parameters.Remove "ISS_ID" If tempIssDetails.RecordCount = 0 Then Err.Raise 8, "Sub GetPackageDetailsForJIRAIssue in "& SCRIPT_NAME, "Empty record set returned. nIss_Key="& nIss_Key End If End Sub '---------------------------------------------------------------------------------------------------------------------------------------- Function GetIssues( sPvIdList, oRsCqIssTemp ) Dim sqlStrTemp, oRsTemp Set oRsTemp = OraDatabase.DbCreateDynaset("SELECT iss_db, iss_id FROM CQ_ISSUES WHERE pv_id IN ("& sPvIdList &")", cint(0)) If oRsTemp.RecordCount <> 0 Then DEVIiss = "-1" While ((NOT oRsTemp.BOF) AND (NOT oRsTemp.EOF)) If CInt(oRsTemp("iss_db")) = CInt(enumCLEARQUEST_DEVI_ID) Then DEVIiss = DEVIiss &","& oRsTemp("iss_id") End If oRsTemp.MoveNext WEnd sqlStrTemp = GetQuery ("cq_issues.sql") sqlStrTemp = Replace( sqlStrTemp, "/*enumCLEARQUEST_DEVI_ID*/", enumCLEARQUEST_DEVI_ID) sqlStrTemp = Replace( sqlStrTemp, "/*DEVIiss*/", DEVIiss) On Error Resume Next Set oRsCqIssTemp = OraDatabase.DbCreateDynaset( sqlStrTemp, cint(0)) GetIssues = Err.Number Else GetIssues = -1 End If End Function '---------------------------------------------------------------------------------------------------------------------------------------- Function Get_JIRA_Issues ( sPvIdList, oRsJiraIssTemp ) On Error Resume Next Call getJiraIssueDetails(sPvIdList, oRsJiraIssTemp, 1) If Err.Number <> 0 Then Get_JIRA_Issues = Err.Number ElseIf oRsJiraIssTemp.Count = 0 Then Get_JIRA_Issues = -1 Else Get_JIRA_Issues = 0 End If End Function '---------------------------------------------------------------------------------------------------------------------------------------- Sub GetPackageDependencies ( nPv_id_a, nPv_id_b, oRsTemp ) OraDatabase.Parameters.Add "PV_ID_A", nPv_id_a, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "PV_ID_B", nPv_id_b, ORAPARM_INPUT, ORATYPE_NUMBER Set oRsTemp = OraDatabase.DbCreateDynaset( GetQuery ("UniquePackageDependencies.sql"), ORADYN_DEFAULT ) OraDatabase.Parameters.Remove "PV_ID_A" OraDatabase.Parameters.Remove "PV_ID_B" End Sub '---------------------------------------------------------------------------------------------------------------------------------------- Sub GetAllBomContents ( nSbom_id, oRsTemp ) OraDatabase.Parameters.Add "SBOM_ID", nSbom_id, ORAPARM_INPUT, ORATYPE_NUMBER Set oRsTemp = OraDatabase.DbCreateDynaset( GetQuery ("BomPackagesAndDeps.sql"), ORADYN_DEFAULT ) OraDatabase.Parameters.Remove "SBOM_ID" End Sub '---------------------------------------------------------------------------------------------------------------------------------------- Sub GetBomPackages ( nSbomA, nSbomB, oRsTemp ) OraDatabase.Parameters.Add "SBOM_A", nSbomA, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "SBOM_B", nSbomB, ORAPARM_INPUT, ORATYPE_NUMBER Set oRsTemp = OraDatabase.DbCreateDynaset( GetQuery ("BomPackageDiff.sql"), ORADYN_DEFAULT ) OraDatabase.Parameters.Remove "SBOM_A" OraDatabase.Parameters.Remove "SBOM_B" End Sub '---------------------------------------------------------------------------------------------------------------------------------------- %> <% '---------------------- Run Before Page --------------------------- ' Get release details Call GetFormDetails ( parSbomA, objRelCollectorA ) Call GetFormDetails ( parSbomB, objRelCollectorB ) multiPackagesEnabled = FALSE If parSbomA <> "" AND parSbomB <> "" Then If Request("form_btn_comp") = "Get Issues" Then Call OpenInWindow ( SCRIPT_NAME &"?sbomA="& parSbomA &"&sbomB="& parSbomB ) End If Call GetBomDetails (parSbomA, objSbomDetailsA) Call GetBomDetails (parSbomB, objSbomDetailsB) objSbomDetailsA("bom_full_version") = objSbomDetailsA("bom_name")&" "& objSbomDetailsA("bom_version") &"."& objSbomDetailsA("bom_lifecycle") objSbomDetailsB("bom_full_version") = objSbomDetailsB("bom_name")&" "& objSbomDetailsB("bom_version") &"."& objSbomDetailsB("bom_lifecycle") ' Check for the submission of the "multiplepackageS" checkbox that enables multiple packages to be identified and rendered on the page ' for each issue, if applicable. If Request("multipackages") = "TRUE" Then multiPackagesEnabled = TRUE Else multiPackagesEnabled = FALSE End If Else objSbomDetailsA("bom_full_version") = "Software Bill of Materials (SBOM)" End If '------------------------------------------------------------------ %>