%@LANGUAGE="VBSCRIPT"%>
<%
'=====================================================
'|
'| diff.asp
'|
'=====================================================
%>
<%
Option explicit
' Good idea to set when using redirect
Response.Expires = 0 ' always load the page, dont store
%>
<%
'To enable the script timeout to 20 mins
Server.ScriptTimeout=1200
%>
<%
'------------ ACCESS CONTROL ------------------
%>
<%
'------------ Variable Definition -------------
Dim rsQry
Dim objRelCollectorA
Dim objRelCollectorB
Dim parRtagA
Dim parRtagB
Dim dDiffFilter
Dim colorA, colorB, ChangeTypeIcon
Dim btnMerge, btnRemove
Dim rowId
Dim email
Dim genReport
Dim reportPath
Dim FSO
Dim NewTextFile
Dim pkgA, pkgB, pkgname, delimiter, rsQryA, rsQryB, rsQryCommentsA, rsQryCommentsB, sqlstrA, counterA, sqlstrB, counterB
Dim SSsql, retVal, rsCQ, DEVIiss
Dim a, b, c, d, pkgversion, errormsg, ChangeASource, ChangeAUpdate, ChangeBSource, ChangeBUpdate, pvCollectionA, pvCollectionB
Dim source_change, scFlag
Dim changeType
Dim pkgSeen
Dim isaSdk ' Target is an SDK based package
Dim isMergable ' Target package can be modified
'------------ Constants Declaration -----------
Const LIMG_PENDING = ""
Const LIMG_UNCHANGED = ""
Const LIMG_UPDATED = ""
Const LIMG_OUTDATED = ""
Const LIMG_RIPPLED = ""
Const LIMG_ADDED = ""
Const LIMG_REMOVED = ""
Const LIMG_FILTER_ON = ""
Const LIMG_FILTER_OFF = ""
Const LIMG_DROP_DOWN_ARROW = ""
Const LCOLOR_NOT_CHANGED = "#F5F5F5"
Const LCOLOR_CHANGED = "#d2f7c9"
Const LCOLOR_OUTDATED = "#ffd292"
Const LCOLOR_RIPPLED = "#D8F8F8"
Const LCOLOR_BLANK = "#FFFFFF"
Const LIMG_MERGE = ""
Const LIMG_MERGE_WARN = ""
Const LIMG_REMOVE = ""
Const LIMG_UNDO = ""
Const LIMG_SDK = ""
'------------ Variable Init -------------------
parRtagA = Request("rtagA")
parRtagB = Request("rtagB")
Set objRelCollectorA = CreateObject("Scripting.Dictionary")
Set objRelCollectorB = CreateObject("Scripting.Dictionary")
Set dDiffFilter = CreateObject("Scripting.Dictionary")
Set pkgSeen = CreateObject("Scripting.Dictionary")
'----------------------------------------------
If Request("btn") = "Mail Me Report" Then
email = true
genReport = true
End If
If Request("btn") = "Show Me Report" Then
genReport = true
End If
If genReport Then
reportPath = Server.MapPath("docs\compareReleases_"&objAccessControl.UserName&".html")
End If
'--------------------------------------------------------------------------------------------------------------------------
Sub GetDiffFilterValues ( outDepFilter )
Dim FilterVal, aFilterValues
If Request.Cookies(enum_RELMGR_COOKIE_DOMAIN)(COOKIE_HIDE_DIFF_FILTER) <> "" Then
aFilterValues = Split( Replace( Request.Cookies(enum_RELMGR_COOKIE_DOMAIN)(COOKIE_HIDE_DIFF_FILTER), " ", ""), ",")
For Each FilterVal In aFilterValues
outDepFilter.Item (CStr( FilterVal )) = ""
Next
End If
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub Javascript()
NewTextFile.WriteLine("")
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub GetFixedIssues(pv_id)
'
' Clearcase issues
'
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))
If sqlstrA.RecordCount <> 0 Then
NewTextFile.WriteLine()
NewTextFile.WriteLine("
Fixed ClearQuest Issues:
")
NewTextFile.WriteLine("
")
NewTextFile.WriteLine("
")
NewTextFile.WriteLine("
Issue Id
")
NewTextFile.WriteLine("
Summary
")
NewTextFile.WriteLine("
Issue Type
")
NewTextFile.WriteLine("
Priority
")
NewTextFile.WriteLine("
Status
")
NewTextFile.WriteLine("
")
For counterA=1 to sqlstrA.RecordCount
DEVIiss = "-1"
If Clng(sqlstrA("iss_db")) = Clng(enumCLEARQUEST_DEVI_ID) Then
DEVIiss = DEVIiss &","& sqlstrA("iss_id")
End If
SSsql = ReadFile( rootPath & "queries\cq_issues.sql" )
SSsql = Replace( SSsql, "/*enumCLEARQUEST_DEVI_ID*/", enumCLEARQUEST_DEVI_ID)
SSsql = Replace( SSsql, "/*DEVIiss*/", DEVIiss)
retVal = Get_CQ_Issues ( SSsql, rsCQ )
NewTextFile.WriteLine("
")
NewTextFile.WriteLine("
"&rsCQ("iss_num")&"
")
NewTextFile.WriteLine("
"&NewLine_To_BR ( To_HTML ( rsCQ("summary") ) )&"
")
NewTextFile.WriteLine("
"&rsCQ("issue_type")&"
")
NewTextFile.WriteLine("
"&rsCQ("priority")&"
")
NewTextFile.WriteLine("
"&rsCQ("Status")&"
")
NewTextFile.WriteLine("
")
sqlstrA.MoveNext
Next
sqlstrA.Close()
NewTextFile.WriteLine( "
")
End If
' Must also handle Jira Issues
On Error Resume Next
Dim issueInfo, el, key
Set issueInfo = CreateObject( "Scripting.Dictionary" )
Call getJiraIssueDetails(pv_id, issueInfo, 1)
If issueInfo.Count > 0 Then
' Table Header
NewTextFile.WriteLine()
NewTextFile.WriteLine("
Jira Issues:
")
NewTextFile.WriteLine("
")
NewTextFile.WriteLine("
")
NewTextFile.WriteLine("
Issue Id
")
NewTextFile.WriteLine("
Summary
")
NewTextFile.WriteLine("
Issue Type
")
NewTextFile.WriteLine("
Priority
")
NewTextFile.WriteLine("
Status
")
NewTextFile.WriteLine("
Resolution
")
NewTextFile.WriteLine("
")
' Table Body
For Each key In issueInfo
Set el = issueInfo.item(key)
NewTextFile.WriteLine("
")
Set issueInfo = nothing
End If
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub LastPvIdA(a)
Dim qryA
Set qryA = OraDatabase.DbCreateDynaset("SELECT LAST_PV_ID FROM PACKAGE_VERSIONS WHERE PV_ID="&a, cint(0))
'If a <> qryA("last_pv_id") Then
a = qryA("last_pv_id")
'Else
' errormsg = true
'End If
If pvCollectionA.Exists(CStr(a)) Then
errormsg = true
Exit Sub
End If
qryA.Close()
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub LastPvIdB(b)
Dim qryB
Set qryB = OraDatabase.DbCreateDynaset("SELECT LAST_PV_ID FROM PACKAGE_VERSIONS WHERE PV_ID="&b, cint(0))
'If b <> qryB("last_pv_id") Then
b = qryB("last_pv_id")
'Else
' errormsg = true
'End If
If pvCollectionB.Exists(CStr(b)) Then
errormsg = true
Exit Sub
End If
qryB.Close()
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub pkg_Version(pv)
Dim qry
Set qry = OraDatabase.DbCreateDynaset("SELECT PKG_VERSION FROM PACKAGE_VERSIONS WHERE PV_ID="&pv, cint(0))
pkgversion = qry("pkg_version")
qry.Close()
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub LastPvIdAa(a)
Dim qryA
Set qryA = OraDatabase.DbCreateDynaset("SELECT LAST_PV_ID FROM PACKAGE_VERSIONS WHERE PV_ID="&a, cint(0))
c = qryA("last_pv_id")
qryA.Close()
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub LastPvIdBb(b)
Dim qryB
Set qryB = OraDatabase.DbCreateDynaset("SELECT LAST_PV_ID FROM PACKAGE_VERSIONS WHERE PV_ID="&b, cint(0))
d = qryB("last_pv_id")
qryB.Close()
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub Comments(Pv_Id)
Dim comments
Set comments = OraDatabase.DbCreateDynaset("SELECT COMMENTS, PKG_VERSION FROM PACKAGE_VERSIONS WHERE PV_ID="&Pv_id, cint(0))
scFlag = false
If comments("comments") <> "Rippled Build." Then
NewTextFile.WriteLine("
Version: "& comments("pkg_version")&"
")
If comments("comments") <> "" Then
NewTextFile.WriteLine("
Comments:
")
NewTextFile.WriteLine("
"& TextToHTML(comments("comments")) &"
")
source_change = true
scFlag = true
End If
End If
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub Release(pvId)
Dim release
Set release = OraDatabase.DbCreateDynaset("SELECT INSERT_STAMP FROM RELEASE_CONTENT WHERE PV_ID="&pvId, cint(0))
If release("insert_stamp") <> "" Then
NewTextFile.Write(release("insert_stamp"))
Else
NewTextFile.Write("Version Not Used.")
End If
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub Header()
NewTextFile.WriteLine("")
NewTextFile.WriteLine("")
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub Footer()
NewTextFile.WriteLine("")
NewTextFile.WriteLine("")
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub Styles()
NewTextFile.WriteLine("")
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Function GetIsDiffFilterInUseIcon()
GetIsDiffFilterInUseIcon = LIMG_FILTER_OFF & LIMG_DROP_DOWN_ARROW
If dDiffFilter.Count > 0 Then
GetIsDiffFilterInUseIcon = LIMG_FILTER_ON & LIMG_DROP_DOWN_ARROW
End If
End Function
'--------------------------------------------------------------------------------------------------------------------------
Function GetIsDiffFilterChecked( nFilterId )
If dDiffFilter.Exists ( CStr(nFilterId) ) Then
GetIsDiffFilterChecked = "checked"
End If
End Function
'---------------------------------------------------------------------------------------------------------------------------
Function Get_CQ_Issues ( SSsql, OOrsCQ )
On Error Resume Next
Set OOrsCQ = OraDatabase.DbCreateDynaset( SSsql, cint(0))
Get_CQ_Issues = Err.Number
End Function
'--------------------------------------------------------------------------------------------------------------------------
Public Function TextToHTML ( sString )
Dim mString
If (sString = "") OR IsNull(sString) Then Exit Function
mString = Server.HTMLEncode( sString )
mString = Replace(mString, VBNewLine, " ")
TextToHTML = mString
End Function
'--------------------------------------------------------------------------------------------------------------------------
Sub GetFormDetails ( nSourceRtagId, ByRef outobjDetails )
Dim rsQry, query
' Exit if nSourceRtagId is empty
If nSourceRtagId = "" Then Exit Sub
OraDatabase.Parameters.Add "SOURCE_RTAG_ID", nSourceRtagId, ORAPARM_INPUT, ORATYPE_NUMBER
query = _
" SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME AS LOCATION, "&_
" rt.OFFICIAL, pr.PROJ_ID, rt.RTAG_ID"&_
" FROM RELEASE_TAGS rt,"&_
" PROJECTS pr"&_
" WHERE rt.PROJ_ID = pr.PROJ_ID"&_
" AND rt.RTAG_ID = :SOURCE_RTAG_ID"
Set rsQry = OraDatabase.DbCreateDynaset( query, ORADYN_DEFAULT )
OraDatabase.Parameters.Remove "SOURCE_RTAG_ID"
If rsQry.RecordCount > 0 Then
outobjDetails.Item ("location") = rsQry("location")
outobjDetails.Item ("official") = rsQry("official")
outobjDetails.Item ("proj_id") = rsQry("proj_id")
outobjDetails.Item ("rtag_id") = rsQry("rtag_id")
Else
Err.Raise 8, "Sub GetFormDetails in "& ScriptName, "Empty record set returned. nSourceRtagId="& nSourceRtagId
End If
rsQry.Close
Set rsQry = Nothing
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub GetDiffStateIcon( nDiffState, outIcon )
Select Case nDiffState
Case "U"
outIcon = LIMG_UPDATED
Case "UW"
outIcon = LIMG_OUTDATED
Case "A"
outIcon = LIMG_ADDED
Case "R"
outIcon = LIMG_REMOVED
Case "UR"
outIcon = LIMG_RIPPLED
Case "B"
outIcon = LIMG_UNCHANGED
Case Else
outIcon = ""
End Select
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Function Get_Record_Count ( SSsql )
Dim rsTemp
Set rsTemp = OraDatabase.DbCreateDynaset( "SELECT COUNT(*) as record_count FROM "& SSsql , cint(0))
If (NOT rsTemp.BOF) AND (NOT rsTemp.EOF) Then
Get_Record_Count = rsTemp("record_count")
Else
Get_Record_Count = 0
End If
rsTemp.Close
Set rsTemp = nothing
End Function
'--------------------------------------------------------------------------------------------------------------------------
Sub MergePackages ()
Dim aFullList, aAddPkgList, aRemovePkgList, dAddPkgList, dRemovePkgList, PvId
Dim OraParameter
Dim rc
Set dAddPkgList = CreateObject("Scripting.Dictionary")
Set dRemovePkgList = CreateObject("Scripting.Dictionary")
'--- Get Add Packages ---
' Get full list of "addpkg" parameter
aFullList = Split ( Replace( Request("addpkg"), " ", "" ), "," )
' Clean empty parameters
For Each PvId In aFullList
If PvId <> "" Then
dAddPkgList.Add CStr( PvId ), Empty
End If
Next
aFullList = NULL
aAddPkgList = dAddPkgList.Keys
'--- Get Remove Packages ---
' Get full list of "removepkg" parameter
aFullList = Split ( Replace( Request("removepkg"), " ", "" ), "," )
' Clean empty parameters
For Each PvId In aFullList
If PvId <> "" Then
dRemovePkgList.Add CStr( PvId ), Empty
End If
Next
aFullList = NULL
aRemovePkgList = dRemovePkgList.Keys
'-- Add package List to release --
OraDatabase.Parameters.Add "PV_ID", NULL, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "VIEW_ID", NULL, ORAPARM_BOTH, ORATYPE_NUMBER
OraDatabase.Parameters.Add "RTAG_A", Request("rtagA"), ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "RTAG_B", Request("rtagB"), ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "PROJB", objRelCollectorB.Item("proj_id"), ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "COMMENTS", "Merging from "& objRelCollectorA.Item("location") &" to "& objRelCollectorB.Item("location"), ORAPARM_INPUT, ORATYPE_VARCHAR2
OraDatabase.Parameters.Add "USER_ID", objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "OPERATION",NULL, ORAPARM_INPUT, ORATYPE_CHAR
Set OraParameter = OraDatabase.Parameters
On Error Resume Next
' Begin Database entry
objEH.TryORA ( OraSession )
'-- Add Packages --
OraParameter("OPERATION").Value = "A"
For Each PvId In aAddPkgList
OraParameter("PV_ID").Value = PvId
' DEVI-45275, Merge into Planned (pending) table instead of release_content table.
If Err.Number = 0 Then
OraDatabase.ExecuteSQL _
"BEGIN "&_
" :VIEW_ID := PK_RELEASE.GET_PACKAGE_VIEW ( :PV_ID, :RTAG_A ); "&_
" PK_PLANNED.MERGE_PACKAGE ( :PV_ID, :VIEW_ID, :RTAG_B, :USER_ID, :OPERATION ); "&_
"END;"
End If
Next
'-- Remove Packages --
If Err.Number = 0 Then
OraParameter("OPERATION").Value = "S"
For Each PvId In aRemovePkgList
OraParameter("PV_ID").Value = PvId
If Err.Number = 0 Then
' Does this PV_ID exist in the destination release's planned table?
rc = Get_Record_Count ("PLANNED pl WHERE pl.pv_id = " & PvId & " AND pl.rtag_id = " & Request("rtagB") )
If rc > 0 Then
' Given that merging now merges into pending, the merge page may be used to remove items that have
' previously been merged but have not yet been committed to the destination release.
OraDatabase.ExecuteSQL _
"BEGIN "&_
" PK_ENVIRONMENT.MAKE_REJECT ( :PV_ID, :RTAG_B, :USER_ID ); "&_
"END; "
Else
' DEVI-45275, Merge into Planned (pending) table instead of release_content table.
OraDatabase.ExecuteSQL _
"BEGIN "&_
" :VIEW_ID := PK_RELEASE.GET_PACKAGE_VIEW ( :PV_ID, :RTAG_B ); "&_
" PK_PLANNED.MERGE_PACKAGE ( :PV_ID, :VIEW_ID, :RTAG_B, :USER_ID, :OPERATION ); "&_
"END;"
End If
End If
Next
'-- Log Project Merge Action
If Err.Number = 0 Then
OraDatabase.ExecuteSQL _
"BEGIN LOG_PROJECT_ACTION ( :PROJB, 'merge_release', :USER_ID, :COMMENTS, :RTAG_B ); END;"
End If
End If
objEH.CatchORA ( OraSession ) ' sets up LastOraFailed as appropriate
' NOTE, The Touch_Release stored procedure does a commit itself, so we should not do it unless all the ExecuteSQL's we
' have just performed, were successful
If objEH.LastOraFailed = FALSE Then
'-- Force package state recalculate
objEH.TryORA ( OraSession )
OraDatabase.ExecuteSQL _
"BEGIN "&_
" TOUCH_RELEASE ( :RTAG_B ); "&_
"END;"
objEH.CatchORA ( OraSession )
End If
Set OraParameter = Nothing
OraDatabase.Parameters.Remove "PV_ID"
OraDatabase.Parameters.Remove "VIEW_ID"
OraDatabase.Parameters.Remove "RTAG_A"
OraDatabase.Parameters.Remove "RTAG_B"
OraDatabase.Parameters.Remove "USER_ID"
OraDatabase.Parameters.Remove "PROJB"
OraDatabase.Parameters.Remove "COMMENTS"
OraDatabase.Parameters.Remove "OPERATION"
'Response.write " "& sAddPkgList &"-"& dAddPkgList.Count &"-"& UBound( aFullList )
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Function AddTrailingZeros(byval n, byval count)
if len(n) >= count then
AddTrailingZeros = n
exit function
end if
dim c, s, i
c = count - len(n)
for i = 1 to c
s = s & "0"
next
s = cstr(n) & s
AddTrailingZeros = s
End function
'--------------------------------------------------------------------------------------------------------------------------
'------------ RUN BEFORE PAGE RENDER ----------
If Request("btn") = "Exit" Then
Call OpenInWindow ( "index.asp" )
End If
' Get release details
Call GetFormDetails ( parRtagA, objRelCollectorA )
Call GetFormDetails ( parRtagB, objRelCollectorB )
setActiveProject (objRelCollectorB.Item("proj_id"))
isMergable = releaseIsMergable(objRelCollectorB.Item("official"))
If (Request("btn") = "Merge") AND isMergable Then
Call MergePackages ()
End If
' Redirect, simply so that the URL get some nice arguments
If Request("btn") = "Compare" Then
Call OpenInWindow ( ScriptName &"?rtagA="& parRtagA &"&rtagB="& parRtagB )
End If
If Request("btn") = "Swap Compare" Then
Call OpenInWindow ( ScriptName &"?rtagA="& parRtagB &"&rtagB="& parRtagA )
End If
If Request("btn") = "Refresh" Then
' Store filter in cookie
Response.Cookies(enum_RELMGR_COOKIE_DOMAIN)(COOKIE_HIDE_DIFF_FILTER) = Request("difilter")
Call OpenInWindow ( ScriptName &"?rtagA="& parRtagA &"&rtagB="& parRtagB )
End If
Call GetDiffFilterValues ( dDiffFilter )
'----------------------------------------------
Sub PanelA
%>
<%
Dim mergeMessage, mergeDisabled
mergeDisabled = " disabled"
If (parRtagA = "") Then
mergeMessage = "Select Release A"
ElseIf (parRtagB = "") Then
mergeMessage = "Select Release B"
ElseIf NOT isMergable Then
mergeMessage = "Release B cannot be modified"
Else
mergeDisabled = ""
End If
%>
<%=mergeMessage%>
>
<%
' Successfull Merge
If (Request("btn") = "Merge") Then
Call Messenger ( "Merge has completed successfully.", 3, "100%" )
End If
If genReport Then
Set FSO=Server.CreateObject("Scripting.FileSystemObject")
Set NewTextFile=FSO.CreateTextFile(reportPath, true)
Call Header()
End If
If (parRtagA <> "") AND (parRtagB <> "")Then%>
<%
OraDatabase.Parameters.Add "RTAG_A", parRtagA, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "RTAG_B", parRtagB, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "NO_CHANGE", GetIsDiffFilterChecked(enumDB_NUM_DIFF_NO_CHANGE), ORAPARM_INPUT, ORATYPE_VARCHAR2
OraDatabase.Parameters.Add "ADDED", GetIsDiffFilterChecked(enumDB_NUM_DIFF_NEW), ORAPARM_INPUT, ORATYPE_VARCHAR2
OraDatabase.Parameters.Add "UPDATED", NULL, ORAPARM_INPUT, ORATYPE_VARCHAR2
OraDatabase.Parameters.Add "REMOVED", GetIsDiffFilterChecked(enumDB_NUM_DIFF_REMOVED), ORAPARM_INPUT, ORATYPE_VARCHAR2
Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ReleaseDiff.sql"), cint(0))
OraDatabase.Parameters.Remove "RTAG_A"
OraDatabase.Parameters.Remove "RTAG_B"
OraDatabase.Parameters.Remove "NO_CHANGE"
OraDatabase.Parameters.Remove "ADDED"
OraDatabase.Parameters.Remove "UPDATED"
OraDatabase.Parameters.Remove "REMOVED"
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))
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))
If genReport Then
Call Javascript()
Call Styles()
NewTextFile.WriteLine("Difference Report Between "&rsQryA("proj_name")&" "&rsQryA("rtag_name")&" and "&rsQryB("proj_name")&" "&rsQryB("rtag_name")&"")
NewTextFile.WriteLine("
Difference Report Between "&rsQryA("proj_name")&" "&rsQryA("rtag_name")&" and "&rsQryB("proj_name")&" "&rsQryB("rtag_name")&"
")
NewTextFile.WriteLine("Key:
")
NewTextFile.WriteLine("SOURCE CODE CHANGES Indicates Changes to a Package in "& rsQryA("rtag_name") &". ")
NewTextFile.WriteLine("SOURCE CODE CHANGES Indicates Changes to a Package in "& rsQryB("rtag_name") &". ")
NewTextFile.WriteLine("Grey Text No Source Code Changes to a Package in either Release.")
NewTextFile.WriteLine("
")
End If
Dim currView_id
currView_id = -1
While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))
errormsg = false
rowId = rsQry("pv_id_a") &"_"& rsQry("pv_id_b")
btnMerge = LIMG_MERGE
btnRemove = LIMG_REMOVE
changeType = rsQry("change_type")
isaSdk = rsQry("PKG_SDK_B")
If changeType = "U" OR changeType = "UW" OR changeType = "UR" Then
Dim MajorA, MajorB, MinorA, MinorB, PatchA, PatchB, BuildA, BuildB, pos, pkgVersionA, pkgVersionB, majMinA, majMinB
MajorA = NULL
MajorB = NULL
MinorA = NULL
MinorB = NULL
pkgVersionA = rsQry("pkg_version_a")
pkgVersionB = rsQry("pkg_version_b")
PatchA = rsQry("patch_number_a")
PatchB = rsQry("patch_number_b")
BuildA = rsQry("build_number_a")
BuildB = rsQry("build_number_b")
' Find the first occurence of the dot in package version A
pos = InStr(pkgVersionA, ".")
If pos <> 0 Then
' Extract the Major Version for A
MajorA = Mid(pkgVersionA, 1, pos - 1)
' Delete the Major Version Value from the string to get the minor and patch version
pkgVersionA = Mid(pkgVersionA, pos + 1, Len(pkgVersionA))
' Find the second occurence of the dot in package version A
pos = InStr(pkgVersionA, ".")
' Extract the Minor Version for A
If pos <> 0 Then
MinorA = Mid(pkgVersionA, 1, pos - 1)
End If
End If
' Find the first occurence of the dot in package version B
pos = InStr(pkgVersionB, ".")
If pos <> 0 Then
' Extract the Major Version for B
MajorB = Mid(pkgVersionB, 1, pos - 1)
' Delete the Major Version Value from the string to get the minor and patch version
pkgVersionB = Mid(pkgVersionB, pos + 1, Len(pkgVersionB))
' Find the second occurence of the dot in package version B
pos = InStr(pkgVersionB, ".")
' Extract the Minor Version for B
If pos <> 0 Then
MinorB = Mid(pkgVersionB, 1, pos - 1)
End If
End If
If MajorA = MajorB Then
If MinorA = MinorB Then
If IsNumeric(PatchA) AND IsNumeric(PatchB) Then
If Clng(PatchB) > Clng(PatchA) Then
btnMerge = LIMG_MERGE_WARN
Else
btnMerge = LIMG_MERGE
End If
End If
Else
If IsNumeric(MinorA) AND IsNumeric(MinorB) Then
If Clng(MinorB) > Clng(MinorA) Then
btnMerge = LIMG_MERGE_WARN
Else
btnMerge = LIMG_MERGE
End If
End If
End If
Else
If IsNumeric(MajorA) AND IsNumeric(MajorB) Then
If Clng(MajorB) > Clng(MajorA) Then
btnMerge = LIMG_MERGE_WARN
Else
btnMerge = LIMG_MERGE
End If
End If
End If
If btnMerge = LIMG_MERGE_WARN Then
changeType = "UW"
End If
End If
' -------- END GROUP ------------------------
%>
<%
'Determine if we are dealing with a PV_ID that we have already encountered and displayed as a pending addition
'If we are, we do not need to display anything more about it, so skip the row.
' NOTE. the result set is sorted by change type (see releasediff.sql) such that if there are multiple entries
' for the same PV_ID, they are sorted in the following order: pending, unchanged, additions, removals, updates.
' This is important to the row skip filtering carried out below.
Dim skipRow
If rsQry("pv_id_a") Then
skipRow = pkgSeen.Exists(CStr(rsQry("pv_id_a")))
pkgSeen.Item(CStr(rsQry("pv_id_a"))) = 1
Else
skipRow = FALSE
End If
If GetIsDiffFilterChecked(enumDB_NUM_DIFF_PENDING) <> "" Then
If changeType = "APS" OR changeType = "APA" Then
skipRow = TRUE
End If
End If
If GetIsDiffFilterChecked(enumDB_NUM_DIFF_UPDATED) <> "" Then
If changeType = "U" Then
skipRow = TRUE
End If
End If
If GetIsDiffFilterChecked(enumDB_NUM_DIFF_WARN) <> "" Then
If changeType = "UW" Then
skipRow = TRUE
End If
End If
If GetIsDiffFilterChecked(enumDB_NUM_DIFF_RIPPLE) <> "" Then
If changeType = "UR" Then
skipRow = TRUE
End If
End If
If NOT skipRow Then
Call GetDiffStateIcon ( changeType, ChangeTypeIcon )
colorA = LCOLOR_NOT_CHANGED
colorB = LCOLOR_NOT_CHANGED
Select Case changeType
Case "U"
colorA = LCOLOR_CHANGED
colorB = LCOLOR_CHANGED
Case "UW"
colorA = LCOLOR_OUTDATED
colorB = LCOLOR_OUTDATED
btnMerge = LIMG_MERGE_WARN
Case "UR"
colorA = LCOLOR_RIPPLED
colorB = LCOLOR_RIPPLED
Case "A"
colorA = LCOLOR_BLANK
Case "R"
colorB = LCOLOR_BLANK
End Select
' -------- GROUP BY BASE VIEW -----------------
If CDbl(currView_id) <> CDbl(rsQry("view_id")) Then
%>
<%
Dim pkgADisplayControl
pkgADisplayControl = isMergable
Dim pkgAClass: pkgAClass = changeType & "ASrc"
If IsNull( changeType ) OR (changeType = "A") OR (changeType = "B") OR (changeType = "APA") OR (changeType = "APS") Then pkgADisplayControl = FALSE
If isaSdk Then pkgADisplayControl = FALSE
%>
<%
Dim pkgBDisplayControl
pkgBDisplayControl = isMergable
Dim pkgBClass: pkgBClass = changeType & "BSrc"
If changeType = "R" Then pkgBDisplayControl = FALSE
If isaSdk Then pkgBDisplayControl = FALSE
%>
<%End If %>
<%
If genReport AND NOT skipRow Then
If rsQry("pv_id_a") Then
Set rsQryCommentsA = OraDatabase.DbCreateDynaset( "SELECT COMMENTS FROM PACKAGE_VERSIONS WHERE PV_ID="& rsQry("pv_id_a"), cint(0))
End If
If rsQry("pv_id_b") Then
Set rsQryCommentsB = OraDatabase.DbCreateDynaset( "SELECT COMMENTS FROM PACKAGE_VERSIONS WHERE PV_ID="& rsQry("pv_id_b"), cint(0))
End If
pkgA = rsQry("pkg_name_a")
pkgB = rsQry("pkg_name_b")
If pkgA <> "" then
pkgname = pkgA
Else
pkgname = pkgB
End If
If changeType = "U" OR changeType = "UW" Then
ChangeASource = false
ChangeAUpdate = false
ChangeBSource = false
ChangeBUpdate = false
If genReport Then
'NewTextFile.WriteLine(" "&pkgname&"")
NewTextFile.Write(""& pkgname &"")
NewTextFile.WriteLine("
")
NewTextFile.Write(rsQryA("rtag_name")&" uses: "&rsQry("pkg_version_a")&" (")
Call Release(rsQry("pv_id_a"))
NewTextFile.WriteLine(") ")
NewTextFile.Write(rsQryB("rtag_name")&" uses: "&rsQry("pkg_version_b")&" (")
Call Release(rsQry("pv_id_b"))
NewTextFile.WriteLine(") ")
a = rsQry("pv_id_a")
b = rsQry("pv_id_b")
c = rsQry("pv_id_a")
d = rsQry("pv_id_b")
Set pvCollectionA = CreateObject("Scripting.Dictionary")
Set pvCollectionB = CreateObject("Scripting.Dictionary")
On Error Resume Next
While CLng(a) <> CLng(b) and NOT errormsg
'NewTextFile.WriteLine("A: "&a)
'NewTextFile.WriteLine("B: "&b)
pvCollectionA.Add CStr(a), Empty
pvCollectionB.Add CStr(b), Empty
If CLng(a) > CLng(b) Then
'NewTextFile.WriteLine("TestA")
Call LastPvIdA(a)
ElseIf CLng(b) > CLng(a) Then
'NewTextFile.WriteLine("TestB")
Call LastPvIdB(b)
End If
Wend
Set pvCollectionA = Nothing
Set pvCollectionB = Nothing
Call pkg_Version(a)
NewTextFile.Write("Common PARENT package version: "&pkgversion&" (")
Call Release(a)
NewTextFile.WriteLine(")
")
NewTextFile.WriteLine()
NewTextFile.WriteLine(""&rsQryA("rtag_name")&"")
If pkgversion <> rsQry("pkg_version_a") Then
NewTextFile.WriteLine("
Versions between "& pkgversion &" and "& rsQry("pkg_version_a")&"
")
If errormsg Then
NewTextFile.WriteLine("Error determining root! ")
NewTextFile.WriteLine()
End If
source_change = false
While CLng(a) <> CLng(c) and NOT errormsg
Call Comments(c)
If scFlag = TRUE Then
Call GetFixedIssues(c)
End If
Call LastPvIdAa(c)
NewTextFile.WriteLine()
Wend
If source_change = false Then
NewTextFile.WriteLine("
No source changes to "& rsQryA("rtag_name")&". Only Rippled Builds.
")
ChangeASource = true
End If
Call pkg_Version(b)
NewTextFile.WriteLine()
NewTextFile.WriteLine()
ElseIf pkgversion = rsQry("pkg_version_a") Then
NewTextFile.WriteLine("
No updates to "& rsQryA("rtag_name")&"
")
ChangeAUpdate = true
NewTextFile.WriteLine()
End If
NewTextFile.WriteLine(""&rsQryB("rtag_name")&"")
If pkgversion <> rsQry("pkg_version_b") Then
NewTextFile.WriteLine("
Versions between "& pkgversion &" and "& rsQry("pkg_version_b")&"
")
If errormsg Then
NewTextFile.WriteLine("Error determining root! ")
NewTextFile.WriteLine()
End If
source_change = false
While CLng(b) <> CLng(d) and NOT errormsg
Call Comments(d)
If scFlag = TRUE Then
Call GetFixedIssues(d)
End If
Call LastPvIdBb(d)
NewTextFile.WriteLine()
Wend
If source_change = false Then
NewTextFIle.WriteLine("
No source changes to "& rsQryB("rtag_name")&". Only Rippled Builds.
")
ChangeBSource = true
End If
ElseIf pkgversion = rsQry("pkg_version_b") Then
NewTextFile.WriteLine("
No updates to "& rsQryB("rtag_name")&"
")
ChangeBUpdate = true
NewTextFile.WriteLine()
End If
NewTextFile.WriteLine("
")
If ChangeASource Then
If ChangeBSource Then
NewTextFile.WriteLine("
")
End If
End If
End If
End If
End If 'changeType = "U" OR changeType = "UW"
End If 'email
rsQry.MoveNext
WEnd
rsQry.Close
Set rsQry = Nothing
%>
<%
If genReport Then
Call Footer()
NewTextFile.Close
Set NewTextFile=Nothing
End If
%>
<%Else%>
<%
If (parRtagB <> "") Then
Call Messenger ( "Select Release A to compare.", 3, "100%" )
ElseIf (parRtagA <> "") Then
Call Messenger ( "Select Release B to compare.", 3, "100%" )
Else
Call Messenger ( "Select Release A and Release B to compare.", 3, "100%" )
End If
%>
<%End If%>
<%
End Sub
%>
Release Manager
<%
If email Then
Send_Email "Release Manager Notification",_
ADMIN_EMAIL, _
objAccessControl.UserEmail,_
"Release Comparisons from Release Manager", _
"Your requested report...",_
reportPath
End If
%>