Subversion Repositories DevTools

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
119 ghuddy 1
<%@LANGUAGE="VBSCRIPT"%>
2
<%
3
'=====================================================
4
'|                                                   |
4028 dpurdie 5
'|                              DIFF                 |
119 ghuddy 6
'|                                                   |
7
'=====================================================
8
%>
9
<%
10
Option explicit
11
' Good idea to set when using redirect
4028 dpurdie 12
Response.Expires = 0    ' always load the page, dont store
119 ghuddy 13
%>
14
<%
15
'To enable the script timeout to 20 mins
16
Server.ScriptTimeout=1200
17
%>
18
<!--#include file="common/conf.asp"-->
19
<!--#include file="common/globals.asp"-->
20
<!--#include file="common/formating.asp"-->
21
<!--#include file="common/qstr.asp"-->
22
<!--#include file="common/common_subs.asp"-->
23
<!--#include file="common/common_dbedit.asp"-->
24
<!--#include file="common/_form_window_common.asp"-->
25
<!--#include file="common/_rtree_common.asp"-->
26
<%
27
'------------ ACCESS CONTROL ------------------
28
%>
29
<!--#include file="_access_control_login.asp"-->
30
<!--#include file="_access_control_general.asp"-->
4254 dpurdie 31
<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="class/classaspJSON.vbs"></SCRIPT>
32
<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="common/base64encode.vbs"></SCRIPT> 
33
<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="common/jiraIssues.vbs"></SCRIPT> 
119 ghuddy 34
<%
35
'------------ Variable Definition -------------
36
Dim rsQry
37
Dim objRelCollectorA
38
Dim objRelCollectorB
39
Dim parRtagA
40
Dim parRtagB
41
Dim dDiffFilter
42
Dim colorA, colorB, ChangeTypeIcon
43
Dim btnMerge, btnRemove
44
Dim rowId
45
Dim email
4028 dpurdie 46
Dim genReport
119 ghuddy 47
Dim FSO
48
Dim NewTextFile
49
Dim pkgA, pkgB, pkgname, delimiter, rsQryA, rsQryB, rsQryCommentsA, rsQryCommentsB, sqlstrA, counterA, sqlstrB, counterB
3975 dpurdie 50
Dim SSsql, retVal, rsCQ, DEVIiss
4028 dpurdie 51
Dim a, b, c, d, pkgversion, errormsg, ChangeASource, ChangeAUpdate, ChangeBSource, ChangeBUpdate, pvCollectionA, pvCollectionB
52
Dim source_change, scFlag
119 ghuddy 53
Dim changeType
123 ghuddy 54
Dim pendingAdditions
119 ghuddy 55
 
56
'------------ Constants Declaration -----------
57
Const LIMG_UPDATED = "<img src='images/i_updated.gif' width='11' height='11' border='0' hspace='5' align='absmiddle' title='Updated'>"
58
Const LIMG_RIPPLED = "<img src='images/i_rippled.gif' width='11' height='11' border='0' hspace='5' align='absmiddle' title='Rippled'>"
59
Const LIMG_ADDED = "<img src='images/i_added.gif' width='11' height='11' border='0' hspace='5' align='absmiddle' title='Added'>"
60
Const LIMG_REMOVED = "<img src='images/i_removed.gif' width='11' height='11' border='0' hspace='5' align='absmiddle' title='Removed'>"
61
Const LIMG_FILTER_ON = "<img src='images/i_data_table.gif' border='0' align='absmiddle' hspace='0' title='Filter in use.'>"
62
Const LIMG_FILTER_OFF = "<img src='images/i_data_table_off.gif' border='0' align='absmiddle' hspace='0' title='Filter not in use.'>"
63
Const LIMG_DROP_DOWN_ARROW = "<img src='images/i_drop_down_arrow.gif' width='5' height='15' hspace='1' border='0' align='absmiddle'>"
64
Const LCOLOR_NOT_CHANGED = "#F5F5F5"
65
Const LCOLOR_CHANGED = "#d2f7c9"
66
Const LCOLOR_RIPPLED = "#D8F8F8"
67
Const LCOLOR_BLANK = "#FFFFFF"
68
Const LIMG_MERGE = "<img src='images/bt_move_all_right.gif' title='Click to merge.' border='0'>"
69
Const LIMG_MERGE_WARN = "<img src='images/bt_move_warn_right.gif' title='Right hand side version is newer.' border='0'>"
70
Const LIMG_REMOVE = "<img src='images/bt_remove.gif' title='Remove this version from release.' border='0'>"
71
Const LIMG_UNDO = "<img src='images/bt_undo.gif' title='Undo merge/remove.' border='0'>"
72
'------------ Variable Init -------------------
73
Set rsCQ = Server.CreateObject("ADODB.Recordset")
74
parRtagA = Request("rtagA")
75
parRtagB = Request("rtagB")
76
Set objRelCollectorA = CreateObject("Scripting.Dictionary")
77
Set objRelCollectorB = CreateObject("Scripting.Dictionary")
78
Set dDiffFilter = CreateObject("Scripting.Dictionary")
123 ghuddy 79
Set pendingAdditions = CreateObject("Scripting.Dictionary")
119 ghuddy 80
'----------------------------------------------
81
If Request("btn") = "Mail Me Report" Then
4028 dpurdie 82
    email = true
83
    genReport = true
119 ghuddy 84
End If
4028 dpurdie 85
If Request("btn") = "Show Me Report" Then
86
    genReport = true
87
End If
119 ghuddy 88
'--------------------------------------------------------------------------------------------------------------------------
89
Sub GetDiffFilterValues ( outDepFilter )
4028 dpurdie 90
    Dim FilterVal, aFilterValues
119 ghuddy 91
 
4028 dpurdie 92
    If Request.Cookies(enum_RELMGR_COOKIE_DOMAIN)(COOKIE_HIDE_DIFF_FILTER) <> "" Then
93
        aFilterValues = Split( Replace( Request.Cookies(enum_RELMGR_COOKIE_DOMAIN)(COOKIE_HIDE_DIFF_FILTER), " ", ""), ",")
119 ghuddy 94
 
4028 dpurdie 95
        For Each FilterVal In aFilterValues
96
            outDepFilter.Item (CStr( FilterVal )) = ""
97
        Next
119 ghuddy 98
 
4028 dpurdie 99
    End If
119 ghuddy 100
 
101
End Sub
102
'--------------------------------------------------------------------------------------------------------------------------
4028 dpurdie 103
Sub Javascript()
104
    NewTextFile.WriteLine("<script language=""JavaScript"" type=""text/javascript"">")
105
    NewTextFile.WriteLine("function MM_findObj(n, d) { //v4.0")
106
    NewTextFile.WriteLine("  var p,i,x;")
107
    NewTextFile.WriteLine("  if(!d) d=document; ")
108
    NewTextFile.WriteLine("  if((p=n.indexOf(""?""))>0&&parent.frames.length) {")
109
    NewTextFile.WriteLine("  	d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);")
110
    NewTextFile.WriteLine("  }")
111
    NewTextFile.WriteLine("  if(!(x=d[n])&&d.all) x=d.all[n]; ")
112
    NewTextFile.WriteLine("  for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];")
113
    NewTextFile.WriteLine("  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);")
114
    NewTextFile.WriteLine("  if(!x && document.getElementById) x=document.getElementById(n); ")
115
    NewTextFile.WriteLine("  return x;")
116
    NewTextFile.WriteLine("}")
117
 
118
    NewTextFile.WriteLine("function toggleSPAN(x) {")
119
    NewTextFile.WriteLine("    var el = MM_findObj('spanPkgInfo' + x);")
120
    NewTextFile.WriteLine("    if (el.style.display != ""block"") {")
121
    NewTextFile.WriteLine("        el.style.display = ""block"";")
122
    NewTextFile.WriteLine("    } else {")
123
    NewTextFile.WriteLine("        el.style.display = ""none"";")
124
    NewTextFile.WriteLine("    }")
125
    NewTextFile.WriteLine("}")
126
 
127
    NewTextFile.WriteLine("function MM_getElementsByClassName(cn) {")
128
    NewTextFile.WriteLine("    var allT=document.getElementsByTagName('*'), allCN=[], i=0, a;")
129
    NewTextFile.WriteLine("    while(a=allT[i++]) {")
130
    NewTextFile.WriteLine("        a.className==cn ? allCN[allCN.length]=a : null;")
131
    NewTextFile.WriteLine("    }")
132
    NewTextFile.WriteLine("    return allCN")
133
    NewTextFile.WriteLine("}")
134
 
135
    NewTextFile.WriteLine("    function MM_toggleAll(cn, show){")
136
    NewTextFile.WriteLine("        var allEl = MM_getElementsByClassName(cn);")
137
    NewTextFile.WriteLine("        for (var ii=0; ii<allEl.length;ii++){")
138
    NewTextFile.WriteLine("            var el = allEl[ii];")
139
    NewTextFile.WriteLine("            if(show) {")
140
    NewTextFile.WriteLine("                el.style.display = ""block"";")
141
    NewTextFile.WriteLine("            } else {")
142
    NewTextFile.WriteLine("                el.style.display = ""none"";")
143
    NewTextFile.WriteLine("            }")
144
    NewTextFile.WriteLine("        }")
145
    NewTextFile.WriteLine("    }")
146
 
147
    NewTextFile.WriteLine("</script>")
148
End Sub
149
'--------------------------------------------------------------------------------------------------------------------------
119 ghuddy 150
Sub GetFixedIssues(pv_id)
4028 dpurdie 151
    '
152
    ' Clearcase issues
153
    '
154
    Set sqlstrA = OraDatabase.DbCreateDynaset("SELECT iss_db, iss_id, iss_state, notes FROM CQ_ISSUES WHERE pv_id="& pv_id &"  AND iss_state = "& enumISSUES_STATE_FIXED, cint(0))
119 ghuddy 155
 
4028 dpurdie 156
    If sqlstrA.RecordCount <> 0 Then
157
        NewTextFile.WriteLine()
158
        NewTextFile.WriteLine("<blockquote><blockquote>Fixed ClearQuest Issues:</blockquote></blockquote>")
159
        NewTextFile.WriteLine("<blockquote><blockquote><blockquote><table class='fixed_issues' width='100%'>")
160
        NewTextFile.WriteLine("<tr>")
161
        NewTextFile.WriteLine("<td width='10%' class='form_field'>Issue Id</td>")
162
        NewTextFile.WriteLine("<td width='55%' class='form_field'>Summary</td>")
163
        NewTextFile.WriteLine("<td width='10%' class='form_field'>Issue Type</td>")
164
        NewTextFile.WriteLine("<td width='15%' class='form_field'>Priority</td>")
165
        NewTextFile.WriteLine("<td width='10%' class='form_field'>Status</td>")
166
        NewTextFile.WriteLine("</tr>")
119 ghuddy 167
 
4028 dpurdie 168
        For counterA=1 to sqlstrA.RecordCount
169
            DEVIiss = "-1"
119 ghuddy 170
 
4028 dpurdie 171
            If CInt(sqlstrA("iss_db")) = CInt(enumCLEARQUEST_DEVI_ID) Then
172
                DEVIiss = DEVIiss &","& sqlstrA("iss_id")
173
            End If
119 ghuddy 174
 
4028 dpurdie 175
            SSsql = ReadFile( rootPath & "queries\cq_issues.sql" )
176
            SSsql = Replace( SSsql, "/*enumCLEARQUEST_DEVI_ID*/", enumCLEARQUEST_DEVI_ID)
177
            SSsql = Replace( SSsql, "/*DEVIiss*/", DEVIiss)
178
            retVal = Get_CQ_Issues ( SSsql, rsCQ )
119 ghuddy 179
 
4028 dpurdie 180
            NewTextFile.WriteLine("<tr>")
181
            NewTextFile.WriteLine("<td nowrap class='form_item'>"&rsCQ("iss_num")&"</td>")
119 ghuddy 182
 
4028 dpurdie 183
            NewTextFile.WriteLine("<td class='form_item'>"&NewLine_To_BR ( To_HTML ( rsCQ("summary") ) )&"</td>")
184
            NewTextFile.WriteLine("<td class='form_item'>"&rsCQ("issue_type")&"</td>")
185
            NewTextFile.WriteLine("<td class='form_item'>"&rsCQ("priority")&"</td>")
186
            NewTextFile.WriteLine("<td class='form_item'>"&rsCQ("Status")&"</td>")
187
            NewTextFile.WriteLine("</tr>")
119 ghuddy 188
 
4028 dpurdie 189
            sqlstrA.MoveNext
190
        Next
191
        sqlstrA.Close()
192
        NewTextFile.WriteLine( "                        </table></blockquote></blockquote></blockquote> 		")
193
    End If
194
 
195
    ' Must also handle Jira Issues
4254 dpurdie 196
    On Error Resume Next
197
 
198
    Dim issueInfo, el, key
199
    Set issueInfo = CreateObject( "Scripting.Dictionary" )
200
    Call getJiraIssueDetails(pv_id, issueInfo, 1)
201
    If issueInfo.Count > 0 Then
202
        ' Table Header
203
        NewTextFile.WriteLine()
204
        NewTextFile.WriteLine("<blockquote><blockquote>Jira Issues:</blockquote></blockquote>")
205
        NewTextFile.WriteLine("<blockquote><blockquote><blockquote><table class='fixed_issues' width='100%'>")
206
        NewTextFile.WriteLine("<tr>")
207
        NewTextFile.WriteLine("<td width='8%' class='form_field'>Issue Id</td>")
208
        NewTextFile.WriteLine("<td width='58%' class='form_field'>Summary</td>")
209
        NewTextFile.WriteLine("<td width='8%' class='form_field'>Issue Type</td>")
210
        NewTextFile.WriteLine("<td width='10%' class='form_field'>Priority</td>")
211
        NewTextFile.WriteLine("<td width='8%' class='form_field'>Status</td>")
212
        NewTextFile.WriteLine("<td width='8%' class='form_field'>Resolution</td>")
213
        NewTextFile.WriteLine("</tr>")
214
 
215
        ' Table Body
216
        For Each key In issueInfo
217
            Set el = issueInfo.item(key)
218
 
4028 dpurdie 219
            NewTextFile.WriteLine("<tr>")
4254 dpurdie 220
            NewTextFile.WriteLine("<td nowrap class='form_item'>"&key&"</td>")
221
            NewTextFile.WriteLine("<td class='form_item'>"&NewLine_To_BR ( To_HTML ( el.item("summary") ) )&"</td>")
222
            NewTextFile.WriteLine("<td class='form_item'>"&el.item("issuetype")&"</td>")
223
            NewTextFile.WriteLine("<td class='form_item'>"&el.item("priority")&"</td>")
224
            NewTextFile.WriteLine("<td class='form_item'>"&el.item("status")&"</td>")
225
            NewTextFile.WriteLine("<td class='form_item'>"&el.item("resolution")&"</td>")
4028 dpurdie 226
            NewTextFile.WriteLine("</tr>")
4254 dpurdie 227
        Next
228
        NewTextFile.WriteLine( "                        </table></blockquote></blockquote></blockquote> 		")
229
    Set issueInfo = nothing
4028 dpurdie 230
    End If
119 ghuddy 231
End Sub
232
'--------------------------------------------------------------------------------------------------------------------------
233
Sub LastPvIdA(a)
234
 
4028 dpurdie 235
    Dim qryA
236
    Set qryA = OraDatabase.DbCreateDynaset("SELECT LAST_PV_ID FROM PACKAGE_VERSIONS WHERE PV_ID="&a, cint(0))
119 ghuddy 237
 
4028 dpurdie 238
    'If a <> qryA("last_pv_id") Then
239
        a = qryA("last_pv_id")
240
    'Else
241
    '    errormsg = true
242
    'End If
119 ghuddy 243
 
4028 dpurdie 244
    If pvCollectionA.Exists(CStr(a)) Then
245
        errormsg = true
246
        Exit Sub
247
    End If
119 ghuddy 248
 
4028 dpurdie 249
    qryA.Close()
119 ghuddy 250
End Sub
251
'--------------------------------------------------------------------------------------------------------------------------
252
Sub LastPvIdB(b)
4028 dpurdie 253
    Dim qryB
254
    Set qryB = OraDatabase.DbCreateDynaset("SELECT LAST_PV_ID FROM PACKAGE_VERSIONS WHERE PV_ID="&b, cint(0))
119 ghuddy 255
 
4028 dpurdie 256
    'If b <> qryB("last_pv_id") Then
257
        b = qryB("last_pv_id")
258
    'Else
259
    '    errormsg = true
260
    'End If
119 ghuddy 261
 
4028 dpurdie 262
    If pvCollectionB.Exists(CStr(b)) Then
263
        errormsg = true
264
        Exit Sub
265
    End If
119 ghuddy 266
 
4028 dpurdie 267
    qryB.Close()
119 ghuddy 268
End Sub
269
'--------------------------------------------------------------------------------------------------------------------------
270
Sub pkg_Version(pv)
4028 dpurdie 271
    Dim qry
272
    Set qry = OraDatabase.DbCreateDynaset("SELECT PKG_VERSION FROM PACKAGE_VERSIONS WHERE PV_ID="&pv, cint(0))
273
    pkgversion = qry("pkg_version")
274
    qry.Close()
119 ghuddy 275
End Sub
276
'--------------------------------------------------------------------------------------------------------------------------
277
Sub LastPvIdAa(a)
4028 dpurdie 278
    Dim qryA
279
    Set qryA = OraDatabase.DbCreateDynaset("SELECT LAST_PV_ID FROM PACKAGE_VERSIONS WHERE PV_ID="&a, cint(0))
280
    c = qryA("last_pv_id")
281
    qryA.Close()
119 ghuddy 282
End Sub
283
'--------------------------------------------------------------------------------------------------------------------------
284
Sub LastPvIdBb(b)
4028 dpurdie 285
    Dim qryB
286
    Set qryB = OraDatabase.DbCreateDynaset("SELECT LAST_PV_ID FROM PACKAGE_VERSIONS WHERE PV_ID="&b, cint(0))
287
    d = qryB("last_pv_id")
288
    qryB.Close()
119 ghuddy 289
End Sub
290
'--------------------------------------------------------------------------------------------------------------------------
291
Sub Comments(Pv_Id)
4028 dpurdie 292
    Dim comments
293
    Set comments = OraDatabase.DbCreateDynaset("SELECT COMMENTS, PKG_VERSION FROM PACKAGE_VERSIONS WHERE PV_ID="&Pv_id, cint(0))
119 ghuddy 294
 
4028 dpurdie 295
    scFlag = false
296
    If comments("comments") <> "Rippled Build." Then
297
        NewTextFile.WriteLine("<blockquote><blockquote><font color="&chr(34)&"blue"&chr(34)&">Version: "& comments("pkg_version")&"</font></blockquote></blockquote>")
298
        If comments("comments") <> "" Then
299
            NewTextFile.WriteLine("<blockquote><blockquote>Comments: </blockquote></blockquote>")
300
            NewTextFile.WriteLine("<blockquote><blockquote><blockquote>"& TextToHTML(comments("comments")) &"</blockquote></blockquote></blockquote>")
301
            source_change = true
302
            scFlag = true
303
        End If
304
    End If
119 ghuddy 305
 
306
End Sub
307
'--------------------------------------------------------------------------------------------------------------------------
308
Sub Release(pvId)
4028 dpurdie 309
    Dim release
310
    Set release = OraDatabase.DbCreateDynaset("SELECT INSERT_STAMP FROM RELEASE_CONTENT WHERE PV_ID="&pvId, cint(0))
119 ghuddy 311
 
4028 dpurdie 312
    If release("insert_stamp") <> "" Then
313
        NewTextFile.Write(release("insert_stamp"))
314
    Else
315
        NewTextFile.Write("Version Not Used.")
316
    End If
119 ghuddy 317
 
318
End Sub
319
'--------------------------------------------------------------------------------------------------------------------------
320
Sub Header()
4028 dpurdie 321
    NewTextFile.WriteLine("<html>")
322
    NewTextFile.WriteLine("<head>")
119 ghuddy 323
End Sub
324
'--------------------------------------------------------------------------------------------------------------------------
325
Sub Footer()
4028 dpurdie 326
    NewTextFile.WriteLine("</body>")
327
    NewTextFile.WriteLine("</html>")
119 ghuddy 328
End Sub
329
'--------------------------------------------------------------------------------------------------------------------------
4028 dpurdie 330
Sub Styles()
331
  NewTextFile.WriteLine("<style type="&chr(34)&"text/css"&chr(34)&">")
332
  NewTextFile.WriteLine("body { font-family:Verdana,Arial,Helvetica,sans-serif; }")
333
  NewTextFile.WriteLine("table { border-collapse:collapse; }")
334
  NewTextFile.WriteLine("table.fixed_issues td { border-width:1; border-style:solid; border-color:black; padding:3 5 3 5; }")
335
  NewTextFile.WriteLine(".fixed_issues { border-width:1; border-style:solid; border-color:black; }")
336
  NewTextFile.WriteLine(".page_title { color:red; font-size:110%; text-align:center; }")
337
  NewTextFile.WriteLine(".highlight_text { color:blue; }")
338
  NewTextFile.WriteLine(".form_field { background-color:#EAE5D7; font:bold 70% Tahoma,sans-serif; }")
339
  NewTextFile.WriteLine(".form_item { background-color:#EAE5D7; color:red; font:bold 70% Tahoma,sans-serif; vertical-align:top; }")
340
 
341
  NewTextFile.WriteLine(".changesa { background-color:red; }")
342
  NewTextFile.WriteLine(".changesb { background-color:#FF9933; }")
343
  NewTextFile.WriteLine(".changesnone { color:#999999; }")
344
 
345
  NewTextFile.WriteLine(".texta { color:red; }")
346
  NewTextFile.WriteLine(".textb { color:#FF9933; }")
347
  NewTextFile.WriteLine(".textnone { color:#999999; }")
348
 
349
  NewTextFile.WriteLine("</style>")
119 ghuddy 350
End Sub
351
'--------------------------------------------------------------------------------------------------------------------------
352
Function GetIsDiffFilterInUseIcon()
4028 dpurdie 353
    GetIsDiffFilterInUseIcon = LIMG_FILTER_OFF & LIMG_DROP_DOWN_ARROW
119 ghuddy 354
 
4028 dpurdie 355
    If dDiffFilter.Count > 0 Then
356
        GetIsDiffFilterInUseIcon = LIMG_FILTER_ON & LIMG_DROP_DOWN_ARROW
357
    End If
119 ghuddy 358
 
359
End Function
360
'--------------------------------------------------------------------------------------------------------------------------
361
Function GetIsDiffFilterChecked( nFilterId )
362
 
4028 dpurdie 363
    If dDiffFilter.Exists ( CStr(nFilterId)  ) Then
364
        GetIsDiffFilterChecked = "checked"
365
    End If
119 ghuddy 366
 
367
End Function
368
'---------------------------------------------------------------------------------------------------------------------------
369
Function  Get_CQ_Issues ( SSsql, OOrsCQ )
370
 
4028 dpurdie 371
    If OOrsCQ.State = 1 Then
372
        OOrsCQ.Close
373
    End If
119 ghuddy 374
 
4028 dpurdie 375
    On Error Resume Next
376
    OOrsCQ.ActiveConnection = CQ_conn
377
    OOrsCQ.Source = SSsql
378
    OOrsCQ.CursorType = 0
379
    OOrsCQ.CursorLocation = 2
380
    OOrsCQ.LockType = 3
381
    OOrsCQ.Open()
382
    Get_CQ_Issues = Err.Number
119 ghuddy 383
 
384
End Function
385
'--------------------------------------------------------------------------------------------------------------------------
386
Public Function TextToHTML ( sString )
4028 dpurdie 387
    Dim mString
119 ghuddy 388
 
4028 dpurdie 389
    If (sString = "") OR IsNull(sString) Then Exit Function
119 ghuddy 390
 
4028 dpurdie 391
    mString = Server.HTMLEncode( sString )
392
    mString = Replace(mString, VBNewLine, "<br>")
119 ghuddy 393
 
4028 dpurdie 394
    TextToHTML = mString
119 ghuddy 395
End Function
396
'--------------------------------------------------------------------------------------------------------------------------
397
 
398
Sub GetFormDetails ( nSourceRtagId, ByRef outobjDetails )
4028 dpurdie 399
    Dim rsQry, query
119 ghuddy 400
 
4028 dpurdie 401
    ' Exit if nSourceRtagId is empty
402
    If nSourceRtagId = "" Then Exit Sub
119 ghuddy 403
 
4028 dpurdie 404
    OraDatabase.Parameters.Add "SOURCE_RTAG_ID",     nSourceRtagId,        ORAPARM_INPUT, ORATYPE_NUMBER
119 ghuddy 405
 
4028 dpurdie 406
    query = _
407
    " SELECT pr.PROJ_NAME ||' &gt; '|| rt.RTAG_NAME    AS LOCATION, "&_
408
    "          rt.OFFICIAL, pr.PROJ_ID, rt.RTAG_ID"&_
409
    "  FROM RELEASE_TAGS rt,"&_
410
    "            PROJECTS pr"&_
411
    " WHERE rt.PROJ_ID = pr.PROJ_ID"&_
412
    "    AND rt.RTAG_ID = :SOURCE_RTAG_ID"
119 ghuddy 413
 
4028 dpurdie 414
    Set rsQry = OraDatabase.DbCreateDynaset( query, ORADYN_DEFAULT )
119 ghuddy 415
 
4028 dpurdie 416
    OraDatabase.Parameters.Remove "SOURCE_RTAG_ID"
119 ghuddy 417
 
4028 dpurdie 418
    If rsQry.RecordCount > 0 Then
419
        outobjDetails.Item ("location") = rsQry("location")
420
        outobjDetails.Item ("official") = rsQry("official")
421
        outobjDetails.Item ("proj_id") = rsQry("proj_id")
422
        outobjDetails.Item ("rtag_id") = rsQry("rtag_id")
423
    Else
424
        Err.Raise 8, "Sub GetFormDetails in "& ScriptName, "Empty record set returned. nSourceRtagId="& nSourceRtagId
425
    End If
119 ghuddy 426
 
4028 dpurdie 427
    rsQry.Close
428
    Set rsQry = Nothing
119 ghuddy 429
End Sub
430
'--------------------------------------------------------------------------------------------------------------------------
431
Sub GetDiffStateIcon( nDiffState, outIcon )
432
 
4028 dpurdie 433
    Select Case nDiffState
434
        Case "U"
435
            outIcon  = LIMG_UPDATED
436
        Case "UW"
437
            outIcon  = LIMG_UPDATED
438
        Case "A"
439
            outIcon = LIMG_ADDED
440
        Case "R"
441
            outIcon = LIMG_REMOVED
442
        Case "UR"
443
            outIcon = LIMG_RIPPLED
444
        Case Else
445
            outIcon = ""
446
    End Select
119 ghuddy 447
 
448
End Sub
449
'--------------------------------------------------------------------------------------------------------------------------
123 ghuddy 450
Function Get_Record_Count ( SSsql )
4028 dpurdie 451
    Dim rsTemp
452
    Set rsTemp = OraDatabase.DbCreateDynaset( "SELECT COUNT(*) as record_count FROM "& SSsql , cint(0))
123 ghuddy 453
 
4028 dpurdie 454
    If (NOT rsTemp.BOF) AND (NOT rsTemp.EOF) Then
455
        Get_Record_Count = rsTemp("record_count")
456
    Else
457
        Get_Record_Count = 0
458
    End If
459
    rsTemp.Close
460
    Set rsTemp = nothing
123 ghuddy 461
End Function
462
'--------------------------------------------------------------------------------------------------------------------------
463
' We need a way of discriminating between versions in the destination release that are pending, and those that are officially
464
' in the release. This function allows us to do that on the fly within the VBSCRIPT HTML generating code, indicating specifically
465
' if the given PV_ID reflects a pending additive merge.
466
Function Is_Pending_Add(NNrtag_id, NNpv_id)
4028 dpurdie 467
    If IsNull(NNrtag_id) OR IsNull(NNpv_id) Then
468
        Is_Pending_Add = 0
469
    Else
470
        Is_Pending_Add = Get_Record_Count( "PLANNED pl WHERE pl.rtag_id = " & NNrtag_id & " AND pl.pv_id = " & NNpv_id & " AND pl.operation = 'A'" )
471
    End If
123 ghuddy 472
End Function
473
'--------------------------------------------------------------------------------------------------------------------------
474
' We need a way of discriminating between versions in the destination release that are pending, and those that are officially
475
' in the release. This function allows us to do that on the fly within the VBSCRIPT HTML generating code, indicating specifically
476
' if the given PV_ID reflects a pending subtractive merge.
477
Function Is_Pending_Sub(NNrtag_id, NNpv_id)
4028 dpurdie 478
    If IsNull(NNrtag_id) OR IsNull(NNpv_id) Then
479
        Is_Pending_Sub = 0
480
    Else
481
        Is_Pending_Sub = Get_Record_Count( "PLANNED pl WHERE pl.rtag_id = " & NNrtag_id & " AND pl.pv_id = " & NNpv_id & " AND pl.operation = 'S'" )
482
    End If
123 ghuddy 483
End Function
484
 
485
'--------------------------------------------------------------------------------------------------------------------------
119 ghuddy 486
Sub MergePackages (releaseMode)
4028 dpurdie 487
    Dim aFullList, aAddPkgList, aRemovePkgList, dAddPkgList, dRemovePkgList, PvId
488
    Dim OraParameter
489
    Dim rc
119 ghuddy 490
 
4028 dpurdie 491
    ' Business Rules restricting the use of the merge feature...
492
    ' Bypass merge if the destination release is in closed or archive mode, or if user does not have
493
    ' merge permissions
494
    If releaseMode <> enumDB_RELEASE_IN_CLOSED_MODE  AND releaseMode <> enumDB_RELEASE_IN_ARCHIVE_MODE _
495
    AND (objAccessControl.IsActive("MergeRelease")) THEN
119 ghuddy 496
 
4028 dpurdie 497
        Set dAddPkgList = CreateObject("Scripting.Dictionary")
498
        Set dRemovePkgList = CreateObject("Scripting.Dictionary")
119 ghuddy 499
 
4028 dpurdie 500
        '--- Get Add Packages ---
501
        ' Get full list of "addpkg" parameter
502
        aFullList = Split ( Replace( Request("addpkg"), " ", "" ), "," )
119 ghuddy 503
 
4028 dpurdie 504
        ' Clean empty parameters
505
        For Each PvId In aFullList
506
            If PvId <> "" Then
507
                dAddPkgList.Add CStr( PvId ), Empty
508
            End If
509
        Next
119 ghuddy 510
 
4028 dpurdie 511
        aFullList = NULL
512
        aAddPkgList = dAddPkgList.Keys
119 ghuddy 513
 
4028 dpurdie 514
        '--- Get Remove Packages ---
515
        ' Get full list of "removepkg" parameter
516
        aFullList = Split ( Replace( Request("removepkg"), " ", "" ), "," )
119 ghuddy 517
 
4028 dpurdie 518
        ' Clean empty parameters
519
        For Each PvId In aFullList
520
            If PvId <> "" Then
521
                dRemovePkgList.Add CStr( PvId ), Empty
522
            End If
523
        Next
119 ghuddy 524
 
4028 dpurdie 525
        aFullList = NULL
526
        aRemovePkgList = dRemovePkgList.Keys
119 ghuddy 527
 
4028 dpurdie 528
        '-- Add package List to release --
529
        OraDatabase.Parameters.Add "PV_ID",     NULL, ORAPARM_INPUT, ORATYPE_NUMBER
530
        OraDatabase.Parameters.Add "VIEW_ID",  NULL, ORAPARM_BOTH, ORATYPE_NUMBER
531
        OraDatabase.Parameters.Add "RTAG_A",    Request("rtagA"), ORAPARM_INPUT, ORATYPE_NUMBER
532
        OraDatabase.Parameters.Add "RTAG_B",    Request("rtagB"), ORAPARM_INPUT, ORATYPE_NUMBER
533
        OraDatabase.Parameters.Add "PROJB",     objRelCollectorB.Item("proj_id"), ORAPARM_INPUT, ORATYPE_NUMBER
534
        OraDatabase.Parameters.Add "COMMENTS", "Merging from "& objRelCollectorA.Item("location") &" to "& objRelCollectorB.Item("location"), ORAPARM_INPUT, ORATYPE_VARCHAR2
535
        OraDatabase.Parameters.Add "USER_ID",  objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBER
536
        OraDatabase.Parameters.Add "OPERATION",NULL, ORAPARM_INPUT, ORATYPE_CHAR
119 ghuddy 537
 
4028 dpurdie 538
        Set OraParameter = OraDatabase.Parameters
119 ghuddy 539
 
540
 
4028 dpurdie 541
        On Error Resume Next
119 ghuddy 542
 
543
 
4028 dpurdie 544
        ' Begin Database entry
545
        objEH.TryORA ( OraSession )
119 ghuddy 546
 
4028 dpurdie 547
        '-- Add Packages --
548
        OraParameter("OPERATION").Value = "A"
549
        For Each PvId In aAddPkgList
129 ghuddy 550
            OraParameter("PV_ID").Value = PvId
4028 dpurdie 551
            ' DEVI-45275, Merge into Planned (pending) table instead of release_content table.
552
            If Err.Number = 0 Then
553
                OraDatabase.ExecuteSQL _
554
                "BEGIN  "&_
555
                "  :VIEW_ID := PK_RELEASE.GET_PACKAGE_VIEW ( :PV_ID, :RTAG_A ); "&_
556
                "  PK_PLANNED.MERGE_PACKAGE ( :PV_ID, :VIEW_ID, :RTAG_B, :USER_ID, :OPERATION );  "&_
557
                "END;"
558
            End If
559
        Next
119 ghuddy 560
 
4028 dpurdie 561
        '-- Remove Packages --
562
        If Err.Number = 0 Then
563
            OraParameter("OPERATION").Value = "S"
564
            For Each PvId In aRemovePkgList
565
                OraParameter("PV_ID").Value = PvId
566
 
567
                If Err.Number = 0 Then
568
                    ' Does this PV_ID exist in the destination release's planned table?
569
                    rc = Get_Record_Count ("PLANNED pl WHERE pl.pv_id = " & PvId & " AND pl.rtag_id = " & Request("rtagB") )
570
                    If  rc > 0 Then
571
                        ' Given that merging now merges into pending, the merge page may be used to remove items that have
572
                        ' previously been merged but have not yet been committed to the destination release. For these,
573
                        ' we cannot call PK_RELEASE.GET_PACKAGE_VIEW(). We have to call PK_PLANNED.GET_PACKAGE_VIEW() instead.
574
                        OraDatabase.ExecuteSQL _
575
                        "BEGIN  "&_
576
                        "  :VIEW_ID := PK_PLANNED.GET_PACKAGE_VIEW ( :PV_ID, :RTAG_B ); "&_
577
                        "  PK_PLANNED.MERGE_PACKAGE ( :PV_ID, :VIEW_ID, :RTAG_B, :USER_ID, :OPERATION );  "&_
578
                        "END;"
579
                    Else
580
                        ' DEVI-45275, Merge into Planned (pending) table instead of release_content table.
581
                        OraDatabase.ExecuteSQL _
582
                        "BEGIN  "&_
583
                        "  :VIEW_ID := PK_RELEASE.GET_PACKAGE_VIEW ( :PV_ID, :RTAG_B ); "&_
584
                        "  PK_PLANNED.MERGE_PACKAGE ( :PV_ID, :VIEW_ID, :RTAG_B, :USER_ID, :OPERATION );  "&_
585
                        "END;"
586
                    End If
587
                End If
588
            Next
589
 
590
            '-- Log Project Merge Action
129 ghuddy 591
            If Err.Number = 0 Then
4028 dpurdie 592
                OraDatabase.ExecuteSQL _
593
                "BEGIN  LOG_PROJECT_ACTION ( :PROJB, 'merge_release', :USER_ID, :COMMENTS, :RTAG_B );  END;"
129 ghuddy 594
            End If
119 ghuddy 595
 
4028 dpurdie 596
        End If
123 ghuddy 597
 
4028 dpurdie 598
        objEH.CatchORA ( OraSession )     ' sets up LastOraFailed as appropriate
123 ghuddy 599
 
4028 dpurdie 600
        ' NOTE, The Touch_Release stored procedure does a commit itself, so we should not do it unless all the ExecuteSQL's we
601
        ' have just performed, were successful
602
        If objEH.LastOraFailed = FALSE Then
603
            '-- Force package state recalculate
604
            objEH.TryORA ( OraSession )
605
            OraDatabase.ExecuteSQL _
606
                "BEGIN  "&_
607
                "  TOUCH_RELEASE ( :RTAG_B );  "&_
608
                "END;"
609
            objEH.CatchORA ( OraSession )
610
        End If
129 ghuddy 611
 
4028 dpurdie 612
        Set OraParameter = Nothing
613
        OraDatabase.Parameters.Remove "PV_ID"
614
        OraDatabase.Parameters.Remove "VIEW_ID"
615
        OraDatabase.Parameters.Remove "RTAG_A"
616
        OraDatabase.Parameters.Remove "RTAG_B"
617
        OraDatabase.Parameters.Remove "USER_ID"
618
        OraDatabase.Parameters.Remove "PROJB"
619
        OraDatabase.Parameters.Remove "COMMENTS"
620
        OraDatabase.Parameters.Remove "OPERATION"
621
        'Response.write "<br>"& sAddPkgList &"-"& dAddPkgList.Count &"-"& UBound( aFullList )
622
    End If
119 ghuddy 623
End Sub
624
'--------------------------------------------------------------------------------------------------------------------------
625
Function AddTrailingZeros(byval n, byval count)
4028 dpurdie 626
    if len(n) >= count then
627
        AddTrailingZeros = n
628
        exit function
629
    end if
119 ghuddy 630
 
4028 dpurdie 631
    dim c, s, i
632
    c = count - len(n)
119 ghuddy 633
 
4028 dpurdie 634
    for i = 1 to c
635
        s = s & "0"
636
    next
637
    s = cstr(n) & s
119 ghuddy 638
 
4028 dpurdie 639
    AddTrailingZeros = s
119 ghuddy 640
End function
641
'--------------------------------------------------------------------------------------------------------------------------
642
'------------ RUN BEFORE PAGE RENDER ----------
643
If Request("btn") = "Exit" Then
4028 dpurdie 644
    Call OpenInWindow ( "index.asp" )
119 ghuddy 645
End If
646
 
647
' Get release details
648
Call GetFormDetails ( parRtagA, objRelCollectorA )
649
Call GetFormDetails ( parRtagB, objRelCollectorB )
650
 
651
 
652
If (Request("btn") = "Merge") Then
4028 dpurdie 653
    Call MergePackages ( objRelCollectorB.Item("official") )
119 ghuddy 654
End If
655
 
656
If Request("btn") = "Swap Compare" Then
4028 dpurdie 657
    Call OpenInWindow ( ScriptName &"?rtagA="& parRtagB &"&rtagB="& parRtagA )
119 ghuddy 658
End If
659
 
660
If Request("btn") = "Hide" Then
4028 dpurdie 661
    ' Store filter in cookie
662
    Response.Cookies(enum_RELMGR_COOKIE_DOMAIN)(COOKIE_HIDE_DIFF_FILTER) = Request("difilter")
119 ghuddy 663
End If
664
 
665
Call GetDiffFilterValues ( dDiffFilter )
666
'----------------------------------------------
667
%>
668
<html>
669
<head>
670
<title>Release Manager</title>
671
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
672
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
673
<link rel="stylesheet" href="images/release_manager_style.css" type="text/css">
674
<link rel="stylesheet" href="images/navigation.css" type="text/css">
675
<script language="JavaScript" src="images/common.js"></script>
676
<script language="JavaScript" src="scripts/remote_scripting.js"></script>
123 ghuddy 677
 
678
<!-- TIPS -->
679
<script language="JavaScript" src="images/tipster.js"></script>
680
<script language="JavaScript" src="images/_help_tips.js"></script>
119 ghuddy 681
<script language="JavaScript" type="text/javascript">
682
<!--
683
 
123 ghuddy 684
function RequestReleaseCombo( paramString, rowId )
685
{
4028 dpurdie 686
    var requestURL = 'RequestReleaseCombo.asp';
119 ghuddy 687
 
4028 dpurdie 688
    // Set ajax divname
689
    ajaxdivname = rowId;
119 ghuddy 690
 
4028 dpurdie 691
    //Append the name to search for to the requestURL
692
    var url = requestURL + paramString;
119 ghuddy 693
 
4028 dpurdie 694
    //Progress
695
    //alert(MM_findObj( rowId ));
119 ghuddy 696
 
4028 dpurdie 697
    //MM_findObj( rowId ).options[0] = new Option('Loading...','');
698
    //MM_findObj( rowId ).selectedIndex = 0;
699
    rowId.options[0] = new Option('Loading...','');
700
    rowId.selectedIndex = 0;
119 ghuddy 701
 
702
 
4028 dpurdie 703
    //Create the xmlHttp object to use in the request
704
    //stateChangeHandler will fire when the state has changed, i.e. data is received back
705
    // This is non-blocking (asynchronous)
706
    xmlHttp = GetXmlHttpObject(stateComboChangeHandler);
119 ghuddy 707
 
4028 dpurdie 708
    //Send the xmlHttp get to the specified url
709
    xmlHttp_Get(xmlHttp, url);
119 ghuddy 710
}
711
 
712
 
713
function MergePackage ( pkga, pkgb, rowId )
714
{
4028 dpurdie 715
    // Set merge hidden field with new value
716
    MM_findObj( 'ADDPKG_' + rowId ).value = pkga;
119 ghuddy 717
 
4028 dpurdie 718
    var divA = MM_findObj( 'PVA' + rowId );
719
    var divB = MM_findObj( 'PVB' + rowId );
119 ghuddy 720
 
4028 dpurdie 721
    // Set text equal
722
    divB.innerHTML = divA.innerHTML;
119 ghuddy 723
 
4028 dpurdie 724
    // Set highlight to blank
725
    divA.style.backgroundColor = '<%=LCOLOR_NOT_CHANGED%>';
726
    divB.style.backgroundColor = '<%=LCOLOR_NOT_CHANGED%>';
119 ghuddy 727
 
4028 dpurdie 728
     // Set Change state icon to blank
729
    MM_findObj( 'IMGSTATE' + rowId ).style.display = 'none';
119 ghuddy 730
 
4028 dpurdie 731
    // Remove Merge Button
732
    MM_findObj( 'IMGMERGE' + rowId ).style.display = 'none';
733
    MM_findObj( 'IMGREMOVE' + rowId ).style.display = 'none';
119 ghuddy 734
 
4028 dpurdie 735
    // Show undo button
736
    MM_findObj( 'IMGUNDO' + rowId ).style.display = 'block';
119 ghuddy 737
}
738
 
739
 
740
function RemovePackage ( pkga, pkgb, rowId )
741
{
4028 dpurdie 742
    // Set remove hidden field with new value
743
    MM_findObj( 'REMOVEPKG_' + rowId ).value = pkgb;
119 ghuddy 744
 
4028 dpurdie 745
    var divA = MM_findObj( 'PVA' + rowId );
746
    var divB = MM_findObj( 'PVB' + rowId );
119 ghuddy 747
 
4028 dpurdie 748
    // Set text equal
749
    divB.style.textDecoration = 'line-through';
119 ghuddy 750
 
4028 dpurdie 751
    // Set highlight to blank
752
    if (MM_findObj( 'CHANGETYPE_' + rowId ).value != "A")
753
    {
754
        divA.style.backgroundColor = '<%=LCOLOR_NOT_CHANGED%>';
755
    }
756
    divB.style.backgroundColor = '<%=LCOLOR_NOT_CHANGED%>';
119 ghuddy 757
 
4028 dpurdie 758
     // Set Change state icon to blank
759
    MM_findObj( 'IMGSTATE' + rowId ).style.display = 'none';
119 ghuddy 760
 
4028 dpurdie 761
    // Remove Merge Button
762
    MM_findObj( 'IMGMERGE' + rowId ).style.display = 'none';
763
    MM_findObj( 'IMGREMOVE' + rowId ).style.display = 'none';
119 ghuddy 764
 
4028 dpurdie 765
    // Show undo button
766
    MM_findObj( 'IMGUNDO' + rowId ).style.display = 'block';
119 ghuddy 767
}
768
 
769
 
770
 
771
function UndoPackage ( rowId )
772
{
4028 dpurdie 773
    // Set merge/remove hidden field with new value
774
    MM_findObj( 'ADDPKG_' + rowId ).value = '';
775
    MM_findObj( 'REMOVEPKG_' + rowId ).value = '';
119 ghuddy 776
 
4028 dpurdie 777
    var divA = MM_findObj( 'PVA' + rowId );
778
    var divB = MM_findObj( 'PVB' + rowId );
119 ghuddy 779
 
4028 dpurdie 780
    // Set text equal
781
    divB.innerHTML = MM_findObj( 'UNDOPKG_' + rowId ).value;
782
    divB.style.textDecoration = 'none';
119 ghuddy 783
 
784
 
4028 dpurdie 785
    // Set highlight to blank
786
    divA.style.backgroundColor = MM_findObj( 'UNDOCOLORA_' + rowId ).value;
787
    divB.style.backgroundColor = MM_findObj( 'UNDOCOLORB_' + rowId ).value;
119 ghuddy 788
 
4028 dpurdie 789
     // Set Change state icon to blank
790
    MM_findObj( 'IMGSTATE' + rowId ).style.display = 'block';
119 ghuddy 791
 
4028 dpurdie 792
    // Remove Merge Button
793
    var cht = MM_findObj( 'CHANGETYPE_' + rowId );
119 ghuddy 794
 
4028 dpurdie 795
    if (cht.value == "R")
796
    {
797
        MM_findObj( 'IMGMERGE' + rowId ).style.display = 'block';
798
    }
799
    else if ( (cht.value == "A") || (cht.value == "") )
800
    {
801
        MM_findObj( 'IMGREMOVE' + rowId ).style.display = 'block';
802
    }
803
    else
804
    {
805
        MM_findObj( 'IMGMERGE' + rowId ).style.display = 'block';
806
        MM_findObj( 'IMGREMOVE' + rowId ).style.display = 'block';
807
    }
119 ghuddy 808
 
4028 dpurdie 809
    // Show undo button
810
    MM_findObj( 'IMGUNDO' + rowId ).style.display = 'none';
119 ghuddy 811
}
812
 
813
 
814
function MergeAll()
815
{
4028 dpurdie 816
    var elem
119 ghuddy 817
 
4028 dpurdie 818
    if (document.all)
819
    {
820
        // Run this for IE
821
        elem = document.all;
822
    } else {
823
        // Run this for other browsers
824
        elem = document.getElementsByTagName('div');
825
    }
119 ghuddy 826
 
4028 dpurdie 827
    for (i in elem)
828
    {
829
        if (elem[i].id)
830
        {
831
            if (elem[i].id.indexOf('SHORT_') == 0) elem[i].style.display = 'none';
832
            if (elem[i].id.indexOf('LONG_') == 0) elem[i].style.display = 'block';
833
        }
834
    }
119 ghuddy 835
}
836
 
837
//-->
838
</script>
839
 
840
</head>
123 ghuddy 841
<!-- TIPS LAYERS -------------------------------------->
842
<div id="formTipsLayer" style="position: absolute; z-index: 1000; visibility: hidden; left:0; top: 0; width: 10">&nbsp;</div>
119 ghuddy 843
<body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0">
844
<form name="FormName" method="post" action="<%=ScriptName%>">
4028 dpurdie 845
    <!-- HEADER -->
846
    <!--#include file="_header.asp"-->
847
    <!-- BODY ---->
848
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
849
        <tr>
850
            <td width="20%">
851
            <td width="60%">
852
            <td width="20%">
853
        </tr>
854
        <tr>
855
            <td background="images/bg_home_orange.gif" valign="top">
856
                <!-- SELECT RELEASE A ---------------------------------------------->
857
                <br>
858
                <table width="100%"  border="0" cellspacing="10" cellpadding="0">
859
                    <tr>
860
                        <td align="left" class="body_col"><img src="images/i_rtag_open_mode.gif" border="0" align="absmiddle" width="15" height="13">&nbsp;Select Release A<hr size="1px" color="Olive" noshade></td>
861
                    </tr>
862
                    <tr>
863
                        <td align="left">
864
                            <select name="projA" class="form_item" onChange="RequestReleaseCombo( '?proj_id='+ this.value, FormName.rtagA );">
865
                                <option value="">-- Select Project --</option>
866
                                <%
867
                                OraDatabase.Parameters.Add "PROJ_ID",     objRelCollectorA.Item("proj_id"),    ORAPARM_INPUT, ORATYPE_NUMBER
119 ghuddy 868
 
4028 dpurdie 869
                                Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ProjectsCombo.sql"), cint(0))
119 ghuddy 870
 
4028 dpurdie 871
                                OraDatabase.Parameters.Remove "PROJ_ID"
119 ghuddy 872
 
4028 dpurdie 873
                                While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
874
                                    <option value="<%=rsQry("proj_id")%>" <%=rsQry("selected")%>><%=rsQry("proj_name")%></option>
875
                                    <%rsQry.MoveNext
876
                                WEnd
119 ghuddy 877
 
4028 dpurdie 878
                                rsQry.Close
879
                                Set rsQry = Nothing
880
                                %>
881
                            </select>
882
                        </td>
883
                    </tr>
884
                    <tr>
885
                        <td align="left">
886
                            <select name="rtagA" id="rtagA" class="form_item">
887
                                <%
888
                                OraDatabase.Parameters.Add "PROJ_ID",     objRelCollectorA.Item("proj_id"),    ORAPARM_INPUT,  ORATYPE_NUMBER
889
                                OraDatabase.Parameters.Add "RTAG_ID",     objRelCollectorA.Item("rtag_id"),    ORAPARM_INPUT, ORATYPE_NUMBER
119 ghuddy 890
 
4028 dpurdie 891
                                Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ReleasesCombo.sql"), cint(0))
119 ghuddy 892
 
4028 dpurdie 893
                                OraDatabase.Parameters.Remove "PROJ_ID"
894
                                OraDatabase.Parameters.Remove "RTAG_ID"
119 ghuddy 895
 
4028 dpurdie 896
                                While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
897
                                        <option value="<%=rsQry("rtag_id")%>" <%=rsQry("selected")%>><%=rsQry("rtag_name")%></option>
898
                                    <%rsQry.MoveNext
899
                                WEnd
119 ghuddy 900
 
4028 dpurdie 901
                                rsQry.Close
902
                                Set rsQry = Nothing
903
                                %>
904
                            </select>
905
                        </td>
906
                    </tr>
907
                    <%If (parRtagA <> "") Then%>
908
                        <tr>
909
                            <td align="left"><a href="dependencies.asp?rtag_id=<%=parRtagA%>" class="body_txt_drk">Go To Release A &raquo;</a></td>
910
                        </tr>
911
                    <%End If%>
912
                </table>
119 ghuddy 913
 
4028 dpurdie 914
                <!-- SELECT RELEASE A END ---------------------------------------------->
915
            </td>
119 ghuddy 916
 
4028 dpurdie 917
            <td rowspan="2" valign="top" background="images/bg_lght_gray.gif" align="center">
918
                <!-- DIFF -------------------------------------------------------->
919
                <br>
920
                <table width="100%" border="0" cellspacing="10" cellpadding="0">
921
                    <tr>
922
                        <td>
923
                            <table width="100%" border="0" cellspacing="0" cellpadding="0">
924
                                <tr>
925
                                    <td width="1%"></td>
926
                                    <td width="100%" align="left" class="form_ttl">DIFF / MERGE RELEASE
927
                                        <%If genReport Then%>
928
                                        &nbsp;[Generating Report]
929
                                        <%End If%>
930
                                        </td>
931
                                    <td width="1%"></td>
932
                                </tr>
933
                                <tr>
934
                                    <td align="left" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tl_cnr_b.gif" width="13" height="13"></td>
935
                                    <td background="images/lbox_bg_blue.gif" align="left" class="wform_ttl">&nbsp;</td>
936
                                    <td align="right" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tr_cnr_b.gif" width="13" height="13"></td>
937
                                </tr>
938
                                <tr>
939
                                    <td width="1%" bgcolor="#FFFFFF"><img src="images/h_trsp_dot.gif" width="10" height="100"></td>
940
                                    <td bgcolor="#FFFFFF" valign="top" class="form_item">
941
                                        <table width="100%"  border="0" cellspacing="0" cellpadding="5">
942
                                            <tr>
943
                                                <td width="100%" bgcolor="#DAD7C8">
944
                                                    <input type="submit" name="btn" value="Compare" class="form_btn_comp" style="margin-right:5px;">
945
                                                    <input type="submit" name="btn" value="Swap Compare" class="form_btn_comp">
946
                                                    <span class="body_txt">
947
                                                        <input name="btn" type="submit" class="form_btn" value="Mail Me Report">
948
                                                        <% '<input name="btn" type="submit" class="form_btn" value="Show Me Report"> %>
949
                                                    </span>
950
                                                </td>
951
                                                <td width="1" align="right" bgcolor="#DAD7C8" nowrap>
952
                                                    <table width="100%"  border="0" cellspacing="0" cellpadding="0">
953
                                                        <tr>
954
                                                            <td>
955
                                                                <%If (objRelCollectorB.Item("official") <> "Y" AND objRelCollectorB.Item("official") <> "C" ) AND (objAccessControl.IsActive("MergeRelease")) Then%>
956
                                                                    <input type="submit" name="btn" value="Merge" class="form_btn_comp" style="margin-right:10px;" <%If (parRtagA = "") OR (parRtagB = "")Then%>disabled<%End If%>>
957
                                                                <%End If%>
958
                                                            </td>
959
                                                            <td>
960
                                                                <%If (objRelCollectorB.Item("official") = "C" ) AND (objAccessControl.IsActive("MergeReleaseForCCB")) Then%>
961
                                                                    <input type="submit" name="btn" value="Merge" class="form_btn_comp" style="margin-right:10px;" <%If (parRtagA = "") OR (parRtagB = "")Then%>disabled<%End If%>>
962
                                                                <%End If%>
963
                                                            </td>
964
                                                            <td>
965
                                                                <input type="submit" name="btn" value="Exit" class="form_btn_comp">
966
                                                            </td>
967
                                                        </tr>
968
                                                    </table>
969
                                                </td>
970
                                            </tr>
971
                                            <tr>
972
                                                <td>
973
                                                    <%If (parRtagA <> "") AND (parRtagB <> "")Then%>
974
                                                        <!-- DIFF FILTER +++++++++++++++++++++++++++++++++++++++++++ -->
975
                                                        <fieldset style="width:150px;">
976
                                                            <legend><a href="javascript:;" class="body_scol" onClick="ToggleDisplay('divDiffFilter');" ><%=GetIsDiffFilterInUseIcon() %>&nbsp;Filter&nbsp;Results...</a></legend>
977
                                                            <div name="divDiffFilter" id="divDiffFilter" class="body_txt" style="display:none;">
978
                                                                <br>
979
                                                                <table width="100%"  border="0" cellspacing="1" cellpadding="3">
980
                                                                    <tr>
981
                                                                        <td width="1" background="images/bg_action_norm.gif"><input name="difilter" type="checkbox" value="<%=enumDB_NUM_DIFF_UPDATED%>" <%=GetIsDiffFilterChecked(enumDB_NUM_DIFF_UPDATED)%>></td>
982
                                                                        <td width="50" nowrap background="images/bg_action_norm.gif" class="form_field"><%=LIMG_UPDATED%>Updated</td>
983
                                                                    </tr>
984
                                                                    <tr>
985
                                                                        <td background="images/bg_action_norm.gif"><input type="checkbox" name="difilter" value="<%=enumDB_NUM_DIFF_NEW%>" <%=GetIsDiffFilterChecked(enumDB_NUM_DIFF_NEW)%>></td>
986
                                                                        <td nowrap background="images/bg_action_norm.gif" class="form_field"><%=LIMG_ADDED%>Added</td>
987
                                                                    </tr>
988
                                                                    <tr>
989
                                                                        <td background="images/bg_action_norm.gif"><input type="checkbox" name="difilter" value="<%=enumDB_NUM_DIFF_REMOVED%>" <%=GetIsDiffFilterChecked(enumDB_NUM_DIFF_REMOVED)%>></td>
990
                                                                        <td nowrap background="images/bg_action_norm.gif" class="form_field"><%=LIMG_REMOVED%>Removed</td>
991
                                                                    </tr>
992
                                                                    <tr>
993
                                                                        <td background="images/bg_action_norm.gif"><input type="checkbox" name="difilter" value="<%=enumDB_NUM_DIFF_RIPPLE%>" <%=GetIsDiffFilterChecked(enumDB_NUM_DIFF_RIPPLE)%>></td>
994
                                                                        <td nowrap background="images/bg_action_norm.gif" class="form_field"><%=LIMG_RIPPLED%>Rippled</td>
995
                                                                    </tr>
996
                                                                    <tr>
997
                                                                        <td background="images/bg_action_norm.gif"><input type="checkbox" name="difilter" value="<%=enumDB_NUM_DIFF_NO_CHANGE%>" <%=GetIsDiffFilterChecked(enumDB_NUM_DIFF_NO_CHANGE)%>></td>
998
                                                                        <td nowrap background="images/bg_action_norm.gif" class="form_field">Unchanged</td>
999
                                                                    </tr>
1000
                                                                    <tr>
1001
                                                                        <td background="images/bg_action_norm.gif">&nbsp;</td>
1002
                                                                        <td background="images/bg_action_norm.gif"><input name="btn" type="submit" class="form_btn" value="Hide"></td>
1003
                                                                    </tr>
1004
                                                                </table>
1005
                                                            </div>
1006
                                                        </fieldset>
1007
                                                        <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
1008
                                                    <%End If%>
1009
                                                </td>
1010
                                                <td></td>
1011
                                            </tr>
1012
                                        </table>
119 ghuddy 1013
 
4028 dpurdie 1014
                                        <%
1015
                                        ' Successfull Merge
1016
                                        If (Request("btn") = "Merge") Then
1017
                                            Call Messenger ( "Merge has completed successfully.", 3, "100%" )
1018
                                        End If
119 ghuddy 1019
 
4028 dpurdie 1020
                                        Set FSO=Server.CreateObject("Scripting.FileSystemObject")
1021
                                        Set NewTextFile=FSO.CreateTextFile(Server.MapPath("docs\compareReleases_"&objAccessControl.UserName&".html"), true)
119 ghuddy 1022
 
4028 dpurdie 1023
                                        Call Header()
119 ghuddy 1024
 
4028 dpurdie 1025
                                        If (parRtagA <> "") AND (parRtagB <> "")Then%>
1026
                                            <table width="100%"  border="0" cellspacing="1" cellpadding="0">
1027
                                                <tr>
1028
                                                    <td width="50%" bgcolor="#E4E9EC" class="body_row" nowrap><%= ReleaseIcon(objRelCollectorA.Item("official")) & objRelCollectorA.Item("location")%> </td>
1029
                                                    <td width="1" bgcolor="#E4E9EC"><img src="images/spacer.gif" width="20" height="1"></td>
1030
                                                    <td width="1" bgcolor="#E4E9EC"><img src="images/spacer.gif" width="20" height="20"></td>
1031
                                                    <td width="1" bgcolor="#E4E9EC"><img src="images/spacer.gif" width="20" height="1"></td>
1032
                                                    <td width="50%" bgcolor="#E4E9EC" class="body_row" nowrap><%= ReleaseIcon(objRelCollectorB.Item("official")) & objRelCollectorB.Item("location")%></td>
1033
                                                    <td width="1" bgcolor="#E4E9EC"><img src="images/spacer.gif" width="20" height="1"></td>
1034
                                                </tr>
1035
                                                <%
1036
                                                OraDatabase.Parameters.Add "RTAG_A",     parRtagA,    ORAPARM_INPUT, ORATYPE_NUMBER
1037
                                                OraDatabase.Parameters.Add "RTAG_B",     parRtagB,    ORAPARM_INPUT, ORATYPE_NUMBER
1038
                                                OraDatabase.Parameters.Add "NO_CHANGE", GetIsDiffFilterChecked(enumDB_NUM_DIFF_NO_CHANGE), ORAPARM_INPUT, ORATYPE_VARCHAR2
1039
                                                OraDatabase.Parameters.Add "ADDED",      GetIsDiffFilterChecked(enumDB_NUM_DIFF_NEW),         ORAPARM_INPUT, ORATYPE_VARCHAR2
1040
                                                OraDatabase.Parameters.Add "UPDATED",    GetIsDiffFilterChecked(enumDB_NUM_DIFF_UPDATED),    ORAPARM_INPUT, ORATYPE_VARCHAR2
1041
                                                OraDatabase.Parameters.Add "REMOVED",    GetIsDiffFilterChecked(enumDB_NUM_DIFF_REMOVED),    ORAPARM_INPUT, ORATYPE_VARCHAR2
119 ghuddy 1042
 
4028 dpurdie 1043
                                                Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ReleaseDiff.sql"), cint(0))
119 ghuddy 1044
 
4028 dpurdie 1045
                                                OraDatabase.Parameters.Remove "RTAG_A"
1046
                                                OraDatabase.Parameters.Remove "RTAG_B"
1047
                                                OraDatabase.Parameters.Remove "NO_CHANGE"
1048
                                                OraDatabase.Parameters.Remove "ADDED"
1049
                                                OraDatabase.Parameters.Remove "UPDATED"
1050
                                                OraDatabase.Parameters.Remove "REMOVED"
119 ghuddy 1051
 
4028 dpurdie 1052
                                                Set rsQryA = OraDatabase.DbCreateDynaset( "SELECT RT.RTAG_NAME, PRJ.PROJ_NAME FROM RELEASE_TAGS RT, PROJECTS PRJ WHERE RTAG_ID="& parRtagA &" AND RT.PROJ_ID=PRJ.PROJ_ID", cint(0))
1053
                                                Set rsQryB = OraDatabase.DbCreateDynaset( "SELECT RT.RTAG_NAME, PRJ.PROJ_NAME FROM RELEASE_TAGS RT, PROJECTS PRJ WHERE RTAG_ID="& parRtagB &" AND RT.PROJ_ID=PRJ.PROJ_ID", cint(0))
119 ghuddy 1054
 
4028 dpurdie 1055
                                                Call Javascript()
1056
                                                Call Styles()
119 ghuddy 1057
 
4028 dpurdie 1058
                                                NewTextFile.WriteLine("<title>Difference Report Between "&rsQryA("proj_name")&" "&rsQryA("rtag_name")&" and "&rsQryB("proj_name")&" "&rsQryB("rtag_name")&"</title>")
1059
                                                NewTextFile.WriteLine("<div class=""page_title"">Difference Report Between "&rsQryA("proj_name")&" "&rsQryA("rtag_name")&" and "&rsQryB("proj_name")&" "&rsQryB("rtag_name")&"</div><br>")
1060
                                                NewTextFile.WriteLine("<b>Key:</b><br><blockquote>")
1061
                                                NewTextFile.WriteLine("<span class=changesa><b>SOURCE CODE CHANGES</b></span><span class=texta> Indicates Changes to a Package in "& rsQryA("rtag_name") &".</span><br>")
1062
                                                NewTextFile.WriteLine("<span class=changesb><b>SOURCE CODE CHANGES</b></span><span class=textb> Indicates Changes to a Package in "& rsQryB("rtag_name") &".</span><br>")
1063
                                                NewTextFile.WriteLine("<span class=changesnone><b>Grey Text</b></span><span class=textnone> No Source Code Changes to a Package in either Release.</span>")
1064
                                                NewTextFile.WriteLine("</blockquote>")
119 ghuddy 1065
 
4028 dpurdie 1066
                                                NewTextFile.WriteLine("<b>Toggle Sections:</b><blockquote>")
1067
                                                NewTextFile.WriteLine("<a href=""javascript:;"" onClick=""MM_toggleAll('divPkgInfo','1');"">Expand All</a>")
1068
                                                NewTextFile.WriteLine("<a href=""javascript:;"" onClick=""MM_toggleAll('divPkgInfo','');"">Collapse All</a>")
1069
                                                NewTextFile.WriteLine("</blockquote>")
119 ghuddy 1070
 
4028 dpurdie 1071
                                                Dim currView_id
1072
                                                currView_id = -1
119 ghuddy 1073
 
4028 dpurdie 1074
                                                While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))
1075
                                                    errormsg = false
1076
                                                    rowId = rsQry("pv_id_a") &"_"& rsQry("pv_id_b")
119 ghuddy 1077
 
4028 dpurdie 1078
                                                    btnMerge = LIMG_MERGE
1079
                                                    btnRemove = LIMG_REMOVE
1080
                                                    colorA = LCOLOR_NOT_CHANGED
1081
                                                    colorB = LCOLOR_NOT_CHANGED
119 ghuddy 1082
 
4028 dpurdie 1083
                                                    changeType = rsQry("change_type")
119 ghuddy 1084
 
4028 dpurdie 1085
                                                    Select Case changeType
1086
                                                        Case "U"
1087
                                                            colorA = LCOLOR_CHANGED
1088
                                                            colorB = LCOLOR_CHANGED
1089
                                                        Case "UW"
1090
                                                            colorA = LCOLOR_CHANGED
1091
                                                            colorB = LCOLOR_CHANGED
1092
                                                            btnMerge = LIMG_MERGE_WARN
1093
                                                        Case "UR"
1094
                                                            colorA = LCOLOR_RIPPLED
1095
                                                            colorB = LCOLOR_RIPPLED
1096
                                                        Case "A"
1097
                                                            colorA = LCOLOR_BLANK
1098
                                                        Case "R"
1099
                                                            colorB = LCOLOR_BLANK
1100
                                                    End Select
119 ghuddy 1101
 
4028 dpurdie 1102
                                                    Call GetDiffStateIcon ( changeType, ChangeTypeIcon )
119 ghuddy 1103
 
4028 dpurdie 1104
                                                    If changeType = "U" OR changeType = "UW" OR changeType = "UR" Then
1105
                                                        Dim MajorA, MajorB, MinorA, MinorB, PatchA, PatchB, BuildA, BuildB, pos, pkgVersionA, pkgVersionB, majMinA, majMinB
1106
                                                        MajorA = NULL
1107
                                                        MajorB = NULL
1108
                                                        MinorA = NULL
1109
                                                        MinorB = NULL
119 ghuddy 1110
 
4028 dpurdie 1111
                                                        pkgVersionA = rsQry("pkg_version_a")
1112
                                                        pkgVersionB = rsQry("pkg_version_b")
119 ghuddy 1113
 
4028 dpurdie 1114
                                                        PatchA = rsQry("patch_number_a")
1115
                                                        PatchB = rsQry("patch_number_b")
1116
                                                        BuildA = rsQry("build_number_a")
1117
                                                        BuildB = rsQry("build_number_b")
119 ghuddy 1118
 
1119
 
4028 dpurdie 1120
                                                        ' Find the first occurence of the dot in package version A
1121
                                                        pos = InStr(pkgVersionA, ".")
1122
                                                        If pos <> 0 Then
1123
                                                            ' Extract the Major Version for A
1124
                                                            MajorA = Mid(pkgVersionA, 1, pos - 1)
1125
                                                            ' Delete the Major Version Value from the string to get the minor and patch version
1126
                                                            pkgVersionA = Mid(pkgVersionA, pos + 1, Len(pkgVersionA))
1127
                                                            ' Find the second occurence of the dot in package version A
1128
                                                            pos = InStr(pkgVersionA, ".")
1129
                                                            ' Extract the Minor Version for A
1130
                                                            If pos <> 0 Then
1131
                                                                MinorA = Mid(pkgVersionA, 1, pos - 1)
1132
                                                            End If
1133
                                                        End If
119 ghuddy 1134
 
4028 dpurdie 1135
                                                        ' Find the first occurence of the dot in package version B
1136
                                                        pos = InStr(pkgVersionB, ".")
1137
                                                        If pos <> 0 Then
1138
                                                            ' Extract the Major Version for B
1139
                                                            MajorB = Mid(pkgVersionB, 1, pos - 1)
1140
                                                            ' Delete the Major Version Value from the string to get the minor and patch version
1141
                                                            pkgVersionB = Mid(pkgVersionB, pos + 1, Len(pkgVersionB))
1142
                                                            ' Find the second occurence of the dot in package version B
1143
                                                            pos = InStr(pkgVersionB, ".")
1144
                                                            ' Extract the Minor Version for B
1145
                                                            If pos <> 0 Then
1146
                                                                MinorB = Mid(pkgVersionB, 1, pos - 1)
1147
                                                            End If
1148
                                                        End If
119 ghuddy 1149
 
4028 dpurdie 1150
                                                        If MajorA = MajorB Then
1151
                                                            If MinorA = MinorB Then
1152
                                                                If IsNumeric(PatchA) AND IsNumeric(PatchB) Then
1153
                                                                    If CInt(PatchB) > CInt(PatchA) Then
1154
                                                                        btnMerge = LIMG_MERGE_WARN
1155
                                                                    Else
1156
                                                                        btnMerge = LIMG_MERGE
1157
                                                                    End If
1158
                                                                End If
1159
                                                            Else
1160
                                                                If IsNumeric(MinorA) AND IsNumeric(MinorB) Then
1161
                                                                    If CInt(MinorB) > CInt(MinorA) Then
1162
                                                                        btnMerge = LIMG_MERGE_WARN
1163
                                                                    Else
1164
                                                                        btnMerge = LIMG_MERGE
1165
                                                                    End If
1166
                                                                End If
1167
                                                            End If
1168
                                                        Else
1169
                                                            If IsNumeric(MajorA) AND IsNumeric(MajorB) Then
1170
                                                                If     CInt(MajorB) > CInt(MajorA) Then
1171
                                                                    btnMerge = LIMG_MERGE_WARN
1172
                                                                Else
1173
                                                                    btnMerge = LIMG_MERGE
1174
                                                                End If
1175
                                                            End If
1176
                                                        End If
1177
                                                    End If
119 ghuddy 1178
 
4028 dpurdie 1179
                                                    ' -------- FILTERS RIPPLE BUILDS WHEN CHECKED -----------------
1180
                                                    If NOT (GetIsDiffFilterChecked(enumDB_NUM_DIFF_RIPPLE) = "checked" AND changeType = "UR") THEN
119 ghuddy 1181
 
4028 dpurdie 1182
                                                        ' -------- GROUP BY BASE VIEW  -----------------
1183
                                                        If CDbl(currView_id) <> CDbl(rsQry("view_id")) Then%>
1184
                                                            <tr>
1185
                                                                <td valign="top" nowrap class="form_ttl"><b><%=rsQry("view_name")%></b></td>
1186
                                                                <td class="form_ttl">&nbsp;</td>
1187
                                                                <td class="form_ttl">&nbsp;</td>
1188
                                                                <td class="form_ttl">&nbsp;</td>
1189
                                                                <td class="form_ttl">&nbsp;</td>
1190
                                                                <td class="form_ttl">&nbsp;</td>
1191
                                                            </tr>
1192
                                                            <%
1193
                                                            currView_id = CDbl(rsQry("view_id"))
1194
                                                        End If
1195
                                                        ' -------- END GROUP ------------------------
1196
                                                        %>
1197
                                                        <%
1198
                                                        'Determine if we are dealing with a PV_ID that we have already encountered and displayed as a pending addition
1199
                                                        'If we are, we do not need to display anything more about it, so skip the row.
1200
                                                        ' NOTE. the result set is sorted by change type (see releasediff.sql) such that if there are multiple entries
1201
                                                        '         for the same PV_ID, they are sorted in the following order: unchanged, additions, removals, updates.
1202
                                                        '         This is important to the row skip filtering carried out below.
1203
                                                        Dim skipRow
1204
                                                        If rsQry("pv_id_a") Then
1205
                                                            skipRow = pendingAdditions.Exists(CStr(rsQry("pv_id_a")))
1206
                                                        Else
1207
                                                            skipRow = FALSE
1208
                                                        End If
1209
                                                        %>
1210
                                                        <%If NOT skipRow Then%>
1211
                                                            <tr>
1212
                                                                <td class="body_row" nowrap>
1213
                                                                    <DIV id="PVA<%=rowId%>" style="background:<%=colorA%>; padding:5px;">
1214
                                                                        <%=rsQry("pkg_name_a") &" "& rsQry("pkg_version_a")%>
1215
                                                                    </DIV>
1216
                                                                    <input type="hidden" id="UNDOCOLORA_<%=rowId%>" value="<%=colorA%>">
1217
                                                                </td>
1218
                                                                <td bgcolor="#F5F5F5">
1219
                                                                    <%If objRelCollectorB.Item("official") <> "Y" Then%>
1220
                                                                        <DIV id="IMGMERGE<%=rowId%>" <%If (changeType = "A")  OR IsNull( changeType ) Then%>style="display:none;"<%End If%>><a href="javascript:;" onClick="MergePackage( '<%=rsQry("pv_id_a")%>', '<%=rsQry("pv_id_b")%>', '<%=rowId%>' );"><%=btnMerge%></a></DIV>
1221
                                                                    <%End If%>
1222
                                                                </td>
1223
                                                                <td bgcolor="#E4E9EC">
1224
                                                                    <DIV id="IMGSTATE<%=rowId%>" ><%=ChangeTypeIcon%></DIV>
1225
                                                                    <input type="hidden" id="CHANGETYPE_<%=rowId%>" value="<%=changeType%>">
1226
                                                                </td>
1227
                                                                <td bgcolor="#F5F5F5">
1228
                                                                    <%If objRelCollectorB.Item("official") <> "Y" Then%>
1229
                                                                        <DIV id="IMGREMOVE<%=rowId%>" <%If changeType = "R" Then%>style="display:none;"<%End If%>><a href="javascript:;" onClick="RemovePackage( '<%=rsQry("pv_id_a")%>', '<%=rsQry("pv_id_b")%>', '<%=rowId%>' );"><%=btnRemove%></a></DIV>
1230
                                                                    <%End If%>
1231
                                                                </td>
1232
                                                                <td class="body_row" nowrap>
1233
                                                                    <DIV id="PVB<%=rowId%>" style="background:<%=colorB%>; padding:5px;">
1234
                                                                        <%If IsNull(rsQry("pv_id_b")) Then %>
1235
                                                                            <%If Is_Pending_Sub(Request("rtagB"), rsQry("pv_id_a")) Then%>
1236
                                                                                (removal pending<%=Quick_Help("RemovalPending")%>)
1237
                                                                            <%End If %>
1238
                                                                        <%Else%>
1239
                                                                            <%=rsQry("pkg_name_b") &" "& rsQry("pkg_version_b")%>
1240
                                                                            <%If Is_Pending_Add(Request("rtagB"), rsQry("pv_id_b")) Then%>
1241
                                                                                (addition pending<%=Quick_Help("AdditionPending")%>)
1242
                                                                                <% 'Add this pending addition to the dictionary so that we can filter out REMOVED entries
1243
                                                                                    'with identical PV_ID's that we might encounter further on in the result set
1244
                                                                                If NOT pendingAdditions.Exists(rsQry("pv_id_b")) Then
1245
                                                                                    pendingAdditions.Add CStr(rsQry("pv_id_b")), CStr(rsQry("pkg_version_b"))
1246
                                                                                End If%>
1247
                                                                            <%ElseIf Is_Pending_Sub(Request("rtagB"), rsQry("pv_id_b")) Then%>
1248
                                                                                (removal pending<%=Quick_Help("RemovalPending")%>)
1249
                                                                            <%End If %>
1250
                                                                        <%End If %>
1251
                                                                    </DIV>
1252
                                                                    <input type="hidden" id="UNDOCOLORB_<%=rowId%>" value="<%=colorB%>">
1253
                                                                    <input type="hidden" name="addpkg" id="ADDPKG_<%=rowId%>" value="">
1254
                                                                    <input type="hidden" name="removepkg" id="REMOVEPKG_<%=rowId%>" value="">
1255
                                                                    <input type="hidden" id="UNDOPKG_<%=rowId%>" value="<%=rsQry("pkg_name_b") &" "& rsQry("pkg_version_b")%>">
1256
                                                                </td>
1257
                                                                <td bgcolor="#F5F5F5">
1258
                                                                    <DIV id="IMGUNDO<%=rowId%>" style="display:none;" >
1259
                                                                        <a href="javascript:;" onClick="UndoPackage( '<%=rowId%>' );"><%=LIMG_UNDO%></a>
1260
                                                                    </DIV>
1261
                                                                </td>
1262
                                                            </tr>
1263
                                                        <%End If %>
119 ghuddy 1264
 
4028 dpurdie 1265
                                                        <%
1266
                                                        If genReport AND NOT skipRow  Then
1267
                                                            If rsQry("pv_id_a") Then
1268
                                                                Set rsQryCommentsA = OraDatabase.DbCreateDynaset( "SELECT COMMENTS FROM PACKAGE_VERSIONS WHERE PV_ID="& rsQry("pv_id_a"), cint(0))
1269
                                                            End If
119 ghuddy 1270
 
4028 dpurdie 1271
                                                            If rsQry("pv_id_b") Then
1272
                                                                Set rsQryCommentsB = OraDatabase.DbCreateDynaset( "SELECT COMMENTS FROM PACKAGE_VERSIONS WHERE PV_ID="& rsQry("pv_id_b"), cint(0))
1273
                                                            End If
119 ghuddy 1274
 
4028 dpurdie 1275
                                                            pkgA = rsQry("pkg_name_a")
1276
                                                            pkgB = rsQry("pkg_name_b")
119 ghuddy 1277
 
4028 dpurdie 1278
                                                            If pkgA <> "" then
1279
                                                                pkgname = pkgA
1280
                                                            Else
1281
                                                                pkgname = pkgB
1282
                                                            End If
119 ghuddy 1283
 
4028 dpurdie 1284
                                                            If changeType = "U" OR  changeType = "UW" Then
1285
                                                                ChangeASource = false
1286
                                                                ChangeAUpdate = false
1287
                                                                ChangeBSource = false
1288
                                                                ChangeBUpdate = false
119 ghuddy 1289
 
4028 dpurdie 1290
                                                                'NewTextFile.WriteLine("<br><b><font face="&chr(34)&"arial"&chr(34)&">"&pkgname&"</font></b>")
1291
                                                                NewTextFile.Write("<a href=""javascript:;"" class=""body_scol"" onClick=""toggleSPAN('"& rowId &"');"">"& pkgname &"</a>")
1292
                                                                NewTextFile.WriteLine("<DIV class=divPkgInfo id=""spanPkgInfo"& rowId &""" name=""spanPkgInfo"" style=""display:none;"">")
1293
                                                                NewTextFile.Write(rsQryA("rtag_name")&" uses: "&rsQry("pkg_version_a")&" (")
1294
                                                                Call Release(rsQry("pv_id_a"))
1295
                                                                NewTextFile.WriteLine(")<br>")
1296
                                                                NewTextFile.Write(rsQryB("rtag_name")&" uses: "&rsQry("pkg_version_b")&" (")
1297
                                                                Call Release(rsQry("pv_id_b"))
1298
                                                                NewTextFile.WriteLine(")<br>")
119 ghuddy 1299
 
4028 dpurdie 1300
                                                                a = rsQry("pv_id_a")
1301
                                                                b = rsQry("pv_id_b")
1302
                                                                c = rsQry("pv_id_a")
1303
                                                                d = rsQry("pv_id_b")
119 ghuddy 1304
 
4028 dpurdie 1305
                                                                Set pvCollectionA = CreateObject("Scripting.Dictionary")
1306
                                                                Set pvCollectionB = CreateObject("Scripting.Dictionary")
1307
                                                                On Error Resume Next
1308
                                                                While CLng(a) <> CLng(b) and NOT errormsg
119 ghuddy 1309
 
4028 dpurdie 1310
                                                                    'NewTextFile.WriteLine("A: "&a)
1311
                                                                    'NewTextFile.WriteLine("B: "&b)
1312
                                                                    pvCollectionA.Add CStr(a), Empty
1313
                                                                    pvCollectionB.Add CStr(b), Empty
1314
                                                                    If CLng(a) > CLng(b) Then
1315
                                                                        'NewTextFile.WriteLine("TestA")
1316
                                                                        Call LastPvIdA(a)
1317
                                                                    ElseIf CLng(b) > CLng(a) Then
1318
                                                                        'NewTextFile.WriteLine("TestB")
1319
                                                                        Call LastPvIdB(b)
1320
                                                                    End If
1321
                                                                Wend
119 ghuddy 1322
 
4028 dpurdie 1323
                                                                Set pvCollectionA = Nothing
1324
                                                                Set pvCollectionB = Nothing
119 ghuddy 1325
 
4028 dpurdie 1326
                                                                Call pkg_Version(a)
1327
                                                                NewTextFile.Write("Common PARENT package version: "&pkgversion&" (")
1328
                                                                Call Release(a)
1329
                                                                NewTextFile.WriteLine(")<br><br>")
1330
                                                                NewTextFile.WriteLine()
1331
                                                                NewTextFile.WriteLine("<b>"&rsQryA("rtag_name")&"</b>")
119 ghuddy 1332
 
4028 dpurdie 1333
                                                                If pkgversion <> rsQry("pkg_version_a") Then
1334
                                                                    NewTextFile.WriteLine("<blockquote><b><i>Versions between "& pkgversion &" and "& rsQry("pkg_version_a")&"</i></b></blockquote>")
119 ghuddy 1335
 
4028 dpurdie 1336
                                                                    If errormsg Then
1337
                                                                        NewTextFile.WriteLine("Error determining root!<br>")
1338
                                                                        NewTextFile.WriteLine()
1339
                                                                    End If
119 ghuddy 1340
 
4028 dpurdie 1341
                                                                    source_change = false
119 ghuddy 1342
 
4028 dpurdie 1343
                                                                    While CLng(a) <> CLng(c) and NOT errormsg
1344
                                                                        Call Comments(c)
1345
                                                                        If scFlag = TRUE Then
1346
                                                                            Call GetFixedIssues(c)
1347
                                                                        End If
1348
                                                                        Call LastPvIdAa(c)
1349
                                                                        NewTextFile.WriteLine()
1350
                                                                    Wend
119 ghuddy 1351
 
4028 dpurdie 1352
                                                                    If source_change = false Then
1353
                                                                        NewTextFile.WriteLine("<blockquote><b><i>No source changes to "& rsQryA("rtag_name")&". Only Rippled Builds.</i></b></blockquote><br>")
1354
                                                                        ChangeASource = true
1355
                                                                    End If
119 ghuddy 1356
 
4028 dpurdie 1357
                                                                    Call pkg_Version(b)
1358
                                                                    NewTextFile.WriteLine()
1359
                                                                    NewTextFile.WriteLine()
119 ghuddy 1360
 
4028 dpurdie 1361
                                                                ElseIf pkgversion = rsQry("pkg_version_a") Then
1362
                                                                    NewTextFile.WriteLine("<blockquote><b><i>No updates to "& rsQryA("rtag_name")&"</i></b></blockquote><br>")
1363
                                                                    ChangeAUpdate = true
1364
                                                                    NewTextFile.WriteLine()
1365
                                                                End If
119 ghuddy 1366
 
4028 dpurdie 1367
                                                                NewTextFile.WriteLine("<b>"&rsQryB("rtag_name")&"</b>")
119 ghuddy 1368
 
4028 dpurdie 1369
                                                                If pkgversion <> rsQry("pkg_version_b") Then
1370
                                                                    NewTextFile.WriteLine("<blockquote><b><i>Versions between "& pkgversion &" and "& rsQry("pkg_version_b")&"</i></b></blockquote>")
119 ghuddy 1371
 
4028 dpurdie 1372
                                                                    If errormsg Then
1373
                                                                        NewTextFile.WriteLine("Error determining root!<br>")
1374
                                                                        NewTextFile.WriteLine()
1375
                                                                    End If
119 ghuddy 1376
 
4028 dpurdie 1377
                                                                    source_change = false
119 ghuddy 1378
 
4028 dpurdie 1379
                                                                    While CLng(b) <> CLng(d) and NOT errormsg
1380
                                                                        Call Comments(d)
1381
                                                                        If scFlag = TRUE Then
1382
                                                                            Call GetFixedIssues(d)
1383
                                                                        End If
1384
                                                                        Call LastPvIdBb(d)
1385
                                                                        NewTextFile.WriteLine()
1386
                                                                    Wend
119 ghuddy 1387
 
4028 dpurdie 1388
                                                                    If source_change = false Then
1389
                                                                        NewTextFIle.WriteLine("<blockquote><b><i>No source changes to "& rsQryB("rtag_name")&". Only Rippled Builds.</i></b></blockquote><br>")
1390
                                                                        ChangeBSource = true
1391
                                                                    End If
119 ghuddy 1392
 
4028 dpurdie 1393
                                                                ElseIf pkgversion = rsQry("pkg_version_b") Then
1394
                                                                    NewTextFile.WriteLine("<blockquote><b><i>No updates to "& rsQryB("rtag_name")&"</i></b></blockquote><br>")
1395
                                                                    ChangeBUpdate = true
1396
                                                                    NewTextFile.WriteLine()
1397
                                                                End If
119 ghuddy 1398
 
4028 dpurdie 1399
                                                                NewTextFile.WriteLine("</DIV>")
119 ghuddy 1400
 
4028 dpurdie 1401
                                                                If ChangeASource Then
1402
                                                                    If ChangeBSource Then
1403
                                                                        NewTextFile.WriteLine("<blockquote><table width=""100%"" border=""0"">  <tr><td width=""50%""><b>"& Ucase(rsQryA("rtag_name")) &": .</b class=changesnone> Ripple Builds Only.</td><td width=""50%""><b>"& Ucase(rsQryB("rtag_name")) &": </b class=changesnone> Ripple Builds Only.</td>  </tr></table></blockquote>")
1404
                                                                    ElseIf ChangeBUpdate Then
1405
                                                                        NewTextFile.WriteLine("<blockquote><table width=""100%"" border=""0"">  <tr><td width=""50%""><b>"& Ucase(rsQryA("rtag_name")) &": </b><span class=changesnone>Ripple Builds Only.</span></td><td width=""50%""><b>"& Ucase(rsQryB("rtag_name")) &": </b><span class=changesnone> No Updates.</span></td>  </tr></table></blockquote>")
1406
                                                                    ElseIf NOT ChangeBSource AND NOT ChangeBUpdate Then
1407
                                                                        NewTextFile.WriteLine("<blockquote><table width=""100%"" border=""0""><tr><td width=""50%""><b>"& Ucase(rsQryA("rtag_name")) &":</b> <span class=changesnone>Ripple Builds Only.</span></td>    <td width=""50%"">    <b>"& Ucase(rsQryB("rtag_name")) &":</b> <b class=changesb> SOURCE CODE CHANGES.</b></td></tr></table></blockquote>")
1408
                                                                    End If
1409
                                                                End If
119 ghuddy 1410
 
4028 dpurdie 1411
                                                                If ChangeBSource Then
1412
                                                                    If NOT ChangeAUpdate Then
1413
                                                                        If NOT ChangeASource AND NOT ChangeBUpdate Then
1414
                                                                            NewTextFile.WriteLine("<blockquote><table width=""100%"" border=""0"">  <tr><td width=""50%""><b>"& Ucase(rsQryA("rtag_name")) &": </b><b class=changesa> SOURCE CODE CHANGES</b>.</td>    <td width=""50%""> <b>"& Ucase(rsQryB("rtag_name")) &":</b> <span class=changesnone> Ripple Builds Only.</span></td>  </tr></table></blockquote>")
1415
                                                                        End If
1416
                                                                    End If
1417
                                                                End If
119 ghuddy 1418
 
4028 dpurdie 1419
                                                                If NOT ChangeASource Then
1420
                                                                    If NOT ChangeAUpdate Then
1421
                                                                        If NOT ChangeBSource AND NOT ChangeBUpdate Then
1422
                                                                            NewTextFile.WriteLine("<blockquote><table width=""100%"" border=""0"">  <tr><td width=""50%""><b>"& Ucase(rsQryA("rtag_name")) &":</b> <b class=changesa> SOURCE CODE CHANGES.</b></td><td width=""50%""><b>"& Ucase(rsQryB("rtag_name")) &":</b><b class=changesb> SOURCE CODE CHANGES.</b></td></tr></table></blockquote>")
1423
                                                                        ElseIf ChangeBUpdate Then
1424
                                                                            NewTextFile.WriteLine("<blockquote><table width=""100%"" border=""0"">  <tr><td width=""50%""><b>"& Ucase(rsQryA("rtag_name")) &":</b> <b class=changesa> SOURCE CODE CHANGES.</b></td> <td width=""50%""><b>"& Ucase(rsQryB("rtag_name")) &":</b><span class=changesnone> No Updates.</span></td>  </tr></table></blockquote>")
1425
                                                                        End If
1426
                                                                    ElseIf ChangeAUpdate Then
1427
                                                                        If NOT ChangeBSource AND NOT ChangeBUpdate Then
1428
                                                                            NewTextFile.WriteLine("<blockquote><table width=""100%"" border=""0"">  <tr><td width=""50%""><b>"& Ucase(rsQryA("rtag_name")) &":</b> <span class=changesnone>No Updates.</span></td> <td width=""50%"">  <b></font>"& Ucase(rsQryB("rtag_name")) &":</b><b class=changesb> SOURCE CODE CHANGES.</b></td></tr></table></blockquote>")
1429
                                                                        ElseIf ChangeBSource Then
1430
                                                                            NewTextFile.WriteLine("<blockquote><table width=""100%"" border=""0"">  <tr><td width=""50%""><b>"& Ucase(rsQryA("rtag_name")) &":</b> <span class=changesnone>No Updates.</span></td> <td width=""50%""> </font><b>"& Ucase(rsQryB("rtag_name")) &":</b> <span class=changesnone> Ripple Builds Only.</span></td>  </tr></table></blockquote>")
1431
                                                                        End If
1432
                                                                    End If
1433
                                                                End If
119 ghuddy 1434
 
4028 dpurdie 1435
                                                            End If  'changeType = "U" OR  changeType = "UW"
119 ghuddy 1436
 
4028 dpurdie 1437
                                                        End If  'email
119 ghuddy 1438
 
4028 dpurdie 1439
                                                    End If 'NOT (GetIsDiffFilterChecked(enumDB_NUM_DIFF_RIPPLE) = "checked" AND changeType = "UR")
119 ghuddy 1440
 
4028 dpurdie 1441
                                                    rsQry.MoveNext
1442
                                                WEnd
119 ghuddy 1443
 
4028 dpurdie 1444
                                                rsQry.Close
1445
                                                Set rsQry = Nothing
1446
                                                %>
1447
                                                <%
1448
                                                Call Footer()
1449
                                                NewTextFile.Close
1450
                                                Set NewTextFile=Nothing
1451
                                                %>
1452
                                            </table>
1453
                                            <br>
1454
                                        <%Else%>
1455
                                            <br>
1456
                                            <%
1457
                                            If (parRtagB <> "") Then
1458
                                                Call Messenger ( "Select <b>Release A</b> to compare.", 3, "100%" )
1459
                                            ElseIf (parRtagA <> "") Then
1460
                                                Call Messenger ( "Select <b>Release B</b> to compare.", 3, "100%" )
1461
                                            Else
1462
                                                Call Messenger ( "Select <b>Release A</b> and <b>Release B</b> to compare.", 3, "100%" )
1463
                                            End If
1464
                                            %>
1465
                                        <%End If%>
1466
                                    </td>
1467
                                    <td width="1%" background="images/lbox_bgside_white.gif">&nbsp;</td>
1468
                                </tr>
1469
                                <tr>
1470
                                    <td width="1%" background="images/lbox_bg_blue.gif" valign="bottom"><img src="images/lbox_bl_cnr_b.gif" width="13" height="13"></td>
1471
                                    <td background="images/lbox_bg_blue.gif"></td>
1472
                                    <td width="1%" background="images/lbox_bg_blue.gif" valign="bottom" align="right"><img src="images/lbox_br_cnr_b.gif" width="13" height="13"></td>
1473
                                </tr>
1474
                            </table>
1475
                        </td>
1476
                    </tr>
1477
                </table>
1478
                <!-- DIFF END ---------------------------------------------------->
1479
            </td>
1480
            <td valign="top" background="images/bg_home_orange.gif">
119 ghuddy 1481
 
4028 dpurdie 1482
                <!-- SELECT RELEASE B ---------------------------------------------->
1483
                <br>
1484
                <table width="100%"  border="0" cellspacing="10" cellpadding="0">
1485
                    <tr>
1486
                        <td align="left" class="body_col">
1487
                            <img src="images/i_rtag_open_mode.gif" border="0" align="absmiddle" width="15" height="13">&nbsp;Select Release B<hr size="1px" color="Olive" noshade>
1488
                        </td>
1489
                    </tr>
1490
                    <tr>
1491
                        <td align="left">
1492
                            <select name="projB" class="form_item" onChange="RequestReleaseCombo( '?proj_id='+ this.value, FormName.rtagB );">
1493
                                <option value="">-- Select Project --</option>
1494
                                <%
1495
                                OraDatabase.Parameters.Add "PROJ_ID",     objRelCollectorB.Item("proj_id"),    ORAPARM_INPUT, ORATYPE_NUMBER
119 ghuddy 1496
 
4028 dpurdie 1497
                                Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ProjectsCombo.sql"), cint(0))
119 ghuddy 1498
 
4028 dpurdie 1499
                                OraDatabase.Parameters.Remove "PROJ_ID"
119 ghuddy 1500
 
4028 dpurdie 1501
                                While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
1502
                                    <option value="<%=rsQry("proj_id")%>" <%=rsQry("selected")%>><%=rsQry("proj_name")%></option>
1503
                                    <%rsQry.MoveNext
1504
                                WEnd
119 ghuddy 1505
 
4028 dpurdie 1506
                                rsQry.Close
1507
                                Set rsQry = Nothing
1508
                                %>
1509
                            </select>
1510
                        </td>
1511
                    </tr>
1512
                    <tr>
1513
                        <td align="left">
1514
                            <select name="rtagB" id="rtagB" class="form_item">
1515
                                <%
1516
                                OraDatabase.Parameters.Add "PROJ_ID",     objRelCollectorB.Item("proj_id"),    ORAPARM_INPUT,  ORATYPE_NUMBER
1517
                                OraDatabase.Parameters.Add "RTAG_ID",     objRelCollectorB.Item("rtag_id"),    ORAPARM_INPUT, ORATYPE_NUMBER
119 ghuddy 1518
 
4028 dpurdie 1519
                                Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ReleasesCombo.sql"), cint(0))
119 ghuddy 1520
 
4028 dpurdie 1521
                                OraDatabase.Parameters.Remove "PROJ_ID"
1522
                                OraDatabase.Parameters.Remove "RTAG_ID"
119 ghuddy 1523
 
4028 dpurdie 1524
                                While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
1525
                                        <option value="<%=rsQry("rtag_id")%>" <%=rsQry("selected")%>><%=rsQry("rtag_name")%></option>
1526
                                    <%rsQry.MoveNext
1527
                                WEnd
119 ghuddy 1528
 
4028 dpurdie 1529
                                rsQry.Close
1530
                                Set rsQry = Nothing
1531
                                %>
1532
                            </select>
1533
                        </td>
1534
                    </tr>
1535
                    <%If (parRtagB <> "") Then%>
1536
                        <tr>
1537
                            <td align="left"><a href="dependencies.asp?rtag_id=<%=parRtagB%>" class="body_txt_drk">Go To Release B &raquo;</a></td>
1538
                        </tr>
1539
                    <%End If%>
1540
                </table>
1541
                <!-- SELECT RELEASE B END ---------------------------------------------->
1542
            </td>
1543
        </tr>
1544
        <tr>
1545
            <td valign="bottom" align="center" background="images/bg_home_orange.gif">
1546
                <img src="images/img_vtree.gif" width="86" height="99" vspace="20" hspace="30">
1547
            </td>
1548
            <td valign="bottom" background="images/bg_home_orange.gif" align="center">
1549
                <img src="images/img_vtree.gif" width="86" height="99" vspace="20" hspace="30">
1550
            </td>
123 ghuddy 1551
      </tr>
4028 dpurdie 1552
    </table>
119 ghuddy 1553
</form>
1554
<!-- FOOTER -->
1555
<!--#include file="_footer.asp"-->
1556
<%
123 ghuddy 1557
If email Then
4028 dpurdie 1558
    Dim LocalPath
1559
    LocalPath = Server.MapPath("docs\compareReleases_"&objAccessControl.UserName&".html")
119 ghuddy 1560
 
4028 dpurdie 1561
    Send_Email    "Release Manager Notification",_
1562
                     adminEmail, _
1563
                     objAccessControl.UserEmail,_
1564
                     "Release Comparisons from Release Manager", _
1565
                     "Your requested report...",_
1566
                     LocalPath
123 ghuddy 1567
End If
119 ghuddy 1568
%>
1569
</body>
1570
</html>
1571
<%
1572
Call Destroy_All_Objects
1573
%>