Subversion Repositories DevTools

Rev

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 redirect
Response.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 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
                Response.Redirect("message.asp?msg=202-5&justemplate=true"& QSTR)
        End If
        
Else
        Response.write "Some mandatory parameters are missing!" & "<br>" 'TODO
        Response.write QSTR_All 
End If
%>