%@LANGUAGE="VBSCRIPT"%>
<%
'=====================================================
'| |
'| BOM DIFF |
'| |
'=====================================================
%>
<%
Option explicit
' Good idea to set when using redirect
Response.Expires = 0 ' always load the page, dont store
%>
<%
'To enable the script timeout to 10 mins
Server.ScriptTimeout=1200
%>
<%
' Set rfile parameter. This is a return page after Login
'Call objPMod.StoreParameter ( "rfile", "rtree.asp" )
'objPMod.PersistInQryString("proj_id")
'------------ ACCESS CONTROL ------------------
%>
<%
'------------ Variable Definition -------------
Dim rsQry
Dim objRelCollectorA
Dim objRelCollectorB
Dim parRtagA
Dim parRtagB
Dim parSBOMA
Dim parSBOMB
Dim dDiffFilter
Dim colorA, colorB, ChangeTypeIcon
Dim btnMerge, btnRemove
Dim rowId
Dim email
Dim genReport
Dim FSO
Dim NewTextFile
Dim pkgA, pkgB, pkgname, delimiter, rsQryA, rsQryB, rsQryCommentsA, rsQryCommentsB, sqlstrA, counterA, sqlstrB, sqlstrC, counterB
Dim SSsql, retVal, rsCQ, DEVIiss
Dim a, b, c, d, pkgversion, errormsg
Dim VersionList
'------------ Constants Declaration -----------
Const LIMG_UPDATED = ""
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_RIPPLED = "#D8F8F8"
Const LCOLOR_BLANK = "#FFFFFF"
Const LIMG_MERGE = ""
Const LIMG_MERGE_WARN = ""
Const LIMG_REMOVE = ""
Const LIMG_UNDO = ""
'------------ Variable Init -------------------
Set rsCQ = Server.CreateObject("ADODB.Recordset")
parRtagA = Request("rtagA")
parRtagB = Request("rtagB")
parSBOMA = Request("sbomA")
parSBOMB = Request("sbomB")
Set objRelCollectorA = CreateObject("Scripting.Dictionary")
Set objRelCollectorB = CreateObject("Scripting.Dictionary")
Set dDiffFilter = 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
%>
<%
'--------------------------------------------------------------------------------------------------------------------------
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, issues)
If issues <> "Filter Issues" Then
Set sqlstrC = OraDatabase.DbCreateDynaset("SELECT iss_db, iss_id, iss_state, notes FROM CQ_ISSUES" &_
" WHERE pv_id="& pv_id &" AND iss_state = "& enumISSUES_STATE_FIXED &_
" UNION SELECT iss_db, iss_id, iss_state, notes FROM ARCHIVE_MANAGER.CQ_ISSUES" &_
" WHERE pv_id="& pv_id &" AND iss_state = "& enumISSUES_STATE_FIXED, cint(0))
If sqlstrC.RecordCount <> 0 Then
NewTextFile.WriteLine()
NewTextFile.WriteLine("
Fixed Issues:
")
NewTextFile.WriteLine("
")
NewTextFile.WriteLine("
")
NewTextFile.WriteLine("
Issue Id
")
NewTextFile.WriteLine("
Summary
")
NewTextFile.WriteLine("
Issue Type
")
NewTextFile.WriteLine("
Priority
")
NewTextFile.WriteLine("
Status
")
NewTextFile.WriteLine("
")
While ((NOT sqlstrC.BOF) AND (NOT sqlstrC.EOF))
DEVIiss = "-1"
If CInt(sqlstrC("iss_db")) = CInt(enumCLEARQUEST_DEVI_ID) Then
DEVIiss = DEVIiss &","& sqlstrC("iss_id")
End If
SSsql = ReadFile( QUERIES_PATH & "\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("
")
sqlstrC.MoveNext
Wend
NewTextFile.WriteLine( "
")
End If
'
' Must also handle Jira Issues
'
Dim SQLstr
retVal = Get_JIRA_Package_Issues ( pv_id, SQLstr )
If retVal > 0 Then
retVal = Get_JIRA_Issues ( SQLstr, rsCQ )
If (retVal = 0 AND rsCQ.RecordCount > 0) Then
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("
")
While ((NOT rsCQ.BOF) AND (NOT rsCQ.EOF))
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("
"&rsCQ("RESOLUTION")&"
")
NewTextFile.WriteLine("
")
rsCQ.MoveNext
Wend
NewTextFile.WriteLine( "
")
End If
End If
sqlstrC.Close()
Set sqlstrC = Nothing
End If
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Function LastPvId(pvId)
Dim qryA
Set qryA = OraDatabase.DbCreateDynaset("SELECT LAST_PV_ID FROM PACKAGE_VERSIONS WHERE PV_ID="&pvId &_
" UNION SELECT LAST_PV_ID FROM ARCHIVE_MANAGER.PACKAGE_VERSIONS WHERE PV_ID="&pvId, cint(0))
LastPvId = pvId
If pvId <> qryA("last_pv_id") Then
LastPvId = qryA("last_pv_id")
Else
errormsg = true
End If
qryA.Close()
Set qryA = Nothing
End Function
'--------------------------------------------------------------------------------------------------------------------------
Sub PreviousVersions(a, b, versionA, versionB, data, issues)
NewTextFile.WriteLine()
NewTextFile.WriteLine("Versions Between: "&versionA&" and "&versionB&"")
If CLng(a) < CLng(b) Then
While CLng(a) < CLng(b)
b = LastPvId(b)
If CLng(a) < CLng(b) Then
VersionList = VersionList + ","& b &""
Call Comments(b, data)
Call GetFixedIssues(b, issues)
End If
Wend
End If
If CLng(b) < CLng(a) Then
While CLng(b) < CLng(a)
a = LastPvId(a)
If CLng(b) < CLng(a) Then
VersionList = VersionList + ","& a &""
Call Comments(a, data)
Call GetFixedIssues(a, issues)
End If
Wend
End If
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub GetDependencies(pv_id_a, pv_id_b, versionA, versionB, comments, issues)
On Error Resume Next
Set sqlstrA = OraDatabase.DbCreateDynaset("select distinct dpv_id from package_dependencies where pv_id IN ("& pv_id_b &") and dpv_id NOT IN (SELECT dpv_id from package_dependencies where pv_id = "& pv_id_a &")" &_
" UNION select distinct dpv_id from ARCHIVE_MANAGER.package_dependencies where pv_id IN ("& pv_id_b &") and dpv_id NOT IN (SELECT dpv_id from ARCHIVE_MANAGER.package_dependencies where pv_id = "& pv_id_a &") order by dpv_id desc", cint(0))
If sqlstrA.RecordCount <> 0 Then
NewTextFile.WriteLine()
NewTextFile.WriteLine("Dependencies Changed Between "&versionA&" and "&versionB&":")
While ((NOT sqlstrA.BOF) AND (NOT sqlstrA.EOF))
Call dependencyComments(sqlstrA("dpv_id"), comments)
Call GetFixedIssues(sqlstrA("dpv_id"), issues)
sqlstrA.MoveNext
Wend
End If
sqlstrA.Close()
Set sqlstrA = Nothing
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub dependencyComments(pv_id, comments)
Set sqlstrB = OraDatabase.DbCreateDynaset("SELECT * FROM PACKAGE_VERSIONS pv, PACKAGES pkg WHERE pkg.pkg_id = pv.pkg_id AND PV_ID ="&pv_id &_
" UNION SELECT * FROM ARCHIVE_MANAGER.PACKAGE_VERSIONS pv, ARCHIVE_MANAGER.PACKAGES pkg WHERE pkg.pkg_id = pv.pkg_id AND PV_ID ="&pv_id, cint(0))
NewTextFile.WriteLine("
")
If comments <> "Filter Comments" Then
NewTextFile.WriteLine("
Comments:
")
NewTextFile.Write("
"& TextToHTML(sqlstrB("comments")) &"
")
End If
sqlstrB.Close()
Set sqlstrB = nothing
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub pkg_Version(pv)
Dim qry
Set qry = OraDatabase.DbCreateDynaset("SELECT PKG_VERSION FROM PACKAGE_VERSIONS WHERE PV_ID="&pv &_
" UNION SELECT PKG_VERSION FROM ARCHIVE_MANAGER.PACKAGE_VERSIONS WHERE PV_ID="&pv, cint(0))
pkgversion = qry("pkg_version")
qry.Close()
Set qry = Nothing
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub Comments(Pv_Id, data)
Dim comments
Set comments = OraDatabase.DbCreateDynaset("SELECT COMMENTS, PKG_VERSION FROM PACKAGE_VERSIONS WHERE PV_ID="&Pv_id &_
" UNION SELECT COMMENTS, PKG_VERSION FROM ARCHIVE_MANAGER.PACKAGE_VERSIONS WHERE PV_ID="&Pv_id, cint(0))
'If comments("comments") <> "Rippled Build." Then
NewTextFile.WriteLine("
Version: "& comments("pkg_version")&"
")
If data <> "Filter Comments" Then
If comments("comments") <> "" Then
NewTextFile.WriteLine("
Comments:
")
NewTextFile.WriteLine("
"& TextToHTML(comments("comments")) &"
")
End If
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 &_
" UNION SELECT INSERT_STAMP FROM ARCHIVE_MANAGER.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 )
If OOrsCQ.State = 1 Then
OOrsCQ.Close
End If
On Error Resume Next
OOrsCQ.ActiveConnection = CQ_conn
OOrsCQ.Source = SSsql
OOrsCQ.CursorType = 0
OOrsCQ.CursorLocation = 2
OOrsCQ.LockType = 3
OOrsCQ.Open()
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 ( nSourceSBOM, ByRef outobjDetails )
Dim rsQry, query
' Exit if nSourceRtagId is empty
If nSourceSBOM = "" Then Exit Sub
OraDatabase.Parameters.Add "SBOM", nSourceSBOM, ORAPARM_INPUT, ORATYPE_NUMBER
query = _
" SELECT pr.PROJ_NAME ||' > '|| br.BRANCH_NAME ||' > '|| b.BOM_VERSION ||'.'||b.BOM_LIFECYCLE AS LOCATION, "&_
" pr.PROJ_ID, b.BOM_ID, br.BRANCH_ID, b.IS_READONLY"&_
" FROM BRANCHES br,"&_
" BOMS b,"&_
" DM_PROJECTS pr"&_
" WHERE br.PROJ_ID = pr.PROJ_ID"&_
" AND b.BRANCH_ID = br.BRANCH_ID"&_
" AND b.BOM_ID = :SBOM"
Set rsQry = OraDatabase.DbCreateDynaset( query, ORADYN_DEFAULT )
OraDatabase.Parameters.Remove "SBOM"
If rsQry.RecordCount > 0 Then
outobjDetails.Item ("location") = rsQry("location")
outobjDetails.Item ("official") = rsQry("IS_READONLY")
outobjDetails.Item ("proj_id") = rsQry("proj_id")
outobjDetails.Item ("branch_id") = rsQry("branch_id")
outobjDetails.Item ("bom_id") = rsQry("bom_id")
Else
Err.Raise 8, "Sub GetFormDetails in "& SCRIPT_NAME, "Empty record set returned. nSourceSBOM="& nSourceSBOM
End If
If outobjDetails.Item ("location") = "" Then
outobjDetails.Item ("location") = "N"
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_UPDATED
Case "A"
outIcon = LIMG_ADDED
Case "R"
outIcon = LIMG_REMOVED
Case "UR"
outIcon = LIMG_RIPPLED
Case Else
outIcon = ""
End Select
End Sub
'----------------------------------------------------------------------------------------------------------------------------------------
' Function returns the number of imported jira issues
' and builds a string suitable for querying the jira issues database
Function Get_JIRA_Package_Issues ( NNpv_id, SSsql )
Dim rsTemp, sqlstr, JIRAIss, retVal
JIRAIss = "'-1'"
sqlstr = "SELECT iss_key FROM JIRA_ISSUES WHERE pv_id="& NNpv_id
Set rsTemp = OraDatabase.DbCreateDynaset( sqlstr, cint(0))
retVal = rsTemp.RecordCount
While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))
JIRAIss = JIRAIss &",'"& rsTemp("iss_key")&"'"
rsTemp.MoveNext
WEnd
SSsql = "SELECT I.pkey AS iss_num, I.summary, ISS.pname AS Status, IT.pname as issue_type, PR.pname as Priority, R.PNAME as RESOLUTION"&_
" FROM jiraissue I, issuestatus ISS, issuetype IT, resolution R, priority PR "&_
" WHERE I.pkey IN ("& JIRAIss &") "&_
" AND I.issuestatus = ISS.ID "&_
" AND I.RESOLUTION = R.ID "&_
" AND IT.ID = I.issuetype "&_
" AND PR.ID = I.PRIORITY "
rsTemp.Close()
Set rsTemp = nothing
Get_JIRA_Package_Issues = retVal
End Function
'----------------------------------------------------------------------------------------------------------------------------------------
Function Get_JIRA_Issues ( SSsql, OOrsCQ )
If OOrsCQ.State = 1 Then
OOrsCQ.Close()
End If
On Error Resume Next
OOrsCQ.ActiveConnection = JIRA_conn
OOrsCQ.Source = SSsql
OOrsCQ.CursorType = 0
OOrsCQ.CursorLocation = 3
OOrsCQ.LockType = 3
OOrsCQ.Open()
Get_JIRA_Issues = Err.Number
End Function
'--------------------------------------------------------------------------------------------------------------------------
%>
<%
'------------ RUN BEFORE PAGE RENDER ----------
If Request("btn") = "Exit" Then
Call OpenInWindow ( "reports.asp" )
End If
' Get release details
Call GetFormDetails ( parSBOMA, objRelCollectorA )
Call GetFormDetails ( parSBOMB, objRelCollectorB )
If Request("btn") = "Swap Compare" Then
Call OpenInWindow ( SCRIPT_NAME &"?sbomA="& parSBOMB &"&sbomB="& parSBOMA &"&rtagA="& parRtagB &"&rtagB="& parRtagA )
End If
If Request("btn") = "Hide" Then
' Store filter in cookie
Response.Cookies(enum_RELMGR_COOKIE_DOMAIN)(COOKIE_HIDE_DIFF_FILTER) = Request("difilter")
End If
Call GetDiffFilterValues ( dDiffFilter )
'----------------------------------------------
%>
Deployment Manager SBOM Differences
<%
If email Then
Dim myMail, LocalPath
Set myMail=Server.CreateObject("Persits.MailSender")
LocalPath = Server.MapPath("docs\compareBoms_"&objAccessControl.UserName&".html")
myMail.Host = SMTP_HOST
myMail.Subject="BOM Comparisons from Deployment Manager"
myMail.From="releasem@erggroup.com"
myMail.AddAddress objAccessControl.UserEmail
' Attach the file
myMail.AddAttachment LocalPath
myMail.Body = "Your requested report..."
myMail.Send
set myMail=nothing
End If
%>
<%
Call Destroy_All_Objects
%>