Subversion Repositories DevTools

Rev

Blame | Last modification | View Log | RSS feed

<%@LANGUAGE="VBSCRIPT"%>
<%
'=====================================================
'                                   NEW VERSION
'               --- PROCESS FORM ---
'=====================================================
%>
<%
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"-->
<%
' Set rfile parameter. This is a return page after Login
Call objPMod.StoreParameter ( "rfile", "dependencies.asp" )
'------------ ACCESS CONTROL ------------------
%>
<!--#include file="_access_control_login.asp"-->
<!--#include file="_access_control_general.asp"-->
<!--#include file="_access_control_project.asp"-->
<%
'------------ Variable Definition -------------
Dim parOLDpv_id
Dim parFRnewver
Dim NEWpv_id
Dim parSetToPv_id
Dim parSync_rtags
Dim toTouch
'------------ Constants Declaration -----------
'------------ Variable Init -------------------
parOLDpv_id = QStrPar("OLDpv_id")
parFRnewver = QStrPar("FRnewver")
parSetToPv_id = QStrPar("pv_id")
parSync_rtags = Request("sync_rtags")
'----------------------------------------------
%>
<%
Sub New_Version ( SSnewver, NNorig_pv_id, NNSetToPv_id, NNrtag_id, sSyncRtags, retNEWpv_id )
        Dim cAlterReleaseWhileRestrictive, rsQry
        
        On Error Resume Next
        objEH.ErrorRedirect = TRUE
        
        
        OraDatabase.Parameters.Add "ORIG_PV_ID",                                NNorig_pv_id,                           ORAPARM_INPUT, ORATYPE_NUMBER
        
        If Request("build_type") = "M" Then
                ' Manual build
                OraDatabase.Parameters.Add "PKG_VERSION",  SSnewver,             ORAPARM_INPUT, ORATYPE_VARCHAR2
                
        Else
                ' Automated Build
                OraDatabase.Parameters.Add "PKG_VERSION",  Request("v_ext"), ORAPARM_INPUT, ORATYPE_VARCHAR2
                
        End If
        
        ' Access Control - Allow release change while release is in restrictive mode
        cAlterReleaseWhileRestrictive = "N"
        If objAccessControl.IsActive("AlterReleaseContentsInRestrictiveMode") Then cAlterReleaseWhileRestrictive = "Y"
        
        
        OraDatabase.Parameters.Add "BUILD_TYPE",                                Request("build_type"),          ORAPARM_INPUT, ORATYPE_CHAR
        OraDatabase.Parameters.Add "ALTER_RELEASE",                     cAlterReleaseWhileRestrictive,          ORAPARM_INPUT, ORATYPE_CHAR
        OraDatabase.Parameters.Add "SET_TO_PV_ID",                              NNSetToPv_id,                           ORAPARM_INPUT, ORATYPE_NUMBER
        OraDatabase.Parameters.Add "RTAG_ID",                                   NNrtag_id,                                      ORAPARM_INPUT, ORATYPE_NUMBER
        OraDatabase.Parameters.Add "USER_ID",                                   objAccessControl.UserId,        ORAPARM_INPUT, ORATYPE_NUMBER
        OraDatabase.Parameters.Add "enumISSUES_STATE_IMPORTED", enumISSUES_STATE_IMPORTED,      ORAPARM_INPUT, ORATYPE_NUMBER
        OraDatabase.Parameters.Add "RETPV_ID",                                  0,                                                      ORAPARM_OUTPUT,ORATYPE_NUMBER 
        
        objEH.TryORA ( OraSession )
        
        Set rsQry = OraDatabase.DbCreateDynaset("SELECT * FROM RELEASE_CONTENT WHERE RTAG_ID ="& Request("rtag_id") &" AND PV_ID = "& NNorig_pv_id &"", cint(0))
        
        If (NOT IsNull(rsQry("pkg_id"))) AND rsQry("pkg_state") = 6  Then
                
                Dim rsPv_id
                
                If (SSnewver) <> ""  Then 
                
                
                        Set rsPv_id = OraDatabase.DbCreateDynaset("SELECT * FROM PACKAGE_VERSIONS WHERE PKG_VERSION ='"& SSnewver &"' AND PKG_ID = "& rsQry("pkg_id") &"", cint(0))
                
                        retNEWpv_id =  rsPv_id("pv_id")
                
                        rsPv_id.Close()
                        Set rsPv_id = nothing
                Else
                        retNEWpv_id = NNSetToPv_id      
                End If  
                If NOT IsNull(retNewpv_id) Then
                        OraDatabase.ExecuteSQL _
                        "BEGIN "&_
                        " UPDATE RELEASE_CONTENT SET PV_ID ="& retNEWpv_id &" WHERE RTAG_ID ="& Request("rtag_id") &" AND PV_ID ="& Request("OLDpv_id")&"; "&_
                        "END;"
                Else
                        OraDatabase.ExecuteSQL _
                        "BEGIN "&_
                        " PK_PACKAGE.NEW_VERSION ( :ORIG_PV_ID, "&_
                        "                    :PKG_VERSION,"&_
                        "                    :BUILD_TYPE,"&_
                        "                    :SET_TO_PV_ID,"&_
                        "                    :RTAG_ID,"&_
                        "                    :USER_ID,"&_
                        "                    :enumISSUES_STATE_IMPORTED,"&_
                        "                    :RETPV_ID ); "&_
                        " PK_RELEASE.CAN_USER_WRITE_TO_RELEASE ( :RTAG_ID, :RETPV_ID, :ALTER_RELEASE ); "&_
                        " PK_ENVIRONMENT.REPLACE_PACKAGE ( :RETPV_ID, :ORIG_PV_ID, :RTAG_ID, :USER_ID ); "&_
                        "END;"
                
                        retNEWpv_id = OraDatabase.Parameters("RETPV_ID").Value  
                End If  
        Else
                OraDatabase.ExecuteSQL _
                "BEGIN "&_
                " PK_PACKAGE.NEW_VERSION ( :ORIG_PV_ID, "&_
            "                    :PKG_VERSION,"&_
                "                    :BUILD_TYPE,"&_
                "                    :SET_TO_PV_ID,"&_
                "                    :RTAG_ID,"&_
                "                    :USER_ID,"&_
                "                    :enumISSUES_STATE_IMPORTED,"&_
                "                    :RETPV_ID ); "&_
                " PK_RELEASE.CAN_USER_WRITE_TO_RELEASE ( :RTAG_ID, :RETPV_ID, :ALTER_RELEASE ); "&_
                " PK_ENVIRONMENT.REPLACE_PACKAGE ( :RETPV_ID, :ORIG_PV_ID, :RTAG_ID, :USER_ID ); "&_
                "END;"
                
                retNEWpv_id = OraDatabase.Parameters("RETPV_ID").Value  
                
        End If
        
        
        rsQry.Close()
        Set rsQry = nothing
        objEH.CatchORA ( OraSession )
        
        
        OraDatabase.Parameters.Remove "ORIG_PV_ID"
        OraDatabase.Parameters.Remove "ALTER_RELEASE"
        OraDatabase.Parameters.Remove "PKG_VERSION"
        OraDatabase.Parameters.Remove "BUILD_TYPE"
        OraDatabase.Parameters.Remove "SET_TO_PV_ID"
        OraDatabase.Parameters.Remove "RTAG_ID"
        OraDatabase.Parameters.Remove "USER_ID"
        OraDatabase.Parameters.Remove "enumISSUES_STATE_IMPORTED"
        OraDatabase.Parameters.Remove "RETPV_ID" 
End Sub
'---------------------------------------------------------------
Sub Config_Spec (NNRtag_id, NNPv_id)
        OraDatabase.Parameters.Add "RTAG_ID", NNRtag_id,        ORAPARM_INPUT, ORATYPE_NUMBER 
        OraDatabase.Parameters.Add "PV_ID", NNPv_id,    ORAPARM_INPUT, ORATYPE_NUMBER 

        Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("config_spec.sql"), cint(0))
        
        OraDatabase.Parameters.Remove "RTAG_ID" 
        OraDatabase.Parameters.Remove "PV_ID"

End Sub
'---------------------------------------------------------------
Sub Config_Spec_Template (config_branch, pkg_label, src_path, pkg_name, release_name)

                                                
        Dim myMail, LocalPath, Template
        
        Set myMail=Server.CreateObject("Persits.MailSender")
        'LocalPath = Server.MapPath("docs\compareReleases_"&objAccessControl.UserName&".html")
        myMail.Host = SMTP_HOST
        myMail.Subject="Config Specs for package "& pkg_name &" in "& release_name &""
        myMail.From = ADMIN_EMAIL
        myMail.AddAddress objAccessControl.UserEmail
        ' Attach the file
        'myMail.AddAttachment LocalPath
        Template = "element * CHECKEDOUT" & chr(13) & chr(10) & _
        "element .../lost+found -none" & chr(13) & chr(10) & _
        "element * .../"& config_branch &"/LATEST" & chr(13) & chr(10) & _
        "element * "& pkg_label &" -mkbranch "& config_branch &"" & chr(13) & chr(10) & _
        "element * /main/0 -mkbranch "& config_branch &"" & chr(13) & chr(10) & _
        "load "& src_path &""
        
        
        myMail.Body = Template
        myMail.Send
        set myMail=nothing


End Sub
'---------------------------------------------------------------
Function SanityCheck ( newVersion )

        SanityCheck = False

        Dim objRegEx
    Set objRegEx = New RegExp
        
    objRegEx.IgnoreCase = True
    objRegEx.Pattern = "[^a-zA-Z0-9\.\-\_]"
                
        If Len(newVersion) <= 50 Then
                If NOT objRegEx.Test( newVersion ) Then
                        SanityCheck = True
                End If
        End If

        Set objRegEx = Nothing

End Function
'---------------------------------------------------------------
%>
<%
'-----------------------  MAIN LINE  ---------------------------
Dim rsQry, Query_String, Record_Count
'--- Process submission ---
If (parOLDpv_id <> "") AND ( (parFRnewver <> "") OR (parSetToPv_id <> "") ) AND (parRtag_id <> "") Then
        ' All mandatory parameters FOUND

        If SanityCheck( parFRnewver ) Then
        
                Query_string = " SELECT pv.pv_id, pv.is_patch, pv.dlocked"&_
                                        " FROM package_versions pv"&_
                                                " WHERE pv.pkg_version = '"& parFRnewver &"'"&_
                                " AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id"&_
                                                "  FROM package_versions origpv"&_
                                                " WHERE origpv.pv_id = "& parOLDpv_id &")"
                
                Set rsQry = OraDatabase.DbCreateDynaset(Query_String, cint(0))
                Record_Count = rsQry.RecordCount
                rsQry.Close()
                Set rsQry = Nothing
                
                
                If Record_Count > 0 And Request("build_type") = "M" Then
                        Call RaiseMsg ( enum_MSG_PACKAGE_VERSION_EXISTS&"?rtag_id="& parRtag_id &"&pv_id="& parOLDpv_id &"", parFRnewver )
                Else
                        'If IsNull(rsQry("pkg_id")) Then
                        Call New_Version ( parFRnewver, parOLDpv_id, parSetToPv_id, parRtag_id, parSync_rtags, NEWpv_id )
                        'Else
                                'OraSession.BeginTrans
                                'OraDatabase.ExecuteSQL _
                                '" UPDATE RELEASE_CONTENT SET PV_ID ="& Request("pv_id") &" WHERE RTAG_ID ="& Request("rtag_id") &" AND PV_ID ="& Request("OLDpv_id")
                                'OraSession.CommitTrans
                        'End If
                
                        'rsQry.Close()
                        'Set rsQry = nothing
                        
                        'Call Config_Spec (parRtag_id, NEWpv_id) 
                

                
                        If objEH.Finally Then
                                'If (rsQry("config_spec_branch") <> "" AND rsQry("pkg_label") <> "" AND  rsQry("src_path") <> "") Then
                                        'Call Config_Spec_Template (rsQry("config_spec_branch"), rsQry("pkg_label"), rsQry("src_path"), rsQry("pkg_name"), rsQry("rtag_name"))
                                'End If
                                Response.Redirect("dependencies.asp?rtag_id="& parRtag_id &"&pv_id="& NEWpv_id )        
                        
                                'rsQry.Close()
                                'Set rsQry = nothing
                                
                        End If
                End If

        Else
                Call RaiseMsg( enum_MSG_PACKAGE_VERSION_INVALID&"?rtag_id="& parRtag_id &"&pv_id="& parOLDpv_id &"", parFRnewver )
        End If
        
Else
        Response.write "Some mandatory parameters are missing!" & "<br>" 'TODO
        Response.write QSTR_All 
End If
%>

<!-- DESTRUCTOR ------->
<!--#include file="common/destructor.asp"-->