Subversion Repositories DevTools

Rev

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