<%@LANGUAGE="VBSCRIPT"%> <% '===================================================== ' see_circular_dependencies.asp ' '===================================================== %> <% Option explicit ' Good idea to set when using redirect Response.Expires = 0 ' always load the page, dont store %> <% '------------ ACCESS CONTROL ------------------ %> <% '------------ Variable Definition ------------- Dim parPkgN Dim parPkgV Dim ERRlog ' used to log any unsuspected calls. It is then passed to create error message Dim 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, nameHash Dim deplist, depnamelist, relist Dim tempARR, item Dim pkg_id, pv_id Set 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 pkgs Query_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_id Set 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.MoveNext WEnd rsTemp.Close Set 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 FOUND While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) If nameHash.Exists( Cstr(rsTemp.Fields("pkg_id")) ) Then SSERRlog = LogError ( SSERRlog, nameHash.Item( Cstr(rsTemp.Fields("pkg_id")) ) &",4" ) ' It may be used as error log in some cases End If rsTemp.MoveNext WEnd End If rsTemp.Close Set rsTemp = nothing Set nameHash = nothing End Sub Sub Get_Pkg_id ( SSpkgN, SSpkgV, pkg_id, pv_id ) Dim rsTemp, Query_String Query_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)) Then pkg_id = (rsTemp.Fields("pkg_id")) pv_id = (rsTemp.Fields("pv_id")) End If rsTemp.Close Set rsTemp = nothing End Sub %> <% '----------------------- MAIN LINE --------------------------- '--- Process submition --- If (parPkgN <> "") AND (parPkgV <> "") AND (parRtag_id <> "") Then ' All mandatory parameters FOUND Call Check_Circular_Dependencies( parPkgN, parPkgV, parRtag_id, ERRlogFULL, ERRlog ) '-- circular dependencies error message If (ERRlog <> "") Then Session("ERRlog") = ERRlog Session("ERRlogFULL") = ERRlogFULL Session("AdditionalParams") = "$PACKAGE$,"& parPkgN &" "& parPkgV 'Response.write ERRlog Call Destroy_All_Objects Response.Redirect("message.asp?msg=202-5&justemplate=true"& QSTR) End If Else Response.write "Some mandatory parameters are missing!" & "
" 'TODO Response.write QSTR_FullQuery End If Call Destroy_All_Objects %>