Subversion Repositories DevTools

Rev

Rev 4199 | Blame | Last modification | View Log | RSS feed

<%@LANGUAGE="VBSCRIPT"%>
<%
'=====================================================
'                  Update Package Version
'       Designed to be called via AJAX and to return
'       JSON formatted data to dynamic page
'=====================================================
%>
<%
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/qstr.asp"-->
<!--#include file="common/common_subs.asp"-->
<!--#include file="common/common_dbedit.asp"-->
<!--#include file="class/classaspJSON.asp" -->
<%
'------------ Variable Definition -------------
Dim parOpr
Dim parPkgName
Dim result
Dim SqlQry
Dim rsQry

parOpr = QStrPar("Opr")
parPkgName = Trim(QStrPar("packageName"))
result = -1

' Init the output JSON class
'   Operations can add data
'   Default data will be added at the end
Dim oJSON
Set oJSON = New aspJSON
Dim newitem

If NOT objAccessControl.UserLogedIn Then
    oJSON.data("error") = 1

    oJSON.data("emsgSummary") = "User no longer logged in"
    oJSON.data("emsgDetails") = oJSON.data("emsgSummary")

ElseIf (parOpr = "updateVer") Then

    Dim buildType, changeType, pvId, rtagId, version, vExt, errMessage
    ' 
    ' Ensure we have all the required parameters
    '
    buildType = QStrPar("buildType")
    changeType = QStrPar("changeType")
    pvId = QStrPar("pvId")
    rtagId = QStrPar("rtagId")
    version = QStrPar("Version")
    vExt = QStrPar("vExt")

    '
    ' If Manual then force change type to 'F'
    ' If Auto then ensure that the version number is of the correct form
    if buildType = "M" then 
        changeType = "F"
    end if

    If changeType <> "F" Then
        version=vExt
    End If

    '
    '   Get existing data
    '       Test for package existence
    '       Check for changes
    '
    SqlQry = "SELECT pv.pv_id, pv.pkg_version, pv.v_ext, pv.change_type, pv.build_type"&_
             " FROM package_versions pv"&_
             " WHERE pv.pv_id = :NNpv_id"
    OraDatabase.Parameters.Add "NNpv_id", pvId, ORAPARM_INPUT, ORATYPE_NUMBER

        objEH.ErrorRedirect = FALSE
    objEH.TryORA ( OraSession )
    On Error Resume Next
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
    objEH.CatchORA ( OraSession )
    errMessage = OraDatabase.Parameters("errMessage").Value
    OraDatabase.Parameters.Remove "NNpv_id"
    On Error GoTo 0

    If NOT objEH.LastOraFailed Then
        Dim changed
        changed = 0

        If ((rsQry.BOF) OR (rsQry.EOF)) Then
            oJSON.data("emsgDetails") = "Package not found"
            oJSON.data("error") = 1
        End If

        ' Detect changes
        '   version can only be tested if a Manually Versioned
        '
        If changeType = "F" AND rsQry("pkg_version") <> version Then changed = 1
        If rsQry("build_type")  <> buildType Then changed = changed + 2
        If rsQry("v_ext")       <> vExt Then changed = changed + 4
        If rsQry("change_type") <> changeType Then changed = changed + 8

        If changed Then
            '
            '   Setup for the database access
            OraDatabase.Parameters.Add "RTAG_ID", rtagId, ORAPARM_INPUT, ORATYPE_NUMBER
            OraDatabase.Parameters.Add "NNpv_id", pvId, ORAPARM_INPUT, ORATYPE_NUMBER
            OraDatabase.Parameters.Add "SSpkg_version",  version,      ORAPARM_INPUT, ORATYPE_VARCHAR2
            OraDatabase.Parameters.Add "BUILD_TYPE", buildType, ORAPARM_INPUT, ORATYPE_CHAR
            OraDatabase.Parameters.Add "CHANGE_TYPE", changeType, ORAPARM_INPUT, ORATYPE_CHAR
            OraDatabase.Parameters.Add "NNuser_id", objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBER
            OraDatabase.Parameters.Add "errMessage", 0, ORAPARM_OUTPUT, ORATYPE_VARCHAR2

            SqlQry = "BEGIN Rename_Package_Version (:NNpv_id,:SSpkg_version,:BUILD_TYPE,:CHANGE_TYPE,:NNuser_id,:errMessage ); END;"
            objEH.ErrorRedirect = FALSE
            objEH.TryORA ( OraSession )
            On Error Resume Next
            OraDatabase.ExecuteSQL SqlQry
            objEH.CatchORA ( OraSession )
            errMessage = OraDatabase.Parameters("errMessage").Value
            On Error GoTo 0

            OraDatabase.Parameters.Remove "RTAG_ID"
            OraDatabase.Parameters.Remove "NNpv_id"
            OraDatabase.Parameters.Remove "SSpkg_version"
            OraDatabase.Parameters.Remove "NNuser_id"
            OraDatabase.Parameters.Remove "errMessage"
            OraDatabase.Parameters.Remove "BUILD_TYPE"
            OraDatabase.Parameters.Remove "CHANGE_TYPE"
            result = 0
        End If

    rsQry.Close
    Set rsQry = Nothing
    End If
End If


'
'   Create JSON data for the user
'   Important fields
'       result
'
'   Debug fields
'       QueryString
'       SqlQry
'       Request (Array)
'
'Write single value
oJSON.data("result") = result

' SQL error detection and reporting
If objEH.LastOraFailed Then
    oJSON.data("error") = 1

    oJSON.data("emsgSummary") = objEH.MessageSummary
    oJSON.data("emsgDetails") = objEH.MessageDetails
    oJSON.data("SqlQry") = SqlQry
End If

' DEBUG: An array of the user provided requests
oJSON.data("QueryString") = Request.QueryString

Set oJSON.data("Request") = oJSON.Collection()
Set newitem = oJSON.AddToCollection(oJSON.data("Request"))
Dim variableName
for each variableName in Request.QueryString
    newitem.add variableName, Request.QueryString(variableName)
next

'Return the object
Response.Write oJSON.JSONoutput()
%>