Rev 6123 | Rev 7395 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<%@LANGUAGE="VBSCRIPT"%><%'=====================================================' Update Package Version' _json_updateVersion.asp' Designed to be called via AJAX and to return' JSON formatted data to dynamic page' Ajax support for operaions on a package-version:'' updateVer' setDeployable''=====================================================%><%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/qstr.asp"--><!--#include file="common/common_subs.asp"--><!--#include file="common/common_dbedit.asp"--><SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="class/classaspJSON.vbs"></SCRIPT><%'------------ Variable Definition -------------Dim parOprDim resultDim SqlQryDim rsQryparOpr = QStrPar("Opr")result = -1' Init the output JSON class' Operations can add data' Default data will be added at the endDim oJSONSet oJSON = New aspJSONDim newitemIf NOT objAccessControl.UserLogedIn ThenoJSON.data("error") = 1oJSON.data("emsgSummary") = "User no longer logged in"oJSON.data("emsgDetails") = oJSON.data("emsgSummary")ElseIf (parOpr = "updateVer") ThenupdateVersionElseIf (parOpr = "setDeployable") ThensetDeployableElseIf (parOpr = "clearAllDeployable") ThenclearAllDeployableElseoJSON.data("error") = 1oJSON.data("emsgSummary") = "Unknown JSON Operation"oJSON.data("emsgDetails") = "The Requested JSON operation is not supported: " & parOprEnd If' SQL error detection and reportingIf objEH.LastOraFailed ThenoJSON.data("error") = 1result = -1oJSON.data("emsgSummary") = objEH.MessageSummaryoJSON.data("emsgDetails") = objEH.MessageDetailsoJSON.data("SqlQry") = SqlQry'' Detect program errorsElseIf Err.number <> 0 Thenresult = -3oJSON.data("error") = 2oJSON.data("errnum") = Err.numberoJSON.data("errtxt") = Err.descriptionoJSON.data("errsrc") = Err.sourceoJSON.data("emsgSummary") = "Internal VBScript Error:" & Err.number & ":" & Err.descriptionEnd IfOn error goto 0'Write single valueoJSON.data("result") = result'function Sleep(seconds)' dim oshell, cmd' set oShell = CreateObject("Wscript.Shell")' cmd = "cmd.exe /c timeout " & seconds & " /nobreak"' oShell.Run cmd,0,1'End function''Sleep(2)' DEBUG: A Hash of the user provided requests<!--oJSON.data("QueryString") = Request.QueryString --><!-- --><!--Dim requestSet : Set requestSet = oJSON.Collection() --><!--Set oJSON.data("Request") = requestSet --><!--Dim variableName --><!--for each variableName in Request.QueryString --><!-- requestSet.add variableName, Request(variableName)--><!--next --><!--for each variableName in Request.Form --><!-- requestSet.add variableName, Request(variableName)--><!--next -->'Return the objectResponse.Write oJSON.JSONoutput()Set oJSON = NothingCall Destroy_All_Objects%><%Sub ReportError (sSummary, sDetails)oJSON.data("error") = 1oJSON.data("emsgSummary") = sSummaryoJSON.data("emsgDetails") = sDetailsEnd Sub'-------------------------------------------------' Function: updateVersion' Description: Update version information'Sub updateVersionDim buildType, changeType, pvId, rtagId, version, vExt, errMessage, modeType, packageName'' 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")modeType = QStrPar("Mode")packageName = QStrPar("packageName")'' If Manual then force change type to 'F'' If Auto then ensure that the version number is of the correct formif buildType = "M" thenchangeType = "F"end ifIf changeType <> "F" Thenversion=vExtEnd If'' Get existing data' Test for package existence' Check for changes'SqlQry = "SELECT p.pkg_name, pv.pkg_id, pv.pv_id, pv.pkg_version, pv.v_ext, pv.change_type, pv.build_type"&_" FROM package_versions pv, packages p"&_" WHERE pv.pv_id = :NNpv_id" &_" AND p.pkg_id = pv.pkg_id"OraDatabase.Parameters.Add "NNpv_id", pvId, ORAPARM_INPUT, ORATYPE_NUMBERobjEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )On Error Resume NextSet rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )objEH.CatchORA ( OraSession )errMessage = OraDatabase.Parameters("errMessage").ValueOraDatabase.Parameters.Remove "NNpv_id"On Error GoTo 0If NOT objEH.LastOraFailed ThenDim changedchanged = 0If ((rsQry.BOF) OR (rsQry.EOF)) ThenoJSON.data("emsgDetails") = "Package not found"oJSON.data("error") = 1End If' Detect changes' version can only be tested if a Manually Versioned'If changeType = "F" AND rsQry("pkg_version") <> version Then changed = 1If rsQry("build_type") <> buildType Then changed = changed + 2If rsQry("v_ext") <> vExt Then changed = changed + 4If rsQry("change_type") <> changeType Then changed = changed + 8If changed Then'' Setup for the database accessOraDatabase.Parameters.Add "RTAG_ID", rtagId, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "NNpv_id", pvId, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "SSpkg_version", version, ORAPARM_INPUT, ORATYPE_VARCHAR2OraDatabase.Parameters.Add "BUILD_TYPE", buildType, ORAPARM_INPUT, ORATYPE_CHAROraDatabase.Parameters.Add "CHANGE_TYPE", changeType, ORAPARM_INPUT, ORATYPE_CHAROraDatabase.Parameters.Add "NNuser_id", objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "errMessage", 0, ORAPARM_OUTPUT, ORATYPE_VARCHAR2SqlQry = "BEGIN Rename_Package_Version (:NNpv_id,:SSpkg_version,:BUILD_TYPE,:CHANGE_TYPE,:NNuser_id,:errMessage ); END;"objEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )On Error Resume NextOraDatabase.ExecuteSQL SqlQryobjEH.CatchORA ( OraSession )errMessage = OraDatabase.Parameters("errMessage").ValueOn Error GoTo 0OraDatabase.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 = 0End IfIf modeType = 1 Then' Rename the package - possiblyIf rsQry("pkg_name") <> packageName Thenchanged = changed + 16Dim rsQry1, countOraDatabase.Parameters.Add "PKG_ID", rsQry("pkg_id"), ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "PKG_NAME", packageName, ORAPARM_INPUT, ORATYPE_VARCHAR2SqlQry = "select count(*) as count from package_versions where pkg_id = :PKG_ID"objEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )On Error Resume NextSet rsQry1 = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )objEH.CatchORA ( OraSession )errMessage = OraDatabase.Parameters("errMessage").ValueOn Error GoTo 0If NOT objEH.LastOraFailed ThenIf ((NOT rsQry1.BOF) AND (NOT rsQry1.EOF)) Thencount = rsQry1.Fields("count")End IfrsQry1.CloseIf count = 1 ThenSqlQry = "update packages set pkg_name = :PKG_NAME where pkg_id = :PKG_ID"objEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )On Error Resume NextOraDatabase.ExecuteSQL SqlQryobjEH.CatchORA ( OraSession )errMessage = OraDatabase.Parameters("errMessage").ValueOn Error GoTo 0If NOT objEH.LastOraFailed Thenresult = 0End IfElseReportError "Package name has been used","The Package name cannot be renamed as it is in use by multiple versions"End IfEnd IfOraDatabase.Parameters.Remove "PKG_ID"OraDatabase.Parameters.Remove "PKG_NAME"rsQry1.CloseSet rsQry1 = NothingEnd IfEnd If' Report - no changesIf changed = 0 ThenReportError "No change detected", "No changes detected"End IfrsQry.CloseSet rsQry = NothingEnd IfEnd Sub'-------------------------------------------------' Function: setDeployable' Description: Set the state of the is_deployable flag' Request Parameters' pv_id' deployment_state'Sub setDeployableOraDatabase.Parameters.Add "PV_ID", QStrPar("pv_id"), ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "DEPLOYABLE_STATE", QStrPar("deployment_state"), ORAPARM_INPUT, ORATYPE_CHAR' Set/Reset IS_DEPLOYABLE flagSqlQry = _"UPDATE PACKAGE_VERSIONS " &_" SET IS_DEPLOYABLE = DECODE(:DEPLOYABLE_STATE, 'Y', 'Y', NULL)" &_" WHERE PV_ID = :PV_ID"objEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )On Error Resume NextOraDatabase.ExecuteSQL SqlQryobjEH.CatchORA ( OraSession )On Error GoTo 0result = 0OraDatabase.Parameters.Remove "PV_ID"OraDatabase.Parameters.Remove "DEPLOYABLE_STATE"End Sub'-------------------------------------------------' Function: clearAllDeployable' Description: Clear the is_deployable flag on all packages in the Release' Request Parameters' rtag_id'Sub clearAllDeployableOraDatabase.Parameters.Add "RTAG_ID", QStrPar("rtag_id"), ORAPARM_INPUT, ORATYPE_NUMBER' Reset IS_DEPLOYABLE flagSqlQry = _"update package_versions pv " &_" set pv.IS_DEPLOYABLE = null" &_" Where pv.pv_id in ( SELECT pv.pv_id" &_" FROM package_versions pv," &_" RELEASE_CONTENT rc" &_" WHERE rc.rtag_id = :RTAG_ID" &_" AND rc.pv_id = pv.pv_id" &_" AND pv.IS_DEPLOYABLE is not null )"objEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )On Error Resume NextOraDatabase.ExecuteSQL SqlQryobjEH.CatchORA ( OraSession )On Error GoTo 0result = 0OraDatabase.Parameters.Remove "RTAG_ID"End Sub%>