Subversion Repositories DevTools

Rev

Rev 5355 | Rev 5955 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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