Subversion Repositories DevTools

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
29 jtweddle 1
<%@LANGUAGE="VBSCRIPT"%>
2
<%
3
'=====================================================
4
'|                                                   |
5
'|                      REPORT                       |
6
'|                    SBOM Issues                    |
7
'=====================================================
8
%>
9
<%
10
Option explicit
11
' Good idea to set when using redirect
31 ghuddy 12
Response.Expires = 0   ' always load the page, dont store
29 jtweddle 13
 
14
'To enable the script timeout to 5 mins
15
Server.ScriptTimeout=300
16
%>
17
<!--#include file="common/config.asp"-->
18
<!--#include file="common/common_subs.asp"-->
19
<!--#include file="common/globals.asp"-->
20
<!--#include file="common/formating.asp"-->
21
<!--#include file="common/qstr.asp"-->
22
<!--#include file="common/common_dbedit.asp"-->
23
<%
24
'------------ ACCESS CONTROL ------------------
25
%>
26
<!--#include file="_access_control_general.asp"-->
27
<%
28
'------------ Variable Definition -------------
29
Dim rsQry
30
Dim parPv_id
31 ghuddy 31
Dim objSbomDetailsA, objSbomDetailsB
29 jtweddle 32
Dim objRelCollectorA, objRelCollectorB
33
Dim parSbomA, parSbomB
31 ghuddy 34
Dim retValCQIssues
35
Dim retValJIRAIssues
29 jtweddle 36
Dim topLevelId
3947 dpurdie 37
Dim DEVIiss
29 jtweddle 38
Dim pvIdList
39
Dim objIssueDetails
31 ghuddy 40
Dim cqIssues
41
Dim jiraIssues
29 jtweddle 42
Dim rsBomPackages
43
Dim rsPkgDeps
31 ghuddy 44
Dim multiPackagesEnabled
29 jtweddle 45
 
46
'------------ Constants Declaration -----------
47
'------------ Variable Init -------------------
48
parSbomA = Request("sbomA")
49
parSbomB = Request("sbomB")
50
Set objRelCollectorA = CreateObject("Scripting.Dictionary")
51
Set objRelCollectorB = CreateObject("Scripting.Dictionary")
52
Set objSbomDetailsA = CreateObject("Scripting.Dictionary")
53
Set objSbomDetailsB = CreateObject("Scripting.Dictionary")
54
Set objIssueDetails = CreateObject("Scripting.Dictionary")
31 ghuddy 55
Set cqIssues = Server.CreateObject("ADODB.Recordset")
56
Set jiraIssues = Server.CreateObject("ADODB.Recordset")
29 jtweddle 57
Set rsBomPackages = Server.CreateObject("ADODB.Recordset")
58
Set rsPkgDeps = Server.CreateObject("ADODB.Recordset")
59
'----------------------------------------------
60
%>
61
<%
62
'----------------------------------------------------------------------------------------------------------------------------------------
63
Sub GetFormDetails ( nSourceSBOM, ByRef tempObjRelCollector )
31 ghuddy 64
   Dim rsQry, query
29 jtweddle 65
 
31 ghuddy 66
   ' Exit if nSourceRtagId is empty
67
   If nSourceSBOM = "" Then Exit Sub
68
 
69
   OraDatabase.Parameters.Add "SBOM",    nSourceSBOM,      ORAPARM_INPUT, ORATYPE_NUMBER
70
 
71
   query = _
72
   " SELECT pr.PROJ_NAME ||' &gt; '|| br.BRANCH_NAME ||' &gt; '|| b.BOM_VERSION ||'.'||b.BOM_LIFECYCLE  AS LOCATION, "&_
73
   "        pr.PROJ_ID, b.BOM_ID, br.BRANCH_ID, b.IS_READONLY, b.RTAG_ID_FK"&_
74
   "  FROM BRANCHES br,"&_
75
   "        BOMS b,"&_
76
   "         DM_PROJECTS pr"&_
77
   " WHERE br.PROJ_ID = pr.PROJ_ID"&_
78
   "    AND b.BRANCH_ID = br.BRANCH_ID"&_
79
   "   AND b.BOM_ID = :SBOM"
80
 
81
   Set rsQry = OraDatabase.DbCreateDynaset( query, ORADYN_DEFAULT )
82
 
83
   OraDatabase.Parameters.Remove "SBOM"
84
 
85
   If rsQry.RecordCount > 0 Then
86
      tempObjRelCollector ("location") = rsQry("location")
87
      tempObjRelCollector ("official") = rsQry("IS_READONLY")
88
      tempObjRelCollector ("proj_id") = rsQry("proj_id")
89
      tempObjRelCollector ("branch_id") = rsQry("branch_id")
90
      tempObjRelCollector ("bom_id") = rsQry("bom_id")
91
      tempObjRelCollector ("rtag_id_fk") = rsQry("rtag_id_fk")
92
   Else
93
      Err.Raise 8, "Sub GetFormDetails in "& SCRIPT_NAME, "Empty record set returned. nSourceSBOM="& nSourceSBOM
94
   End If
95
 
96
   If tempObjRelCollector ("location") = "" Then
97
      tempObjRelCollector.Item ("location") = "N"
98
   End If
99
 
100
   rsQry.Close
101
   Set rsQry = Nothing
102
 
29 jtweddle 103
End Sub
104
'----------------------------------------------------------------------------------------------------------------------------------------
105
Sub GetPackageDetailsForIssue ( nIss_id, sPvIdList, tempIssDetails )
31 ghuddy 106
   Dim query
107
 
108
   query = " SELECT DISTINCT pkg.pkg_name, pv.pkg_version, pv.v_ext, pkg.pkg_id, pv.pv_id "&_
109
           " FROM package_versions pv, packages pkg, cq_issues iss "&_
110
           " 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 &")"
111
 
112
   OraDatabase.Parameters.Add "ISS_ID", nIss_id, ORAPARM_INPUT, ORATYPE_NUMBER
113
 
114
   Set tempIssDetails = OraDatabase.DbCreateDynaset( query, ORADYN_DEFAULT )
115
 
116
   OraDatabase.Parameters.Remove "ISS_ID"
117
 
118
   If tempIssDetails.RecordCount = 0 Then
119
      Err.Raise 8, "Sub GetPackageDetailsForIssue in "& SCRIPT_NAME, "Empty record set returned. nIss_id="& nIss_id
120
   End If
121
 
29 jtweddle 122
End Sub
123
'----------------------------------------------------------------------------------------------------------------------------------------
31 ghuddy 124
Sub GetPackageDetailsForJIRAIssue ( nIss_Key, sPvIdList, tempIssDetails )
125
   Dim query
126
 
127
   query = " SELECT DISTINCT pkg.pkg_name, pv.pkg_version, pv.v_ext, pkg.pkg_id, pv.pv_id "&_
128
           " FROM package_versions pv, packages pkg, jira_issues iss "&_
129
           " 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 &")"
130
 
131
   OraDatabase.Parameters.Add "ISS_ID", nIss_Key, ORAPARM_INPUT, ORATYPE_NUMBER
132
 
133
   Set tempIssDetails = OraDatabase.DbCreateDynaset( query, ORADYN_DEFAULT )
134
 
135
   OraDatabase.Parameters.Remove "ISS_ID"
136
 
137
   If tempIssDetails.RecordCount = 0 Then
138
      Err.Raise 8, "Sub GetPackageDetailsForJIRAIssue in "& SCRIPT_NAME, "Empty record set returned. nIss_Key="& nIss_Key
139
   End If
140
 
141
End Sub
142
'----------------------------------------------------------------------------------------------------------------------------------------
29 jtweddle 143
Function GetIssues( sPvIdList, oRsCqIssTemp )
31 ghuddy 144
   Dim sqlStrTemp, oRsTemp
29 jtweddle 145
 
31 ghuddy 146
   Set oRsTemp = OraDatabase.DbCreateDynaset("SELECT iss_db, iss_id FROM CQ_ISSUES WHERE pv_id IN ("& sPvIdList &")", cint(0))
29 jtweddle 147
 
31 ghuddy 148
   If oRsTemp.RecordCount <> 0 Then
149
 
150
      DEVIiss = "-1"
151
 
152
      While ((NOT oRsTemp.BOF) AND (NOT oRsTemp.EOF))
153
 
154
         If CInt(oRsTemp("iss_db")) = CInt(enumCLEARQUEST_DEVI_ID) Then
155
            DEVIiss = DEVIiss &","& oRsTemp("iss_id")
156
         End If
157
 
158
         oRsTemp.MoveNext
159
      WEnd
160
 
161
      sqlStrTemp = GetQuery ("cq_issues.sql")
162
      sqlStrTemp = Replace( sqlStrTemp, "/*enumCLEARQUEST_DEVI_ID*/", enumCLEARQUEST_DEVI_ID)
163
      sqlStrTemp = Replace( sqlStrTemp, "/*DEVIiss*/", DEVIiss)
164
 
165
      If oRsCqIssTemp.State = 1 Then
166
         oRsCqIssTemp.Close
167
      End If
168
 
169
      On Error Resume Next
170
      oRsCqIssTemp.ActiveConnection = CQ_conn
171
      oRsCqIssTemp.Source = sqlStrTemp
172
      oRsCqIssTemp.CursorType = 0
173
      oRsCqIssTemp.CursorLocation = 2
174
      oRsCqIssTemp.LockType = 3
175
      oRsCqIssTemp.Open()
176
 
177
      GetIssues = Err.Number
178
   Else
179
 
180
    GetIssues = -1
181
 
182
   End If
183
 
29 jtweddle 184
End Function
185
'----------------------------------------------------------------------------------------------------------------------------------------
4177 dpurdie 186
Function Get_JIRA_Issues ( NNpv_id, SSsql )
187
   Dim rsTemp, sqlstr, JIRAIss, retVal, joiner
188
 
189
   JIRAIss = ""
190
   joiner = ""
191
 
192
   sqlstr = "SELECT iss_key FROM JIRA_ISSUES WHERE pv_id="& NNpv_id
193
 
194
   Set rsTemp = OraDatabase.DbCreateDynaset( sqlstr, cint(0))
195
   retVal = rsTemp.RecordCount
196
 
197
    if retVal > 0 then
198
 
199
       ' Convert the Jira Issue of the form (PRJ-NNNN) into parts of an SQL expression
200
       ' that looks like (PRJ = match AND NNNN = match
201
       '
202
       While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))
203
          dim bits
204
          bits = Split( rsTemp("iss_key"), "-" ,2)
205
          JIRAIss = JIRAIss & joiner & "(P.pkey = '" & bits(0) & "' AND I.issuenum = " & bits(1) & ")"
206
          joiner = " OR "
207
          rsTemp.MoveNext
208
       WEnd
209
 
210
       ' If there is no resolution for an issue, then it will not be picked up by this query
211
       SSsql = "SELECT P.pkey AS project, I.issuenum AS iss_num, I.summary, ISS.pname AS Status,  IT.pname as issue_type, PR.pname as Priority, R.PNAME as RESOLUTION"&_
212
               " FROM jiraissue I, issuestatus ISS, issuetype IT, resolution R, priority PR, project P "&_
213
               " WHERE (" & JIRAIss & ")"&_
214
               " AND I.issuestatus = ISS.ID "&_
215
               " AND I.RESOLUTION = R.ID "&_
216
               " AND IT.ID = I.issuetype "&_
217
               " AND PR.ID = I.PRIORITY " &_
218
               " AND P.ID  = I.project"
219
 
220
   End If
221
   rsTemp.Close()
222
   Set rsTemp = nothing
223
 
224
      On Error Resume Next
225
      oRsJiraIssTemp.ActiveConnection = JIRA_conn
226
      oRsJiraIssTemp.Source = jira_query_string
227
      oRsJiraIssTemp.CursorType = 0
228
      oRsJiraIssTemp.CursorLocation = 3
229
      oRsJiraIssTemp.LockType = 3
230
      oRsJiraIssTemp.Open()
231
 
232
      Get_JIRA_Issues = Err.Number
233
 
234
   Get_JIRA_Issues = retVal
235
 
236
End Function
237
 
31 ghuddy 238
Function Get_JIRA_Issues ( sPvIdList, oRsJiraIssTemp )
239
 
240
   Dim rsTemp, JIRAIss
4177 dpurdie 241
   Dim jira_query_string, joiner
31 ghuddy 242
 
4177 dpurdie 243
   JIRAIss = ""
244
   joiner = ""
31 ghuddy 245
 
246
   Set rsTemp = OraDatabase.DbCreateDynaset( "SELECT DISTINCT iss_key FROM JIRA_ISSUES WHERE pv_id IN ("& sPvIdList & ")", cint(0))
247
   If rsTemp.RecordCount <> 0 Then
248
 
4177 dpurdie 249
        ' Convert the Jira Issue of the form (PRJ-NNNN) into parts of an SQL expression
250
        ' that looks like (PRJ = match AND NNNN = match
251
        '
252
        while ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))
253
            dim bits
254
            bits = Split( rsTemp("iss_key"), "-" ,2)
255
            JIRAIss = JIRAIss & joiner & "(P.pkey = '" & bits(0) & "' AND I.issuenum = " & bits(1) & ")"
256
            joiner = " OR "
257
            rsTemp.MoveNext
258
        WEnd
31 ghuddy 259
 
4177 dpurdie 260
        rsTemp.Close()
261
        Set rsTemp = nothing
31 ghuddy 262
 
263
      ' Form the JIRA database query string
4177 dpurdie 264
      jira_query_string = "SELECT P.pkey AS project, I.issuenum AS iss_num, I.summary, ISS.pname AS state,  IT.pname as IssueType, PR.pname as Priority, I.RESOLUTION "&_
265
                          " FROM  jiraissue I, issuestatus ISS, issuetype IT, priority PR, project P "&_
266
                          " WHERE (" & JIRAIss & ")"&_
31 ghuddy 267
                          " AND   I.issuestatus = ISS.ID "&_
268
                          " AND   IT.ID = I.issuetype "&_
4177 dpurdie 269
                          " AND   P.ID  = I.project"  &_
31 ghuddy 270
                          " AND   PR.ID = I.PRIORITY "
271
 
272
      If oRsJiraIssTemp.State = 1 Then
273
         oRsJiraIssTemp.Close()
274
      End If
275
 
276
      On Error Resume Next
277
      oRsJiraIssTemp.ActiveConnection = JIRA_conn
278
      oRsJiraIssTemp.Source = jira_query_string
279
      oRsJiraIssTemp.CursorType = 0
280
      oRsJiraIssTemp.CursorLocation = 3
281
      oRsJiraIssTemp.LockType = 3
282
      oRsJiraIssTemp.Open()
283
 
284
      Get_JIRA_Issues = Err.Number
285
   Else
286
 
287
    Get_JIRA_Issues = -1
288
 
289
   End If
290
 
291
End Function
292
'----------------------------------------------------------------------------------------------------------------------------------------
29 jtweddle 293
Sub GetPackageDependencies ( nPv_id_a, nPv_id_b, oRsTemp )
294
 
31 ghuddy 295
   OraDatabase.Parameters.Add "PV_ID_A", nPv_id_a, ORAPARM_INPUT, ORATYPE_NUMBER
296
   OraDatabase.Parameters.Add "PV_ID_B", nPv_id_b, ORAPARM_INPUT, ORATYPE_NUMBER
29 jtweddle 297
 
31 ghuddy 298
   Set oRsTemp = OraDatabase.DbCreateDynaset( GetQuery ("UniquePackageDependencies.sql"), ORADYN_DEFAULT )
299
 
300
   OraDatabase.Parameters.Remove "PV_ID_A"
301
   OraDatabase.Parameters.Remove "PV_ID_B"
302
 
29 jtweddle 303
End Sub
304
'----------------------------------------------------------------------------------------------------------------------------------------
305
Sub GetAllBomContents ( nSbom_id, oRsTemp )
306
 
31 ghuddy 307
   OraDatabase.Parameters.Add "SBOM_ID", nSbom_id,      ORAPARM_INPUT, ORATYPE_NUMBER
29 jtweddle 308
 
31 ghuddy 309
   Set oRsTemp = OraDatabase.DbCreateDynaset( GetQuery ("BomPackagesAndDeps.sql"), ORADYN_DEFAULT )
310
 
311
   OraDatabase.Parameters.Remove "SBOM_ID"
312
 
29 jtweddle 313
End Sub
314
'----------------------------------------------------------------------------------------------------------------------------------------
315
Sub GetBomPackages ( nSbomA, nSbomB, oRsTemp )
316
 
31 ghuddy 317
   OraDatabase.Parameters.Add "SBOM_A", nSbomA,      ORAPARM_INPUT, ORATYPE_NUMBER
318
   OraDatabase.Parameters.Add "SBOM_B", nSbomB,      ORAPARM_INPUT, ORATYPE_NUMBER
319
 
320
   Set oRsTemp = OraDatabase.DbCreateDynaset( GetQuery ("BomPackageDiff.sql"), ORADYN_DEFAULT )
321
 
322
   OraDatabase.Parameters.Remove "SBOM_A"
323
   OraDatabase.Parameters.Remove "SBOM_B"
324
 
29 jtweddle 325
End Sub
326
'----------------------------------------------------------------------------------------------------------------------------------------
327
 
328
 
329
 
330
%>
331
<%
332
'---------------------- Run Before Page ---------------------------
333
 
334
' Get release details
335
Call GetFormDetails ( parSbomA, objRelCollectorA )
336
Call GetFormDetails ( parSbomB, objRelCollectorB )
337
 
31 ghuddy 338
multiPackagesEnabled = FALSE
339
 
29 jtweddle 340
If parSbomA <> "" AND parSbomB <> "" Then
341
 
31 ghuddy 342
   If Request("form_btn_comp") = "Get Issues" Then
343
      Call OpenInWindow ( SCRIPT_NAME &"?sbomA="& parSbomA &"&sbomB="& parSbomB )
344
   End If
29 jtweddle 345
 
31 ghuddy 346
   Call   GetBomDetails   (parSbomA, objSbomDetailsA)
347
   Call   GetBomDetails   (parSbomB, objSbomDetailsB)
348
 
349
   objSbomDetailsA("bom_full_version") = objSbomDetailsA("bom_name")&"   "&   objSbomDetailsA("bom_version") &"."& objSbomDetailsA("bom_lifecycle")
350
   objSbomDetailsB("bom_full_version") = objSbomDetailsB("bom_name")&"   "&   objSbomDetailsB("bom_version") &"."& objSbomDetailsB("bom_lifecycle")
351
 
352
   ' Check for the submission of the "multiplepackageS" checkbox that enables multiple packages to be identified and rendered on the page
353
   ' for each issue, if applicable.
354
   If Request("multipackages") = "TRUE" Then
355
      multiPackagesEnabled = TRUE
356
   Else
357
      multiPackagesEnabled = FALSE
358
   End If
359
 
29 jtweddle 360
Else
31 ghuddy 361
   objSbomDetailsA("bom_full_version") = "Software Bill of Materials (SBOM)"
29 jtweddle 362
End If
363
 
364
'------------------------------------------------------------------
365
%>
366
<html>
31 ghuddy 367
   <head>
368
      <title>Deployment Manager - SBOM Issues Report</title>
369
      <meta http-equiv="Pragma" content="no-cache">
370
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
371
      <link rel="stylesheet" href="images/release_manager_style.css" type="text/css">
3947 dpurdie 372
      <link rel="stylesheet" href="scripts/deployment_manager.css" type="text/css">
31 ghuddy 373
      <script language="JavaScript" src="scripts/common.js"></script>
374
      <script language="JavaScript" src="scripts/remote_scripting.js"></script>
375
      <script language="JavaScript" type="text/javascript">
376
         <!--
29 jtweddle 377
 
31 ghuddy 378
         function RequestSBOMCombo( paramString, rowId )
379
         {
380
            var requestURL = 'RequestSBOMCombo.asp';
29 jtweddle 381
 
31 ghuddy 382
            // Set ajax divname
383
            ajaxdivname = rowId;
29 jtweddle 384
 
31 ghuddy 385
            //Append the name to search for to the requestURL
386
            var url = requestURL + paramString;
29 jtweddle 387
 
31 ghuddy 388
            rowId.options[0] = new Option('Loading...','');
389
            rowId.selectedIndex = 0;
29 jtweddle 390
 
31 ghuddy 391
            //Create the xmlHttp object to use in the request
392
            //stateChangeHandler will fire when the state has changed, i.e. data is received back
393
            xmlHttp = GetXmlHttpObject(stateComboChangeHandler);
29 jtweddle 394
 
31 ghuddy 395
            //Send the xmlHttp get to the specified url
396
            //This is non-blocking (asynchronous)
397
            xmlHttp_Get(xmlHttp, url);
398
         }
29 jtweddle 399
 
31 ghuddy 400
         function RequestReleaseCombos( paramString, rowIdA, rowIdB )
401
         {
402
            var requestURL = 'RequestReleaseCombo.asp';
403
            // First release combo box.
29 jtweddle 404
 
31 ghuddy 405
            // Set ajax divname
406
            ajaxdivname = rowIdA;
407
 
408
            //Append the name to search for to the requestURL
409
            var url = requestURL + paramString;
410
 
411
            rowIdA.options[0] = new Option('Loading...','');
412
            rowIdA.selectedIndex = 0;
413
 
414
            //Create the xmlHttp object to use in the request
415
            //stateChangeHandler will fire when the state has changed, i.e. data is received back
416
            xmlHttp = GetXmlHttpObject(stateComboChangeHandler);
417
 
418
            //Send the xmlHttp get to the specified url
419
            //This is blocking (synchronous)
420
            xmlHttp_Get_Synch(xmlHttp, url);
421
 
422
 
423
            // Second release combo box.
424
 
425
            ajaxdivname = rowIdB;
426
 
427
            rowIdB.options[0] = new Option('Loading...','');
428
            rowIdB.selectedIndex = 0;
429
 
430
            //Create the xmlHttp object to use in the request
431
            //stateChangeHandler will fire when the state has changed, i.e. data is received back
432
            xmlHttp = GetXmlHttpObject(stateComboChangeHandler);
433
 
434
            //Send the xmlHttp get to the specified url
435
            //This is blocking (synchronous)
436
            xmlHttp_Get_Synch(xmlHttp, url);
437
         }
438
 
439
         function openSbom( elementId )
440
         {
441
            var url = 'Bom_Home.asp?bom_id=';
442
            var bom_id = document.getElementById(elementId).value;
443
 
444
            window.open( url + bom_id );
445
         }
446
 
447
         function setLeftOffset( elementId )
448
         {
449
            if ( document.getElementById(elementId) )
450
            {
451
               var offset = (getWindowWidth() / 2) - (document.getElementById(elementId).clientWidth / 2);
452
               document.getElementById(elementId).style.left = offset;
453
            }
454
         }
455
 
456
         function removePrompt ( elementId )
457
         {
458
            var selectElement = document.getElementById(elementId);
459
 
460
            if ( /^\d+$/.test(selectElement.options[0].value) == false)
461
            {
462
               selectElement.options[0] = null;
463
            }
464
         }
465
 
466
         function clearSelectBox ( elementId )
467
         {
468
            var selectElement = document.getElementById(elementId);
469
 
470
            selectElement.options.length = 0;
471
         }
472
         //-->
473
      </script>
474
   </head>
475
   <body onresize="setLeftOffset('loader');">
3947 dpurdie 476
<body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0">
477
<!-- HEADER ++++++++++++++++ -->
478
<!--#include file="_header.asp"-->
479
<!-- +++++++++++++++++++++++ -->
480
<!-- BODY ---->
31 ghuddy 481
      <div align="center" class="report_header">
482
 
483
      <%=objSbomDetailsA("bom_full_version")%> Issues Report
484
 
485
      </div>
486
      <form name="FormName" method="post" action="<%=SCRIPT_NAME%>">
487
         <table width="100%"  border="0" cellspacing="10" cellpadding="0">
488
            <tr>
489
               <td align="left" class="body_col" colspan="2">Select SBOM To View</td>
490
            </tr>
491
            <tr>
492
               <td align="left">
493
                  <select name="proj" id="proj" class="form_item"
494
                     onchange="RequestReleaseCombos('?proj_id='+ this.value, FormName.rtagA, FormName.rtagB);removePrompt(this.id);clearSelectBox('sbomA');clearSelectBox('sbomB');">
495
                     <option value="">-- Select Project --</option>
496
                     <%
497
                     ' Currently set project to
498
                     'Dim temp_proj_id
499
                     'temp_proj_id = 142
500
 
501
                     OraDatabase.Parameters.Add "PROJ_ID",    objRelCollectorA("proj_id"),   ORAPARM_INPUT, ORATYPE_NUMBER
502
                     'OraDatabase.Parameters.Add "PROJ_ID",    temp_proj_id,   ORAPARM_INPUT, ORATYPE_NUMBER
503
 
504
                     Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ProjectsCombo.sql"), cint(0))
505
 
506
                     OraDatabase.Parameters.Remove "PROJ_ID"
507
 
508
                     While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
509
                        <option value="<%=rsQry("proj_id")%>" <%=rsQry("selected")%>><%=rsQry("proj_name")%></option>
510
                        <%rsQry.MoveNext
511
                     WEnd
512
 
513
                     rsQry.Close
514
                     Set rsQry = Nothing
515
                     %>
516
                  </select>
517
               </td>
518
               <td align="left" class="body_col">Select SBOM To Compare To</td>
519
            </tr>
520
            <tr>
521
               <td align="left" width="25%">
522
                  <select name="rtagA" id="rtagA" class="form_item" onchange="RequestSBOMCombo('?branch_id='+ this.value, FormName.sbomA);removePrompt(this.id);">
523
      <!--           <option value="">-- Select Branch --</option>           -->
524
                     <%
525
                     OraDatabase.Parameters.Add "PROJ_ID",    objRelCollectorA("proj_id"),   ORAPARM_INPUT,  ORATYPE_NUMBER
526
 
527
                     'OraDatabase.Parameters.Add "PROJ_ID",    temp_proj_id,   ORAPARM_INPUT,  ORATYPE_NUMBER
528
                     OraDatabase.Parameters.Add "BRANCH_ID",    objRelCollectorA("branch_id"),   ORAPARM_INPUT, ORATYPE_NUMBER
529
 
530
                     Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ReleasesCombo.sql"), cint(0))
531
 
532
                     OraDatabase.Parameters.Remove "PROJ_ID"
533
                     OraDatabase.Parameters.Remove "BRANCH_ID"
534
 
535
                     While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
536
                        <option value="<%=rsQry("branch_id")%>" <%=rsQry("selected")%>><%=rsQry("branch_name")%></option>
537
                        <%rsQry.MoveNext
538
                     WEnd
539
 
540
                     rsQry.Close
541
                     Set rsQry = Nothing
542
                     %>
543
                  </select>
544
               </td>
545
               <td align="left">
546
                  <select name="rtagB" id="rtagB" class="form_item" onchange="RequestSBOMCombo('?branch_id='+ this.value, FormName.sbomB);removePrompt(this.id);">
547
      <!--           <option value="">-- Select Branch --</option>           -->
548
                     <%
549
                     OraDatabase.Parameters.Add "PROJ_ID",    objRelCollectorB("proj_id"),   ORAPARM_INPUT,  ORATYPE_NUMBER
550
 
551
                     'OraDatabase.Parameters.Add "PROJ_ID",    temp_proj_id,   ORAPARM_INPUT,  ORATYPE_NUMBER
552
                     OraDatabase.Parameters.Add "BRANCH_ID",    objRelCollectorB("branch_id"),   ORAPARM_INPUT, ORATYPE_NUMBER
553
 
554
                     Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ReleasesCombo.sql"), cint(0))
555
 
556
                     OraDatabase.Parameters.Remove "PROJ_ID"
557
                     OraDatabase.Parameters.Remove "BRANCH_ID"
558
 
559
                     While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
560
                        <option value="<%=rsQry("branch_id")%>" <%=rsQry("selected")%>><%=rsQry("branch_name")%></option>
561
                        <%rsQry.MoveNext
562
                     WEnd
563
 
564
                     rsQry.Close
565
                     Set rsQry = Nothing
566
                     %>
567
                  </select>
568
               </td>
569
            </tr>
570
            <tr>
571
               <td align="left" width="25%">
572
                  <select name="sbomA" id="sbomA" class="form_item">
573
                     <%
574
                     OraDatabase.Parameters.Add "BOM_ID",    objRelCollectorA("bom_id"),   ORAPARM_INPUT,  ORATYPE_NUMBER
575
                     OraDatabase.Parameters.Add "BRANCH_ID",    objRelCollectorA("branch_id"),   ORAPARM_INPUT, ORATYPE_NUMBER
576
 
577
                     Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("SBOMCombo.sql"), cint(0))
578
 
579
                     OraDatabase.Parameters.Remove "BOM_ID"
580
                     OraDatabase.Parameters.Remove "BRANCH_ID"
581
 
582
                     While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
583
                        <option value="<%=rsQry("bom_id")%>" <%=rsQry("selected")%>><%=rsQry("version")%></option>
584
                        <%rsQry.MoveNext
585
                     WEnd
586
 
587
                     rsQry.Close
588
                     Set rsQry = Nothing
589
                     %>
590
                  </select>
591
               </td>
592
               <td align="left">
593
                  <select name="sbomB" id="sbomB" class="form_item">
594
                     <%
595
                     OraDatabase.Parameters.Add "BOM_ID",    objRelCollectorB("bom_id"),   ORAPARM_INPUT,  ORATYPE_NUMBER
596
                     OraDatabase.Parameters.Add "BRANCH_ID",    objRelCollectorB("branch_id"),   ORAPARM_INPUT, ORATYPE_NUMBER
597
 
598
                     Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("SBOMCombo.sql"), cint(0))
599
 
600
                     OraDatabase.Parameters.Remove "BOM_ID"
601
                     OraDatabase.Parameters.Remove "BRANCH_ID"
602
 
603
                     While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
604
                        <option value="<%=rsQry("bom_id")%>" <%=rsQry("selected")%>><%=rsQry("version")%></option>
605
                        <%rsQry.MoveNext
606
                     WEnd
607
 
608
                     rsQry.Close
609
                     Set rsQry = Nothing
610
                     %>
611
                  </select>
612
               </td>
613
            </tr>
614
            <%If parSbomA <> "" OR parSbomB <> "" Then%>
615
               <tr>
616
                  <td align="left" width="25%">
617
                     <%If parSbomA <> "" Then%>
618
                     <a href="javascript:;" onclick="openSbom('sbomA')" class="body_txt_drk">Go To SBOM A &raquo;</a>
619
                     <%End If%>
620
                  </td>
621
                  <td align="left">
622
                     <%If parSbomB <> "" Then%>
623
                     <a href="javascript:;" onclick="openSbom('sbomB')" class="body_txt_drk">Go To SBOM B &raquo;</a>
624
                     <%End If%>
625
                  </td>
626
               </tr>
627
            <%End If%>
628
            <tr>
629
               <td colspan="2">
630
                  <input class="form_btn_comp" name="form_btn_comp" type="submit" style="margin-right: 5px;" value="Get Issues" name="btn"/>
631
               </td>
632
            </tr>
633
         </table>
634
      </form>
635
 
636
      <!-- FORM holding a checkbox that allows user to modify the package vs issue renderering from one-per-issue to many-per-issue -->
637
      <form name="FormNameMultiplePackages" method="post" action='<%=SCRIPT_NAME & "?sbomA=" & parSbomA & "&sbomB=" & parSbomB%>'>
638
         <%If parSbomA <> "" OR parSbomB <> "" Then%>
639
            <table width="50%"  border="0" cellspacing="10" cellpadding="0">
640
               <tr>
641
                  <%If multiPackagesEnabled Then%>
642
                     <td width="1%" ><input name="multipackages" value="TRUE" type="checkbox" onclick="submit(); return false;" checked></td>
643
                  <%Else%>
644
                     <td width="1%" ><input name="multipackages" value="TRUE" type="checkbox" onclick="submit(); return false;"></td>
645
                  <%End If%>
646
                  <td align="left" class="body_col">Show multiple package/issue associations.</td>
647
               </tr>
648
            </table>
649
         <%End If%>
650
      </form>
651
 
652
      <%
653
      If parSbomA = "" OR parSbomB = "" Then%>
654
         <div align="center" class="report_msg">Select both SBOMs to compare.</div>
655
      <%ElseIf parSbomA = parSbomB Then%>
656
         <div align="center" class="report_msg">Select two different SBOMs to compare.</div>
657
      <%Else%>
658
         <img src="images/ajax-loader.gif" width="100px" height="100px" id="loader" name="loader" style="position: absolute; z-index: 100; display: block; top: 110px;" onload="setLeftOffset(this.id);">
659
         <div align="center" class="report_msg" id="report_heading">Issues found in BOM <%=objSbomDetailsA("bom_version") &"."& objSbomDetailsA("bom_lifecycle")%> but not in SBOM <%=objSbomDetailsB("bom_version") &"."& objSbomDetailsB("bom_lifecycle")%></div>
660
         <br>
661
         <%
662
         Dim issueCounter
663
 
664
         issueCounter = 0
665
 
666
         Call GetBomPackages( parSbomA, parSbomB, rsBomPackages )
667
 
668
         If rsBomPackages.RecordCount > 0 Then
669
 
670
            While (NOT rsBomPackages.BOF) AND (NOT rsBomPackages.EOF)
671
 
672
               pvIdList = rsBomPackages("pv_id")
673
 
674
               Call GetPackageDependencies( rsBomPackages("pv_id"), rsBomPackages("prev_pv_id"), rsPkgDeps )
675
 
676
               While (NOT rsPkgDeps.BOF) AND (NOT rsPkgDeps.EOF)
677
 
678
                  pvIdList = pvIdList & "," & rsPkgDeps("dpv_id")
679
 
680
                  rsPkgDeps.MoveNext
681
               WEnd
682
 
683
               ' Acquire all of the issues for the package now so we can make a decision on whether to display the field set + legend + issue content
684
               ' for this BOM package. The "get issues" functions will return -1 if no records are found, and 0 if no error and records present.
685
               retValCQIssues = GetIssues( pvIdList, cqIssues )
686
 
687
               retValJIRAIssues = Get_JIRA_Issues( pvIdList, jiraIssues )
688
 
689
               If retValCQIssues = 0 OR retValJIRAIssues = 0 Then%>
690
                  <fieldset>
691
                     <legend style="padding: 0px 4px 3px 4px;" >
692
                        <a href="javascript:;" onclick="MM_openBrWindow('../release_manager/_wform_versions_history_release_notes.asp?OLDpv_id=<%=rsBomPackages("pv_id")%>&pkg_id=<%=rsBomPackages("pkg_id")%>&FLpkg_version=*<%=rsBomPackages("v_ext")%>&FLuser_name=*&rfile=<%=SCRIPT_NAME%>&pv_id=<%=rsBomPackages("pv_id")%>&#ANC_<%=rsBomPackages("pv_id")%>','History','resizable=yes,width=850,height='+ ( screen.height - 100 )  );" class="report_sub_header"><%=rsBomPackages("pkg_name")%>&nbsp;<%=rsBomPackages("pkg_version")%></a>
693
                     </legend>
694
 
695
                     <%If retValCQIssues = 0 Then
696
 
697
                        Dim firstPackageRow
698
 
699
                        issueCounter = issueCounter + 1
700
                        %>
701
                        <table width="100%" border="0" cellspacing="2" cellpadding="3">
702
                           <tr>
703
                              <td background="images/bg_form_lightbluedark.gif" nowrap width="70px" class="form_field">Issue Id</td>
704
                              <td background="images/bg_form_lightbluedark.gif" nowrap width="65%" class="form_field">CLEARQUEST Issue Title</td>
705
                              <td background="images/bg_form_lightbluedark.gif" nowrap width="80px" class="form_field">Status</td>
706
                              <td background="images/bg_form_lightbluedark.gif" nowrap class="form_field">Package(s)</td>
707
                           </tr>
708
 
709
                           <%
710
                           While (NOT cqIssues.BOF) AND (NOT cqIssues.EOF)
711
 
712
                              Call GetPackageDetailsForIssue( cqIssues("iss_id"), pvIdList, objIssueDetails )
713
 
714
                              firstPackageRow = TRUE
715
                              Do While (NOT objIssueDetails.BOF) AND (NOT objIssueDetails.EOF)%>
716
                                 <tr>
717
                                    <%If firstPackageRow Then%>
718
                                       <%firstPackageRow = FALSE%>
719
 
720
                                       <td background="images/bg_form_lightgray.gif" valign="top" class="form_item"><%=cqIssues("iss_num")%></td>
721
                                       <td background="images/bg_form_lightgray.gif" valign="top" class="form_item"><%=cqIssues("summary")%></td>
722
                                       <td nowrap background="images/bg_form_lightgray.gif" valign="top" class="form_item"><%=cqIssues("status")%></td>
723
                                    <%Else%>
724
                                       <td background="images/bg_form_lightgray.gif" valign="top" class="form_item"></td>
725
                                       <td background="images/bg_form_lightgray.gif" valign="top" class="form_item"></td>
726
                                       <td background="images/bg_form_lightgray.gif" valign="top" class="form_item"></td>
727
                                    <%End If%>
728
 
729
                                    <td nowrap background="images/bg_form_lightgray.gif" valign="top" class="form_item">
730
                                       <a href="javascript:;" onclick="MM_openBrWindow('../release_manager/_wform_versions_history_release_notes.asp?OLDpv_id=<%=objIssueDetails("pv_id")%>&pkg_id=<%=objIssueDetails("pkg_id")%>&FLpkg_version=*<%=objIssueDetails("v_ext")%>&FLuser_name=*&rfile=<%=SCRIPT_NAME%>&pv_id=<%=objIssueDetails("pv_id")%>&#ANC_<%=objIssueDetails("pv_id")%>','History','resizable=yes,width=850,height='+ ( screen.height - 100 )  );" class="report_link">
731
                                          <%Response.Write(objIssueDetails("pkg_name") &" "& objIssueDetails("pkg_version"))%>
732
                                       </a>
733
                                    </td>
734
                                 </tr>
735
                                 <%
736
                                 objIssueDetails.MoveNext
737
                                 If multiPackagesEnabled = FALSE Then Exit Do
738
                              Loop
739
                              cqIssues.MoveNext
740
                           WEnd
741
                           %>
742
                        </table>
743
                     <%End If
744
 
745
                     If retValJIRAIssues = 0 Then
746
 
747
                        issueCounter = issueCounter + 1
748
                        %>
749
                        <table width="100%" border="0" cellspacing="2" cellpadding="3">
750
                           <tr>
751
                              <td background="images/bg_form_lightbluedark.gif" nowrap width="70px" class="form_field">Issue Id</td>
752
                              <td background="images/bg_form_lightbluedark.gif" nowrap width="55%" class="form_field">JIRA Issue Summary</td>
753
                              <td background="images/bg_form_lightbluedark.gif" nowrap width="10%" class="form_field">Issue&nbsp;Type&nbsp;</td>
754
                              <td background="images/bg_form_lightbluedark.gif" nowrap width="80px" class="form_field">Status</td>
755
                              <td background="images/bg_form_lightbluedark.gif" nowrap class="form_field">Package(s)</td>
756
                           </tr>
757
 
758
                           <%
759
                           While (NOT jiraIssues.BOF) AND (NOT jiraIssues.EOF)
760
 
4177 dpurdie 761
                              Call GetPackageDetailsForJIRAIssue( jiraIssues("project") &"-"& jiraIssues("iss_num"), pvIdList, objIssueDetails )
31 ghuddy 762
 
763
                              firstPackageRow = TRUE
764
                              Do While (NOT objIssueDetails.BOF) AND (NOT objIssueDetails.EOF)%>
765
                                 <tr>
766
                                    <%If firstPackageRow Then%>
767
                                       <%firstPackageRow = FALSE%>
4177 dpurdie 768
                                       <td background="images/bg_form_lightgray.gif" valign="top" class="form_item"><%=jiraIssues("project") &"-"&jiraIssues("iss_num")%></td>
31 ghuddy 769
                                       <td background="images/bg_form_lightgray.gif" valign="top" class="form_item"><%=jiraIssues("summary")%></td>
770
                                       <td nowrap background="images/bg_form_lightgray.gif" valign="top" class="form_item"><%=jiraIssues("IssueType")%></td>
771
                                       <td nowrap background="images/bg_form_lightgray.gif" valign="top" class="form_item"><%=jiraIssues("state")%></td>
772
                                    <%Else%>
773
                                       <td background="images/bg_form_lightgray.gif" valign="top" class="form_item"></td>
774
                                       <td background="images/bg_form_lightgray.gif" valign="top" class="form_item"></td>
775
                                       <td background="images/bg_form_lightgray.gif" valign="top" class="form_item"></td>
776
                                       <td background="images/bg_form_lightgray.gif" valign="top" class="form_item"></td>
777
                                    <%End If%>
778
 
779
                                    <td nowrap background="images/bg_form_lightgray.gif" valign="top" class="form_item">
780
                                       <a href="javascript:;" onclick="MM_openBrWindow('../release_manager/_wform_versions_history_release_notes.asp?OLDpv_id=<%=objIssueDetails("pv_id")%>&pkg_id=<%=objIssueDetails("pkg_id")%>&FLpkg_version=*<%=objIssueDetails("v_ext")%>&FLuser_name=*&rfile=<%=SCRIPT_NAME%>&pv_id=<%=objIssueDetails("pv_id")%>&#ANC_<%=objIssueDetails("pv_id")%>','History','resizable=yes,width=850,height='+ ( screen.height - 100 )  );" class="report_link">
781
                                          <%Response.Write(objIssueDetails("pkg_name") &" "& objIssueDetails("pkg_version"))%>
782
                                       </a>
783
                                    </td>
784
                                 </tr>
785
                                 <%
786
                                 objIssueDetails.MoveNext
787
                                 If multiPackagesEnabled = FALSE Then Exit Do
788
                              Loop
789
                              jiraIssues.MoveNext
790
                           WEnd
791
                           %>
792
                        </table>
793
                     <%End If%>
794
                  </fieldset>
795
                  <br>
796
               <%End If
797
               rsBomPackages.MoveNext
798
            WEnd
799
         End If
800
 
801
         If issueCounter = 0 Then
802
         %>
803
            <div align="center" class="report_sub_header">No issues found</div>
804
         <%
805
         End If
806
         %>
807
         <script>
808
         <!--
809
            document.getElementById("loader").style.display = "none";
810
         //-->
811
         </script>
812
         <%
813
 
814
         ' Clean up objects before quitting
815
         On Error Resume Next
816
         rsBomPackages.Close
817
         rsPkgDeps.Close
818
         cqIssues.Close
819
         jiraIssues.Close
820
 
821
         Set objRelCollectorA = Nothing
822
         Set objRelCollectorB = Nothing
823
         Set objSbomDetailsA = Nothing
824
         Set objSbomDetailsB = Nothing
825
 
826
         Set rsBomPackages = Nothing
827
         Set rsPkgDeps = Nothing
828
         Set cqIssues = Nothing
829
         Set jiraIssues = Nothing
830
 
831
      End If%>
3947 dpurdie 832
<!-- FOOTER -->
833
<!--#include file="_footer.asp"-->
31 ghuddy 834
   </body>
29 jtweddle 835
</html>