Rev 6649 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<%@LANGUAGE="VBSCRIPT"%><%'====================================================='| |'| BOM DIFF |'| |'=====================================================%><%Option explicit' Good idea to set when using redirectResponse.Expires = 0 ' always load the page, dont store%><%'To enable the script timeout to 10 minsServer.ScriptTimeout=1200%><!--#include file="common/config.asp"--><!--#include file="common/globals.asp"--><!--#include file="common/formating.asp"--><!--#include file="common/common_subs.asp"--><!--#include file="common/common_dbedit.asp"--><!--#include file="common/_form_window_common.asp"--><!--#include file="common/_rtree_common.asp"--><%' Set rfile parameter. This is a return page after Login'Call objPMod.StoreParameter ( "rfile", "rtree.asp" )'objPMod.PersistInQryString("proj_id")'------------ ACCESS CONTROL ------------------%><!--#include file="_access_control_general.asp"--><SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="class/classaspJSON.vbs"></SCRIPT><SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="common/base64encode.vbs"></SCRIPT><SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="common/jiraIssues.vbs"></SCRIPT><%'------------ Variable Definition -------------Dim rsQryDim objRelCollectorADim objRelCollectorBDim parRtagADim parRtagBDim parSBOMADim parSBOMBDim dDiffFilterDim colorA, colorB, ChangeTypeIconDim btnMerge, btnRemoveDim rowIdDim emailDim genReportDim genSummaryDim summaryTextDim FSODim NewTextFileDim NewTextFilePathDim pkgA, pkgB, pkgname, delimiter, rsQryA, rsQryB, rsQryCommentsA, rsQryCommentsB, sqlstrA, counterA, sqlstrB, sqlstrC, counterBDim SSsql, retVal, rsCQ, DEVIissDim a, b, c, d, pkgversion, errormsgDim VersionList'------------ Constants Declaration -----------Const LIMG_UPDATED = "<img src='images/i_updated.gif' width='11' height='11' border='0' hspace='5' align='absmiddle' title='Updated'>"Const LIMG_RIPPLED = "<img src='images/i_rippled.gif' width='11' height='11' border='0' hspace='5' align='absmiddle' title='Rippled'>"Const LIMG_ADDED = "<img src='images/i_added.gif' width='11' height='11' border='0' hspace='5' align='absmiddle' title='Added'>"Const LIMG_REMOVED = "<img src='images/i_removed.gif' width='11' height='11' border='0' hspace='5' align='absmiddle' title='Removed'>"Const LIMG_FILTER_ON = "<img src='images/i_data_table.gif' border='0' align='absmiddle' hspace='0' title='Filter in use.'>"Const LIMG_FILTER_OFF = "<img src='images/i_data_table_off.gif' border='0' align='absmiddle' hspace='0' title='Filter not in use.'>"Const LIMG_DROP_DOWN_ARROW = "<img src='images/i_drop_down_arrow.gif' width='5' height='15' hspace='1' border='0' align='absmiddle'>"Const LCOLOR_NOT_CHANGED = "#F5F5F5"Const LCOLOR_CHANGED = "#d2f7c9"Const LCOLOR_RIPPLED = "#D8F8F8"Const LCOLOR_BLANK = "#FFFFFF"Const LIMG_MERGE = "<img src='images/bt_move_all_right.gif' title='Click to merge.' border='0'>"Const LIMG_MERGE_WARN = "<img src='images/bt_move_warn_right.gif' title='Right hand side version is newer.' border='0'>"Const LIMG_REMOVE = "<img src='images/bt_remove.gif' title='Remove this version from release.' border='0'>"Const LIMG_UNDO = "<img src='images/bt_undo.gif' title='Undo merge/remove.' border='0'>"'------------ Variable Init -------------------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") = "btn_report" Thenemail = truegenReport = trueEnd IfIf Request("btn") = "btn_summary" Thenemail = truegenSummary = trueEnd IfIf Request("btn") = "btn_showRep" ThengenReport = trueEnd If%><%'--------------------------------------------------------------------------' Add text to summary email' Attempt to prevent gmail from creating hyperlinks out of some text' - Put '.' inside a 'span'Sub Summary(txt)If genSummary ThensummaryText = summaryText & Replace(txt,".", "<span>.</span>")End IfEnd Sub'--------------------------------------------------------------------------------------------------------------------------Sub GetDiffFilterValues ( outDepFilter )Dim FilterVal, aFilterValuesIf Request.Cookies(enum_RELMGR_COOKIE_DOMAIN)(COOKIE_HIDE_DIFF_FILTER) <> "" ThenaFilterValues = Split( Replace( Request.Cookies(enum_RELMGR_COOKIE_DOMAIN)(COOKIE_HIDE_DIFF_FILTER), " ", ""), ",")For Each FilterVal In aFilterValuesoutDepFilter.Item (CStr( FilterVal )) = ""NextEnd IfEnd Sub'--------------------------------------------------------------------------------------------------------------------------Sub DisplayFilterSelector%><!-- DIFF FILTER +++++++++++++++++++++++++++++++++++++++++++ --><p> <fieldset style="width:150px;"><legend class="body_scol"><%=GetIsDiffFilterInUseIcon() %> Filter Results...</a></legend><div name="divDiffFilter" id="divDiffFilter" class="body_txt"><br><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td width="1" background="images/bg_action_norm.gif"><input name="difilter" type="checkbox" value="<%=enumDB_DIFF_UPDATED%>" <%=GetIsDiffFilterChecked(enumDB_DIFF_UPDATED)%>></td><td width="50" nowrap background="images/bg_action_norm.gif" class="form_field"><%=LIMG_UPDATED%>Updated</td></tr><tr><td background="images/bg_action_norm.gif"><input type="checkbox" name="difilter" value="<%=enumDB_DIFF_NEW%>" <%=GetIsDiffFilterChecked(enumDB_DIFF_NEW)%>></td><td nowrap background="images/bg_action_norm.gif" class="form_field"><%=LIMG_ADDED%>Added</td></tr><tr><td background="images/bg_action_norm.gif"><input type="checkbox" name="difilter" value="<%=enumDB_DIFF_REMOVED%>" <%=GetIsDiffFilterChecked(enumDB_DIFF_REMOVED)%>></td><td nowrap background="images/bg_action_norm.gif" class="form_field"><%=LIMG_REMOVED%>Removed</td></tr><tr><td background="images/bg_action_norm.gif"><input type="checkbox" name="filter_comments" value="<%=enumDB_FILTER_COMMENTS%>" <%=GetIsDiffFilterChecked(enumDB_FILTER_COMMENTS)%>></td><td nowrap background="images/bg_action_norm.gif" class="form_field">Comments</td></tr><tr><td background="images/bg_action_norm.gif"><input type="checkbox" name="filter_issues" value="<%=enumDB_FILTER_ISSUES%>" <%=GetIsDiffFilterChecked(enumDB_FILTER_ISSUES)%>></td><td nowrap background="images/bg_action_norm.gif" class="form_field">Issues</td></tr><tr><td background="images/bg_action_norm.gif"> </td><td background="images/bg_action_norm.gif"><input name="btn" type="submit" class="form_btn" value="Hide"></td></tr></table></div></fieldset><!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++ --><%End Sub'--------------------------------------------------------------------------------------------------------------------------Sub Javascript()If genReport ThenNewTextFile.WriteLine("<script language=""JavaScript"" type=""text/javascript"">")NewTextFile.WriteLine("function MM_findObj(n, d) { //v4.0")NewTextFile.WriteLine(" var p,i,x;")NewTextFile.WriteLine(" if(!d) d=document; ")NewTextFile.WriteLine(" if((p=n.indexOf(""?""))>0&&parent.frames.length) {")NewTextFile.WriteLine(" d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);")NewTextFile.WriteLine(" }")NewTextFile.WriteLine(" if(!(x=d[n])&&d.all) x=d.all[n]; ")NewTextFile.WriteLine(" for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];")NewTextFile.WriteLine(" for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);")NewTextFile.WriteLine(" if(!x && document.getElementById) x=document.getElementById(n); ")NewTextFile.WriteLine(" return x;")NewTextFile.WriteLine("}")NewTextFile.WriteLine("function toggleSPAN(x) {")NewTextFile.WriteLine(" var el = MM_findObj('spanPkgInfo' + x);")NewTextFile.WriteLine(" if (el.style.display != ""block"") {")NewTextFile.WriteLine(" el.style.display = ""block"";")NewTextFile.WriteLine(" } else {")NewTextFile.WriteLine(" el.style.display = ""none"";")NewTextFile.WriteLine(" }")NewTextFile.WriteLine("}")NewTextFile.WriteLine("function MM_getElementsByClassName(cn) {")NewTextFile.WriteLine(" var allT=document.getElementsByTagName('*'), allCN=[], i=0, a;")NewTextFile.WriteLine(" while(a=allT[i++]) {")NewTextFile.WriteLine(" a.className==cn ? allCN[allCN.length]=a : null;")NewTextFile.WriteLine(" }")NewTextFile.WriteLine(" return allCN")NewTextFile.WriteLine("}")NewTextFile.WriteLine(" function MM_toggleAll(cn, show){")NewTextFile.WriteLine(" var allEl = MM_getElementsByClassName(cn);")NewTextFile.WriteLine(" for (var ii=0; ii<allEl.length;ii++){")NewTextFile.WriteLine(" var el = allEl[ii];")NewTextFile.WriteLine(" if(show) {")NewTextFile.WriteLine(" el.style.display = ""block"";")NewTextFile.WriteLine(" } else {")NewTextFile.WriteLine(" el.style.display = ""none"";")NewTextFile.WriteLine(" }")NewTextFile.WriteLine(" }")NewTextFile.WriteLine(" }")NewTextFile.WriteLine("</script>")End IfEnd Sub'--------------------------------------------------------------------------------------------------------------------------Sub GetFixedIssues(pv_id, issues)If issues <> "Filter Issues" ThenSet 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 _, cint(0))If sqlstrC.RecordCount <> 0 ThenNewTextFile.WriteLine()NewTextFile.WriteLine("<blockquote><blockquote>Fixed Issues:</blockquote></blockquote>")NewTextFile.WriteLine("<blockquote><blockquote><blockquote><table class='fixed_issues' width='100%'>")NewTextFile.WriteLine("<tr>")NewTextFile.WriteLine("<td width='10%' class='form_field'>Issue Id</td>")NewTextFile.WriteLine("<td width='55%' class='form_field'>Summary</td>")NewTextFile.WriteLine("<td width='10%' class='form_field'>Issue Type</td>")NewTextFile.WriteLine("<td width='15%' class='form_field'>Priority</td>")NewTextFile.WriteLine("<td width='10%' class='form_field'>Status</td>")NewTextFile.WriteLine("</tr>")While ((NOT sqlstrC.BOF) AND (NOT sqlstrC.EOF))DEVIiss = "-1"If CInt(sqlstrC("iss_db")) = CInt(enumCLEARQUEST_DEVI_ID) ThenDEVIiss = DEVIiss &","& sqlstrC("iss_id")End IfSSsql = 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("<tr>")NewTextFile.WriteLine("<td nowrap class='form_item'>"&rsCQ("iss_num")&"</td>")NewTextFile.WriteLine("<td class='form_item'>"&NewLine_To_BR ( To_HTML ( rsCQ("summary") ) )&"</td>")NewTextFile.WriteLine("<td class='form_item'>"&rsCQ("issue_type")&"</td>")NewTextFile.WriteLine("<td class='form_item'>"&rsCQ("priority")&"</td>")NewTextFile.WriteLine("<td class='form_item'>"&rsCQ("Status")&"</td>")NewTextFile.WriteLine("</tr>")sqlstrC.MoveNextWendNewTextFile.WriteLine( " </table></blockquote></blockquote></blockquote> ")End If'' Must also handle Jira IssuesDim issueInfo, el, keySet issueInfo = CreateObject( "Scripting.Dictionary" )Call getJiraIssueDetails(pv_id, issueInfo, 1)If issueInfo.Count > 0 Then' Table HeaderNewTextFile.WriteLine()NewTextFile.WriteLine("<blockquote><blockquote>Jira Issues:</blockquote></blockquote>")NewTextFile.WriteLine("<blockquote><blockquote><blockquote><table class='fixed_issues' width='100%'>")NewTextFile.WriteLine("<tr>")NewTextFile.WriteLine("<td width='8%' class='form_field'>Issue Id</td>")NewTextFile.WriteLine("<td width='58%' class='form_field'>Summary</td>")NewTextFile.WriteLine("<td width='8%' class='form_field'>Issue Type</td>")NewTextFile.WriteLine("<td width='10%' class='form_field'>Priority</td>")NewTextFile.WriteLine("<td width='8%' class='form_field'>Status</td>")NewTextFile.WriteLine("<td width='8%' class='form_field'>Resolution</td>")NewTextFile.WriteLine("</tr>")' Table BodyFor Each key In issueInfoSet el = issueInfo.item(key)NewTextFile.WriteLine("<tr>")NewTextFile.WriteLine("<td nowrap class='form_item'>"&key&"</td>")NewTextFile.WriteLine("<td class='form_item'>"&NewLine_To_BR ( To_HTML ( el.item("summary") ) )&"</td>")NewTextFile.WriteLine("<td class='form_item'>"&el.item("issuetype")&"</td>")NewTextFile.WriteLine("<td class='form_item'>"&el.item("priority")&"</td>")NewTextFile.WriteLine("<td class='form_item'>"&el.item("status")&"</td>")NewTextFile.WriteLine("<td class='form_item'>"&el.item("resolution")&"</td>")NewTextFile.WriteLine("</tr>")NextNewTextFile.WriteLine( " </table></blockquote></blockquote></blockquote> ")Set issueInfo = nothingEnd IfEnd IfEnd Sub'--------------------------------------------------------------------------------------------------------------------------Function LastPvId(pvId)Dim qryASet qryA = OraDatabase.DbCreateDynaset("SELECT LAST_PV_ID FROM PACKAGE_VERSIONS WHERE PV_ID="&pvId, cint(0))LastPvId = pvIdIf pvId <> qryA("last_pv_id") ThenLastPvId = qryA("last_pv_id")Elseerrormsg = trueEnd IfqryA.Close()Set qryA = NothingEnd Function'--------------------------------------------------------------------------------------------------------------------------Sub PreviousVersions(a, b, versionA, versionB, data, issues)NewTextFile.WriteLine()NewTextFile.WriteLine("<b>Versions Between: "&versionA&" and "&versionB&"</b>")If CLng(a) < CLng(b) ThenWhile CLng(a) < CLng(b)b = LastPvId(b)If CLng(a) < CLng(b) ThenVersionList = VersionList + ","& b &""Call Comments(b, data)Call GetFixedIssues(b, issues)End IfWendEnd IfIf CLng(b) < CLng(a) ThenWhile CLng(b) < CLng(a)a = LastPvId(a)If CLng(b) < CLng(a) ThenVersionList = VersionList + ","& a &""Call Comments(a, data)Call GetFixedIssues(a, issues)End IfWendEnd IfEnd Sub'--------------------------------------------------------------------------------------------------------------------------Sub GetDependencies(pv_id_a, pv_id_b, versionA, versionB, comments, issues)On Error Resume NextSet 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 &")" &_" order by dpv_id desc", cint(0))If sqlstrA.RecordCount <> 0 ThenNewTextFile.WriteLine()NewTextFile.WriteLine("<b>Dependencies Changed Between "&versionA&" and "&versionB&":</b>")While ((NOT sqlstrA.BOF) AND (NOT sqlstrA.EOF))Call dependencyComments(sqlstrA("dpv_id"), comments)Call GetFixedIssues(sqlstrA("dpv_id"), issues)sqlstrA.MoveNextWendEnd IfsqlstrA.Close()Set sqlstrA = NothingEnd 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, cint(0))NewTextFile.WriteLine("<blockquote><blockquote><span class="&chr(34)&"highlight_text"&chr(34)&">"& sqlstrB("pkg_name") &" "& sqlstrB("pkg_version") &"</font></span></blockquote></blockquote>")If comments <> "Filter Comments" ThenNewTextFile.WriteLine("<blockquote><blockquote>Comments:</blockquote></blockquote>")NewTextFile.Write("<blockquote><blockquote><blockquote>"& TextToHTML(sqlstrB("comments")) &"</blockquote></blockquote></blockquote>")End IfsqlstrB.Close()Set sqlstrB = nothingEnd Sub'--------------------------------------------------------------------------------------------------------------------------Sub pkg_Version(pv)Dim qrySet qry = OraDatabase.DbCreateDynaset("SELECT PKG_VERSION FROM PACKAGE_VERSIONS WHERE PV_ID="&pv, cint(0))pkgversion = qry("pkg_version")qry.Close()Set qry = NothingEnd Sub'--------------------------------------------------------------------------------------------------------------------------Sub Comments(Pv_Id, data)Dim commentsSet comments = OraDatabase.DbCreateDynaset("SELECT COMMENTS, PKG_VERSION FROM PACKAGE_VERSIONS WHERE PV_ID="&Pv_id, cint(0))'If comments("comments") <> "Rippled Build." ThenNewTextFile.WriteLine("<blockquote><blockquote><span class="&chr(34)&"highlight_text"&chr(34)&">Version: "& comments("pkg_version")&"</span></blockquote></blockquote>")If data <> "Filter Comments" ThenIf comments("comments") <> "" ThenNewTextFile.WriteLine("<blockquote><blockquote>Comments: </blockquote></blockquote>")NewTextFile.WriteLine("<blockquote><blockquote><blockquote>"& TextToHTML(comments("comments")) &"</blockquote></blockquote></blockquote>")End IfEnd If'End IfEnd Sub'--------------------------------------------------------------------------------------------------------------------------Sub Release(pvId)Dim releaseSet release = OraDatabase.DbCreateDynaset("SELECT INSERT_STAMP FROM RELEASE_CONTENT WHERE PV_ID="&pvId, cint(0))If release("insert_stamp") <> "" ThenNewTextFile.Write(release("insert_stamp"))ElseNewTextFile.Write("Version Not Used.")End IfEnd Sub'--------------------------------------------------------------------------------------------------------------------------Sub Header()NewTextFile.WriteLine("<html>")NewTextFile.WriteLine("<head>")End Sub'--------------------------------------------------------------------------------------------------------------------------Sub Footer()NewTextFile.WriteLine("</body>")NewTextFile.WriteLine("</html>")End Sub'--------------------------------------------------------------------------------------------------------------------------Sub Styles()NewTextFile.WriteLine("<style type="&chr(34)&"text/css"&chr(34)&">")NewTextFile.WriteLine("body { font-family:Verdana,Arial,Helvetica,sans-serif; }")NewTextFile.WriteLine("table { border-collapse:collapse; }")NewTextFile.WriteLine("td { border-width:1; border-style:solid; border-color:black; padding:3 5 3 5; }")NewTextFile.WriteLine(".fixed_issues { border-width:1; border-style:solid; border-color:black; }")NewTextFile.WriteLine(".page_title { color:red; font-size:110%; text-align:center; }")NewTextFile.WriteLine(".highlight_text { color:blue; }")NewTextFile.WriteLine(".form_field { background-color:#EAE5D7; font:bold 70% Tahoma,sans-serif; }")NewTextFile.WriteLine(".form_item { background-color:#EAE5D7; color:red; font:bold 70% Tahoma,sans-serif; vertical-align:top; }")NewTextFile.WriteLine("</style>")End Sub'--------------------------------------------------------------------------------------------------------------------------Function GetIsDiffFilterInUseIcon()GetIsDiffFilterInUseIcon = LIMG_FILTER_OFFIf dDiffFilter.Count > 0 ThenGetIsDiffFilterInUseIcon = LIMG_FILTER_ONEnd IfEnd Function'--------------------------------------------------------------------------------------------------------------------------Function GetIsDiffFilterChecked( nFilterId )If dDiffFilter.Exists ( CStr(nFilterId) ) ThenGetIsDiffFilterChecked = "checked"End IfEnd Function'---------------------------------------------------------------------------------------------------------------------------Function Get_CQ_Issues ( SSsql, OOrsCQ )On Error Resume NextSet OOrsCQ = OraDatabase.DbCreateDynaset( SSsql, cint(0))Get_CQ_Issues = Err.NumberEnd Function'--------------------------------------------------------------------------------------------------------------------------Public Function TextToHTML ( sString )Dim mStringIf (sString = "") OR IsNull(sString) Then Exit FunctionmString = Server.HTMLEncode( sString )mString = Replace(mString, VBNewLine, "<br>")TextToHTML = mStringEnd Function'--------------------------------------------------------------------------------------------------------------------------Sub GetFormDetails ( nSourceSBOM, ByRef outobjDetails )Dim rsQry, query' Exit if nSourceRtagId is emptyIf nSourceSBOM = "" Then Exit SubOraDatabase.Parameters.Add "SBOM", nSourceSBOM, ORAPARM_INPUT, ORATYPE_NUMBERquery = _" 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 ThenoutobjDetails.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")ElseErr.Raise 8, "Sub GetFormDetails in "& SCRIPT_NAME, "Empty record set returned. nSourceSBOM="& nSourceSBOMEnd IfIf outobjDetails.Item ("location") = "" ThenoutobjDetails.Item ("location") = "N"End IfrsQry.CloseSet rsQry = NothingEnd Sub'--------------------------------------------------------------------------------------------------------------------------Sub GetDiffStateIcon( nDiffState, outIcon )Select Case nDiffStateCase "U"outIcon = LIMG_UPDATEDCase "UW"outIcon = LIMG_UPDATEDCase "A"outIcon = LIMG_ADDEDCase "R"outIcon = LIMG_REMOVEDCase "UR"outIcon = LIMG_RIPPLEDCase ElseoutIcon = ""End SelectEnd Sub'--------------------------------------------------------------------------------------------------------------------------%><%'------------ RUN BEFORE PAGE RENDER ----------If Request("btn") = "Exit" ThenCall OpenInWindow ( "reports.asp" )End If' Get release detailsCall GetFormDetails ( parSBOMA, objRelCollectorA )Call GetFormDetails ( parSBOMB, objRelCollectorB )If Request("btn") = "Swap Compare" ThenCall OpenInWindow ( SCRIPT_NAME &"?sbomA="& parSBOMB &"&sbomB="& parSBOMA &"&rtagA="& parRtagB &"&rtagB="& parRtagA )End IfIf Request("btn") = "Hide" Then' Store filter in cookieResponse.Cookies(enum_RELMGR_COOKIE_DOMAIN)(COOKIE_HIDE_DIFF_FILTER) = Request("difilter")End IfCall GetDiffFilterValues ( dDiffFilter )'----------------------------------------------%><html><head><title>Deployment Manager SBOM Differences</title><link rel="shortcut icon" href="<%=FavIcon%>"/><meta HTTP-EQUIV="Pragma" CONTENT="no-cache"><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><link href="scripts/deployment_manager.css?ver=<%=VixVerNum%>" rel="stylesheet" type="text/css"><link rel="stylesheet" href="images/release_manager_style.css?ver=<%=VixVerNum%>" type="text/css"><link rel="stylesheet" href="images/navigation.css?ver=<%=VixVerNum%>" type="text/css"><script language="JavaScript" src="scripts/common.js?ver=<%=VixVerNum%>"></script><script language="JavaScript" src="scripts/remote_scripting.js?ver=<%=VixVerNum%>"></script><script language="JavaScript" type="text/javascript"><!--function RequestReleaseCombo( paramString, rowId, rowId2 ){var requestURL = 'RequestReleaseCombo.asp';// Set ajax divnameajaxdivname = rowId;//Append the name to search for to the requestURLvar url = requestURL + paramString;// Cleanout other combo boxesrowId.options[0] = new Option('Loading...','');rowId.selectedIndex = 0;rowId2.innerHTML = '';//Create the xmlHttp object to use in the request//stateChangeHandler will fire when the state has changed, i.e. data is received back// This is non-blocking (asynchronous)xmlHttp = GetXmlHttpObject(stateComboChangeHandler);//Send the xmlHttp get to the specified urlxmlHttp_Get(xmlHttp, url);}function RequestSBOMCombo( paramString, rowId ){var requestURL = 'RequestSBOMCombo.asp';// Set ajax divnameajaxdivname = rowId;//Append the name to search for to the requestURLvar url = requestURL + paramString;//ProgressrowId.options[0] = new Option('Loading...','');rowId.selectedIndex = 0;//Create the xmlHttp object to use in the request//stateChangeHandler will fire when the state has changed, i.e. data is received back// This is non-blocking (asynchronous)xmlHttp = GetXmlHttpObject(stateComboChangeHandler);//Send the xmlHttp get to the specified urlxmlHttp_Get(xmlHttp, url);}//--></script></head><body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0"><form name="FormName" method="post" action="<%=SCRIPT_NAME%>"><!-- HEADER --><!--#include file="_header.asp"--><!-- BODY ----><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td width="20%"><td width="60%"><td width="20%"></tr><tr><td background="images/bg_lite_blue.gif" valign="top"><!-- SELECT SBOM A ----------------------------------------------><br><table width="100%" border="0" cellspacing="10" cellpadding="0"><tr><td align="left" class="body_col"><img src="images/i_rtag_open_mode.gif" border="0" align="absmiddle" width="15" height="13"> Select SBOM A<hr size="1px" color="Olive" noshade></td></tr><tr><td align="left"><select name="projA" class="form_item" onChange="RequestReleaseCombo( '?proj_id='+ this.value, FormName.rtagA, FormName.sbomA );"><option value="">-- Select Project --</option><%OraDatabase.Parameters.Add "PROJ_ID", objRelCollectorA.Item("proj_id"), ORAPARM_INPUT, ORATYPE_NUMBERSet rsQry = OraDatabase.DbCreateDynaset( GetQuery("ProjectsCombo.sql"), cint(0))OraDatabase.Parameters.Remove "PROJ_ID"While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%><option value="<%=rsQry("proj_id")%>" <%=rsQry("selected")%>><%=rsQry("proj_name")%></option><%rsQry.MoveNextWEndrsQry.CloseSet rsQry = Nothing%></select></td></tr><tr><td align="left"><select name="rtagA" id="rtagA" class="form_item" onChange="RequestSBOMCombo( '?branch_id='+ this.value, FormName.sbomA );"><option value="">-- Select Branch --</option><%OraDatabase.Parameters.Add "PROJ_ID", objRelCollectorA.Item("proj_id"), ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "BRANCH_ID", objRelCollectorA.Item("branch_id"), ORAPARM_INPUT, ORATYPE_NUMBERSet rsQry = OraDatabase.DbCreateDynaset( GetQuery("ReleasesCombo.sql"), cint(0))OraDatabase.Parameters.Remove "PROJ_ID"OraDatabase.Parameters.Remove "BRANCH_ID"While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%><option value="<%=rsQry("branch_id")%>" <%=rsQry("selected")%>><%=rsQry("branch_name")%></option><%rsQry.MoveNextWEndrsQry.CloseSet rsQry = Nothing%></select></td></tr><tr><td align="left"><select name="sbomA" id="sbomA" class="form_item"><%OraDatabase.Parameters.Add "BOM_ID", objRelCollectorA.Item("bom_id"), ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "BRANCH_ID", objRelCollectorA.Item("branch_id"), ORAPARM_INPUT, ORATYPE_NUMBERSet rsQry = OraDatabase.DbCreateDynaset( GetQuery("SBOMCombo.sql"), cint(0))OraDatabase.Parameters.Remove "BOM_ID"OraDatabase.Parameters.Remove "BRANCH_ID"While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%><option value="<%=rsQry("bom_id")%>" <%=rsQry("selected")%>><%=rsQry("version")%></option><%rsQry.MoveNextWEndrsQry.CloseSet rsQry = Nothing%></select></td></tr><%If (parRtagA <> "") Then%><tr><td align="left"><a href="Bom_Home.asp?bom_id=<%=parSBOMA%>" class="body_txt_drk">Go To SBOM A »</a></td></tr><%End If%><tr><td><%Call DisplayFilterSelector%></td></tr></table><!-- SELECT SBOM A END ----------------------------------------------></td><td rowspan="2" valign="top" background="images/bg_lght_gray.gif" align="center"><!-- DIFF --------------------------------------------------------><br><table width="100%" border="0" cellspacing="10" cellpadding="0"><tr><td><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td width="1%"></td><td width="100%" align="left" class="form_ttl">DIFF SBOM<%If genReport Then%> [Generating Report]<%End If%><%If genSummary Then%> [Generating Summary]<%End If%></td><td width="1%"></td></tr><tr><td align="left" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tl_cnr_b.gif" width="13" height="13"></td><td background="images/lbox_bg_blue.gif" align="left" class="wform_ttl"> </td><td align="right" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tr_cnr_b.gif" width="13" height="13"></td></tr><tr><td width="1%" bgcolor="#FFFFFF"><img src="images/h_trsp_dot.gif" width="10" height="100"></td><td bgcolor="#FFFFFF" valign="top" class="form_item"><table width="100%" border="0" cellspacing="0" cellpadding="5"><tr><td width="100%" bgcolor="#DAD7C8"><input type="submit" name="btn" value="Compare" class="form_btn_comp" style="margin-right:5px;"><input type="submit" name="btn" value="Swap Compare" class="form_btn_comp"><span class="body_txt"><button name="btn" type="submit" class="form_btn" value="btn_report">Mail Me Report</button><button name="btn" type="submit" class="form_btn" value="btn_summary">Mail Me Summary</button><% '<button name="btn" type="submit" class="form_btn" value="btn_showRep">Show Me Report</button>%></span></td><td width="1" align="right" bgcolor="#DAD7C8" nowrap><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td><input type="submit" name="btn" value="Exit" class="form_btn_comp"></td></tr></table></td></tr></table><%If genReport ThenSet FSO=Server.CreateObject("Scripting.FileSystemObject")NewTextFilePath = Server.MapPath("docs\compareBoms_"&objAccessControl.UserName&".html")Set NewTextFile=FSO.CreateTextFile(NewTextFilePath, true)Call Header()End IfIf (parRtagA <> "") AND (parRtagB <> "")Then%><table width="100%" border="0" cellspacing="1" cellpadding="0"><tr><td width="50%" bgcolor="#E4E9EC" class="body_row" nowrap><%= ReleaseIcon(objRelCollectorA.Item("official")) & objRelCollectorA.Item("location")%> </td><td width="1" bgcolor="#E4E9EC"><img src="images/spacer.gif" width="20" height="1"></td><td width="1" bgcolor="#E4E9EC"><img src="images/spacer.gif" width="20" height="20"></td><td width="1" bgcolor="#E4E9EC"><img src="images/spacer.gif" width="20" height="1"></td><td width="50%" bgcolor="#E4E9EC" class="body_row" nowrap><%= ReleaseIcon(objRelCollectorB.Item("official")) & objRelCollectorB.Item("location")%></td></tr><%OraDatabase.Parameters.Add "SBOM_A", parSBOMA, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "SBOM_B", parSBOMB, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "NO_CHANGE", GetIsDiffFilterChecked(enumDB_DIFF_NO_CHANGE), ORAPARM_INPUT, ORATYPE_VARCHAR2OraDatabase.Parameters.Add "ADDED", GetIsDiffFilterChecked(enumDB_DIFF_NEW), ORAPARM_INPUT, ORATYPE_VARCHAR2OraDatabase.Parameters.Add "UPDATED", GetIsDiffFilterChecked(enumDB_DIFF_UPDATED), ORAPARM_INPUT, ORATYPE_VARCHAR2OraDatabase.Parameters.Add "REMOVED", GetIsDiffFilterChecked(enumDB_DIFF_REMOVED), ORAPARM_INPUT, ORATYPE_VARCHAR2Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("BOMDiff.sql"), cint(0))OraDatabase.Parameters.Remove "SBOM_A"OraDatabase.Parameters.Remove "SBOM_B"OraDatabase.Parameters.Remove "NO_CHANGE"OraDatabase.Parameters.Remove "ADDED"OraDatabase.Parameters.Remove "UPDATED"OraDatabase.Parameters.Remove "REMOVED"Set rsQryA = OraDatabase.DbCreateDynaset( "SELECT pr.PROJ_NAME, br.BRANCH_NAME, b.BOM_VERSION ||'.'||b.BOM_LIFECYCLE AS LOCATION, "&_" pr.PROJ_ID, b.BOM_ID, br.BRANCH_ID"&_" 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 ="&parSBOMA, cint(0))Set rsQryB = OraDatabase.DbCreateDynaset( "SELECT pr.PROJ_NAME, br.BRANCH_NAME, b.BOM_VERSION ||'.'||b.BOM_LIFECYCLE AS LOCATION, "&_" pr.PROJ_ID, b.BOM_ID, br.BRANCH_ID"&_" 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 ="&parSBOMB, cint(0))If genReport ThenNewTextFile.WriteLine("<title>Difference Report Between "&_rsQryA("branch_name")&" "& rsQryA("location")&" and "&_rsQryB("branch_name")&" "& rsQryB("location")&_"</title>")Call Javascript()Call Styles()NewTextFile.WriteLine("</head>")NewTextFile.WriteLine("<body>")NewTextFile.WriteLine("<div class="&chr(34)&"page_title"&chr(34)&">Difference Report Between "&_rsQryA("proj_name") & " > " & rsQryA("branch_name")&" > "&rsQryA("location")&" and "&_rsQryB("proj_name") & " > " & rsQryB("branch_name")&" > "&rsQryB("location")&_"</div><br><br>")End IfSummary("<table style='border:1px solid black;border-collapse: collapse;'")Summary("<tr>")Summary("<td colspan=2 style='border: 1px solid black;'>"&rsQryA("proj_name") & " > " & rsQryA("branch_name")&" > "&rsQryA("location")&"</td>")Summary("<td colspan=2 style='border: 1px solid black;'>"&rsQryB("proj_name") & " > " & rsQryB("branch_name")&" > "&rsQryB("location")&"</td>")Summary("</tr>")If genReport ThenNewTextFile.WriteLine("<b>Toggle Sections:</b><blockquote>")NewTextFile.WriteLine("<a href=""javascript:;"" onClick=""MM_toggleAll('divPkgInfo','1');"">Expand All</a>")NewTextFile.WriteLine("<a href=""javascript:;"" onClick=""MM_toggleAll('divPkgInfo','');"">Collapse All</a>")NewTextFile.WriteLine("</blockquote>")End IfWhile ((NOT rsQry.BOF) AND (NOT rsQry.EOF))VersionList = "0"errormsg = falserowId = rsQry("pv_id_a") &"_"& rsQry("pv_id_b")btnMerge = LIMG_MERGEbtnRemove = LIMG_REMOVEcolorA = LCOLOR_NOT_CHANGEDcolorB = LCOLOR_NOT_CHANGEDSelect Case rsQry("change_type")Case "U"colorA = LCOLOR_CHANGEDcolorB = LCOLOR_CHANGEDCase "UW"colorA = LCOLOR_CHANGEDcolorB = LCOLOR_CHANGEDbtnMerge = LIMG_MERGE_WARNCase "UR"colorA = LCOLOR_RIPPLEDcolorB = LCOLOR_RIPPLEDCase "A"colorA = LCOLOR_BLANKCase "R"colorB = LCOLOR_BLANKEnd SelectCall GetDiffStateIcon ( rsQry("change_type"), ChangeTypeIcon )%><tr><td class="body_row" nowrap><DIV id="PVA<%=rowId%>" style="background:<%=colorA%>; padding:5px;"><%=rsQry("pkg_name_a") &" "& rsQry("pkg_version_a")%></DIV><input type="hidden" id="UNDOCOLORA_<%=rowId%>" value="<%=colorA%>"></td><td bgcolor="#F5F5F5"></td><td bgcolor="#E4E9EC"><DIV id="IMGSTATE<%=rowId%>" ><%=ChangeTypeIcon%></DIV><input type="hidden" id="CHANGETYPE_<%=rowId%>" value="<%=rsQry("change_type")%>"></td><td bgcolor="#F5F5F5"></td><td class="body_row" nowrap><DIV id="PVB<%=rowId%>" style="background:<%=colorB%>; padding:5px;"><%=rsQry("pkg_name_b") &" "& rsQry("pkg_version_b")%></DIV><input type="hidden" id="UNDOCOLORB_<%=rowId%>" value="<%=colorB%>"><input type="hidden" name="addpkg" id="ADDPKG_<%=rowId%>" value=""><input type="hidden" name="removepkg" id="REMOVEPKG_<%=rowId%>" value=""><input type="hidden" id="UNDOPKG_<%=rowId%>" value="<%=rsQry("pkg_name_b") &" "& rsQry("pkg_version_b")%>"></td></tr><%Summary("<tr>")Summary("<td style='border: 1px solid black;'>"&rsQry("pkg_name_a")&"</td>")Summary("<td style='border: 1px solid black;'>"&rsQry("pkg_version_a")&"</td>")Summary("<td style='border: 1px solid black;'>"&rsQry("pkg_name_b")&"</td>")Summary("<td style='border: 1px solid black;'>"&rsQry("pkg_version_b")&"</td>")Summary("</tr>")If genReport ThenIf rsQry("pv_id_a") ThenSet rsQryCommentsA = OraDatabase.DbCreateDynaset( "SELECT COMMENTS FROM PACKAGE_VERSIONS WHERE PV_ID="& rsQry("pv_id_a"), cint(0))End IfIf rsQry("pv_id_b") ThenSet rsQryCommentsB = OraDatabase.DbCreateDynaset( "SELECT COMMENTS FROM PACKAGE_VERSIONS WHERE PV_ID="& rsQry("pv_id_b"), cint(0))End IfpkgA = rsQry("pkg_name_a")pkgB = rsQry("pkg_name_b")If pkgA <> "" thenpkgname = pkgAElsepkgname = pkgBEnd IfIf rsQry("change_type") = "U" OR rsQry("change_type") = "UW" ThenNewTextFile.Write("<p><a href=""javascript:;"" class=""body_scol"" onClick=""toggleSPAN('"& rowId &"');"">"& pkgname &"</a>")NewTextFile.WriteLine("<DIV class=divPkgInfo id=""spanPkgInfo"& rowId &""" name=""spanPkgInfo"" style=""display:none;"">")NewTextFile.Write(rsQryA("location")&" uses: "&rsQry("pkg_version_a")&" ")NewTextFile.WriteLine("<br>")NewTextFile.Write(rsQryB("location")&" uses: "&rsQry("pkg_version_b")&" ")a = rsQry("pv_id_a")b = rsQry("pv_id_b")c = rsQry("pv_id_a")d = rsQry("pv_id_b")NewTextFile.WriteLine("<br><br>")NewTextFile.WriteLine()NewTextFile.WriteLine("<b>"&rsQryB("location")&"</b>")Call Comments(rsQry("pv_id_b"), Request("filter_comments"))Call GetFixedIssues(rsQry("pv_id_b"), Request("filter_issues"))Dim rsQryLastSet rsQryLast = OraDatabase.DbCreateDynaset( "SELECT LAST_PV_ID FROM PACKAGE_VERSIONS WHERE PV_ID="& rsQry("pv_id_b"), cint(0))If rsQryLast("last_pv_id") <> a ThenCall PreviousVersions(a, b, rsQry("pkg_version_a"), rsQry("pkg_version_b"), Request("filter_comments"), Request("filter_issues"))End Ifa = rsQry("pv_id_a")b = rsQry("pv_id_b")Call GetDependencies(a, VersionList + ","+ b, rsQry("pkg_version_a"), rsQry("pkg_version_b"), Request("filter_comments"), Request("filter_issues"))NewTextFile.WriteLine("</DIV>")rsQryLast.Close()Set rsQryLast = NothingEnd IfIf rsQry("change_type") = "A" AND rsQry("patch_b") = "Y" ThenDim rsQryPatchOraDatabase.Parameters.Add "PV_ID", rsQry("pv_id_b"), ORAPARM_INPUT, ORATYPE_NUMBERSet rsQryPatch = OraDatabase.DbCreateDynaset( GetQuery("pd_patch.sql"), cint(0))OraDatabase.Parameters.Remove "PV_ID"If NOT IsNull(rsQryPatch("pv_id")) ThenNewTextFile.Write("<p><a href=""javascript:;"" class=""body_scol"" onClick=""toggleSPAN('_p"& rowId &"');""><font face="&chr(34)&"Verdana, Arial, Helvetica, sans-serif"&chr(34)&">"& rsQryPatch("pkg_name") &" "& rsQryPatch("pkg_version") &"</font></a>")NewTextFile.WriteLine("<DIV class=divPkgInfo id=""spanPkgInfo_p"& rowId &""" name=""spanPkgInfo"" style=""display:none;"">")Call Comments(rsQryPatch("pv_id"), Request("filter_comments"))Call GetFixedIssues(rsQryPatch("pv_id"), Request("filter_issues"))ElseNewTextFile.Write("<p><a href=""javascript:;"" class=""body_scol"" onClick=""toggleSPAN('_p"& rowId &"');""><font face="&chr(34)&"Verdana, Arial, Helvetica, sans-serif"&chr(34)&">"& rsQry("pkg_name_b") &" "& rsQry("pkg_version_b") &"</font></a>")NewTextFile.WriteLine("<DIV class=divPkgInfo id=""spanPkgInfo_p"& rowId &""" name=""spanPkgInfo"" style=""display:none;"">")Call Comments(rsQry("pv_id_b"), Request("filter_comments"))Call GetFixedIssues(rsQry("pv_id_b"), Request("filter_issues"))End IfNewTextFile.WriteLine("</DIV>")rsQryPatch.CloseSet rsQryPatch = nothingEnd IfEnd IfrsQry.MoveNextWEndrsQry.CloseSet rsQry = Nothing%><%Summary("</table>")If genReport ThenCall Footer()NewTextFile.CloseSet NewTextFile=NothingEnd If%></table><br><%Else%><br><%If (parRtagB <> "") ThenCall Messenger ( "Select <b>SBOM A</b> to compare.", 3, "100%" )ElseIf (parRtagA <> "") ThenCall Messenger ( "Select <b>SBOM B</b> to compare.", 3, "100%" )ElseCall Messenger ( "Select <b>SBOM A</b> and <b>SBOM B</b> to compare.", 3, "100%" )End If%><%End If%></td><td width="1%" background="images/lbox_bgside_white.gif"> </td></tr><tr><td width="1%" background="images/lbox_bg_blue.gif" valign="bottom"><img src="images/lbox_bl_cnr_b.gif" width="13" height="13"></td><td background="images/lbox_bg_blue.gif"></td><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></tr></table></td></tr></table><!-- DIFF END ----------------------------------------------------></td><td valign="top" background="images/bg_lite_blue.gif"><!-- SELECT SBOM B ----------------------------------------------><br><table width="100%" border="0" cellspacing="10" cellpadding="0"><tr><td align="left" class="body_col"><img src="images/i_rtag_open_mode.gif" border="0" align="absmiddle" width="15" height="13"> Select SBOM B<hr size="1px" color="Olive" noshade></td></tr><tr><td align="left"><select name="projB" class="form_item" onChange="RequestReleaseCombo( '?proj_id='+ this.value, FormName.rtagB, FormName.sbomB );"><option value="">-- Select Project --</option><%OraDatabase.Parameters.Add "PROJ_ID", objRelCollectorB.Item("proj_id"), ORAPARM_INPUT, ORATYPE_NUMBERSet rsQry = OraDatabase.DbCreateDynaset( GetQuery("ProjectsCombo.sql"), cint(0))OraDatabase.Parameters.Remove "PROJ_ID"While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%><option value="<%=rsQry("proj_id")%>" <%=rsQry("selected")%>><%=rsQry("proj_name")%></option><%rsQry.MoveNextWEndrsQry.CloseSet rsQry = Nothing%></select></td></tr><tr><td align="left"><select name="rtagB" id="rtagB" class="form_item" onChange="RequestSBOMCombo( '?branch_id='+ this.value, FormName.sbomB );"><option value="">-- Select Branch --</option><%OraDatabase.Parameters.Add "PROJ_ID", objRelCollectorB.Item("proj_id"), ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "BRANCH_ID", objRelCollectorB.Item("branch_id"), ORAPARM_INPUT, ORATYPE_NUMBERSet rsQry = OraDatabase.DbCreateDynaset( GetQuery("ReleasesCombo.sql"), cint(0))OraDatabase.Parameters.Remove "PROJ_ID"OraDatabase.Parameters.Remove "BRANCH_ID"While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%><option value="<%=rsQry("branch_id")%>" <%=rsQry("selected")%>><%=rsQry("branch_name")%></option><%rsQry.MoveNextWEndrsQry.CloseSet rsQry = Nothing%></select></td></tr><tr><td align="left"><select name="sbomB" id="sbomB" class="form_item"><%OraDatabase.Parameters.Add "BOM_ID", objRelCollectorB.Item("bom_id"), ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "BRANCH_ID", objRelCollectorB.Item("branch_id"), ORAPARM_INPUT, ORATYPE_NUMBERSet rsQry = OraDatabase.DbCreateDynaset( GetQuery("SBOMCombo.sql"), cint(0))OraDatabase.Parameters.Remove "BOM_ID"OraDatabase.Parameters.Remove "BRANCH_ID"While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%><option value="<%=rsQry("bom_id")%>" <%=rsQry("selected")%>><%=rsQry("version")%></option><%rsQry.MoveNextWEndrsQry.CloseSet rsQry = Nothing%></select></td></tr><%If (parRtagB <> "") Then%><tr><td align="left"><a href="Bom_home.asp?bom_id=<%=parSBOMB%>" class="body_txt_drk">Go To SBOM B »</a></td></tr><%End If%></table><!-- SELECT RELEASE B END ----------------------------------------------></td></tr><tr><td valign="bottom" align="center" background="images/bg_lite_blue.gif"><img src="images/img_vtree.gif" width="86" height="99" vspace="20" hspace="30"></td><td valign="bottom" background="images/bg_lite_blue.gif" align="center"><img src="images/img_vtree.gif" width="86" height="99" vspace="20" hspace="30"></td></tr></table></form><%If email ThenDim myMailSet myMail=Server.CreateObject("Persits.MailSender")myMail.Host = SMTP_HOSTmyMail.From="releasem@vixtechnology.com"myMail.AddAddress objAccessControl.UserEmailIf genReport ThenmyMail.Subject="BOM Comparisons from Deployment Manager"myMail.Body = "Your requested report..."myMail.AddAttachment NewTextFilePathElsemyMail.Subject="BOM Sumamry Comparisons from Deployment Manager"myMail.Body = summaryTextmyMail.IsHTML = TrueEnd IfmyMail.Sendset myMail=nothingEnd If%><!-- FOOTER --><!--#include file="_footer.asp"--></body></html>