Rev 1281 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<%@LANGUAGE="VBSCRIPT"%><%'=====================================================' SEE CIRCULAR DEPENDENCIES''=====================================================%><%Option explicit' Good idea to set when using redirectResponse.Expires = 0 ' always load the page, dont store%><!--#include file="common/conf.asp"--><!--#include file="common/globals.asp"--><!--#include file="common/formating.asp"--><!--#include file="common/qstr.asp"--><!--#include file="common/common_subs.asp"--><!--#include file="common/common_dbedit.asp"--><%'------------ ACCESS CONTROL ------------------%><!--#include file="_access_control_general.asp"--><%'------------ Variable Definition -------------Dim parPkgNDim parPkgVDim ERRlog ' used to log any unsuspected calls. It is then passed to create error messageDim ERRlogFULL ' full submitted list used in error meassage creation'------------ Constants Declaration -----------'------------ Variable Init -------------------parPkgN = QStrPar("pkgN")parPkgV = QStrPar("pkgV")ERRlog = ""ERRlogFULL = ""'----------------------------------------------%><%Sub Check_Circular_Dependencies( SSpkgN, SSpkgV, NNrtag_id, SSERRlogFULL, SSERRlog )Dim rsTemp, Query_String, nameHashDim deplist, depnamelist, relistDim tempARR, itemDim pkg_id, pv_idSet nameHash = CreateObject("Scripting.Dictionary")deplist = "-1"depnamelist = "''"relist = Get_PV_IDs_In_Release ( NNrtag_id )Call Get_Pkg_id ( SSpkgN, SSpkgV, pkg_id, pv_id )' get ids of submited pkgsQuery_String = _"SELECT dep.dpkg_id AS pkg_id, pkg.pkg_name, pv.pkg_version"&_" FROM packages pkg, package_versions pv, package_dependencies dep"&_" WHERE pkg.pkg_id = pv.pkg_id"&_" AND pv.pv_id = dep.dpv_id"&_" AND dep.pv_id ="& pv_idSet rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))deplist = deplist &","& rsTemp.Fields("pkg_id")depnamelist = depnamelist &",'"& rsTemp.Fields("pkg_name") &"'"SSERRlogFULL = LogError ( SSERRlogFULL, Cstr(rsTemp.Fields("pkg_name")) &","& Cstr(rsTemp.Fields("pkg_version")) )If NOT nameHash.Exists( Cstr(rsTemp.Fields("pkg_id")) ) Then nameHash.Add Cstr(rsTemp.Fields("pkg_id")), Cstr(rsTemp.Fields("pkg_name")) &","& Cstr(rsTemp.Fields("pkg_version"))rsTemp.MoveNextWEndrsTemp.CloseSet rsTemp = nothing'=== Detect Circular Dependencies ===============Query_String = ReadFile( rootPath & "queries\detect_circular_deps.qry" )Query_String = Replace( Query_String, "$PKG_ID$", pkg_id )Query_String = Replace( Query_String, "$DEPLIST$", deplist )Query_String = Replace( Query_String, "$DEPNAMESTR$", depnamelist )Query_String = Replace( Query_String, "$RELIST$", relist )Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))If rsTemp.RecordCount > 0 Then' Circular dependencies FOUNDWhile ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))If nameHash.Exists( Cstr(rsTemp.Fields("pkg_id")) ) ThenSSERRlog = LogError ( SSERRlog, nameHash.Item( Cstr(rsTemp.Fields("pkg_id")) ) &",4" ) ' It may be used as error log in some casesEnd IfrsTemp.MoveNextWEndEnd IfrsTemp.CloseSet rsTemp = nothingSet nameHash = nothingEnd SubSub Get_Pkg_id ( SSpkgN, SSpkgV, pkg_id, pv_id )Dim rsTemp, Query_StringQuery_String = _" SELECT pkg.pkg_id, pv.pv_id"&_" FROM packages pkg, package_versions pv"&_" WHERE pkg.pkg_id = pv.pkg_id"&_" AND pkg.pkg_name = '"& SSpkgN &"'"&_" AND pv.pkg_version = '"& SSpkgV &"'"Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Thenpkg_id = (rsTemp.Fields("pkg_id"))pv_id = (rsTemp.Fields("pv_id"))End IfrsTemp.CloseSet rsTemp = nothingEnd Sub%><%'----------------------- MAIN LINE ---------------------------'--- Process submition ---If (parPkgN <> "") AND (parPkgV <> "") AND (parRtag_id <> "") Then' All mandatory parameters FOUNDCall Check_Circular_Dependencies( parPkgN, parPkgV, parRtag_id, ERRlogFULL, ERRlog )'-- circular dependencies error messageIf (ERRlog <> "") ThenSession("ERRlog") = ERRlogSession("ERRlogFULL") = ERRlogFULLSession("AdditionalParams") = "$PACKAGE$,"& parPkgN &" "& parPkgV'Response.write ERRlogResponse.Redirect("message.asp?msg=202-5&justemplate=true"& QSTR)End IfElseResponse.write "Some mandatory parameters are missing!" & "<br>" 'TODOResponse.write QSTR_AllEnd If%>