Rev 5048 | Blame | Last modification | View Log | RSS feed
<%@LANGUAGE="VBSCRIPT"%><%'=====================================================' sdk_opr_json.asp' Ajax support for SDK operations' addNew - New SDK Name' updateEntry - Update Sdk Name' getData - Get single Sdk Name Entry'=====================================================%><%Option explicit' Essential to get UTF through all the hoops. ie: VÄSTTRAFIK (VTK)Response.ContentType = "text/html"Response.AddHeader "Content-Type", "text/html;charset=UTF-8"Response.CodePage = 65001Response.CharSet = "UTF-8"%><!--#include file="common/conf.asp"--><!--#include file="common/globals.asp"--><!--#include file="common/qstr.asp"--><!--#include file="common/common_subs.asp"--><!--#include file="_access_control_general.asp"--><SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="class/classaspJSON.vbs"></SCRIPT><%'------------ Variable Definition -------------Dim parOprDim resultDim SqlQryDim rsQryparOpr = QStrPar("action")result = -1' Init the output JSON class' Operations can add data' Default data will be added at the endDim oJSONSet oJSON = New aspJSONDim newitemFunction canModifycanModify = objAccessControl.IsActive("CreateNewProject")If NOT canModify Thenresult = -4oJSON.data("error") = 1oJSON.data("emsgSummary") = "Permission denied"oJSON.data("emsgDetails") = oJSON.data("emsgSummary")End IfEnd Function'' Perform the body of the operations within a Sub and use' On Error Resule Next to catch errors that accur in the code'On Error Resume NextIf (parOpr = "addNew") ThenIf canModify() Then addNewEntryElseIf (parOpr = "getData") ThengetDataElseIf (parOpr = "updateEntry") ThenIf canModify() Then updateEntryElseIf (parOpr = "getSdkNames") ThengetSdkNamesElseIf (parOpr = "getProjectList") ThengetProjectListElseIf (parOpr = "getReleaseList") ThengetReleaseListElseIf (parOpr = "addNewSdkVersion") ThenaddNewSdkVersionElseoJSON.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 If'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()%><%'-------------------------------------------------' Function: addNewEntry' Description: Create a new SDK Name entrySub addNewEntry' Add a new entry'' Setup for the database accessOraDatabase.Parameters.Add "SDKNAME", QStrPar("sdkName"), ORAPARM_INPUT, ORATYPE_VARCHAR2OraDatabase.Parameters.Add "SDKCOMMENT", QStrPar("sdkComment"), ORAPARM_INPUT, ORATYPE_VARCHAR2' Test existance - simply to provide a Nice Error messageSqlQry = "SELECT * FROM SDK_NAMES WHERE SDK_NAME = :SDKNAME"objEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )On Error Resume NextSet rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )objEH.CatchORA ( OraSession )On Error GoTo 0If rsQry.RecordCount <> 0 Thenresult = -3oJSON.data("error") = -1oJSON.data("emsgSummary") = "SDK Name already exists"oJSON.data("emsgDetails") = oJSON.data("emsgSummary")ElseSqlQry = "INSERT INTO SDK_NAMES (SDK_NAME, SDK_COMMENT) VALUES (:SDKNAME, :SDKCOMMENT)"objEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )On Error Resume NextOraDatabase.ExecuteSQL SqlQryobjEH.CatchORA ( OraSession )On Error GoTo 0result = 0End IfOraDatabase.Parameters.Remove "SDKCOMMENT"OraDatabase.Parameters.Remove "SDKNAME"End Sub'-------------------------------------------------' Function: getData' Description: get data for a specified SDK NameSub getData' Get Data for an existing entry' Setup for the database accessOraDatabase.Parameters.Add "SDKID", QStrPar("sdkId"), ORAPARM_INPUT, ORATYPE_NUMBERSqlQry = "SELECT * from SDK_NAMES where SDK_ID=:SDKID"objEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )On Error Resume NextSet rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )objEH.CatchORA ( OraSession )OraDatabase.Parameters.Remove "SDKID"Dim resultSet : Set resultSet = oJSON.Collection()If ((NOT rsQry.BOF) AND (NOT rsQry.EOF)) ThenDim iifor ii = 0 to rsQry.Fields.Count - 1resultSet (rsQry.FieldName(ii)) = rsQry.Fields(ii)NextSet oJSON.data("aaData") = resultSetresult = 0End IfrsQry.CloseSet rsQry = NothingEnd Sub'-------------------------------------------------' Function: updateEntry' Description: Update an exxisting SDK Names entrySub updateEntry''OraDatabase.Parameters.Add "SDKID", QStrPar("sdkId"), ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "SDKNAME", QStrPar("sdkName"), ORAPARM_INPUT, ORATYPE_VARCHAR2OraDatabase.Parameters.Add "SDKCOMMENT", QStrPar("sdkComment"), ORAPARM_INPUT, ORATYPE_VARCHAR2' Test existance - simply to provide a Nice Error messageSqlQry = "SELECT * FROM SDK_NAMES WHERE SDK_NAME = :SDKNAME AND SDK_ID != :SDKID"objEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )On Error Resume NextSet rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )objEH.CatchORA ( OraSession )On Error GoTo 0If rsQry.RecordCount <> 0 Thenresult = -3oJSON.data("error") = -1oJSON.data("emsgSummary") = "SDK Name already exists"oJSON.data("emsgDetails") = oJSON.data("emsgSummary")Else' Update an existing entrySqlQry = "UPDATE SDK_NAMES SET SDK_NAME = :SDKNAME, SDK_COMMENT = :SDKCOMMENT WHERE SDK_ID = :SDKID"objEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )On Error Resume NextOraDatabase.ExecuteSQL SqlQryobjEH.CatchORA ( OraSession )On Error GoTo 0result = 0End IfOraDatabase.Parameters.Remove "SDKCOMMENT"OraDatabase.Parameters.Remove "SDKNAME"OraDatabase.Parameters.Remove "SDKID"End Sub'-------------------------------------------------' Function: getSdkNames' Description: Get Project information' Array of:' SDK_ID' SDK_NAMESub getSdkNames' Get Data for an existing entry' Setup for the database accessSqlQry = "SELECT SDK_ID,SDK_NAME from SDK_NAMES order by SDK_NAME ASC"objEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )On Error Resume NextSet rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )objEH.CatchORA ( OraSession )Set oJSON.data("aaData") = oJSON.Collection()While (NOT rsQry.BOF) AND (NOT rsQry.EOF)Set newitem = oJSON.AddToCollection(oJSON.data("aaData"))Dim iifor ii = 0 to rsQry.Fields.Count - 1newitem (rsQry.FieldName(ii)) = rsQry.Fields(ii)NextrsQry.MoveNextWendresult = 0rsQry.CloseSet rsQry = NothingEnd Sub'-------------------------------------------------' Function: getProjectList' Description: Get Project information' Array of:' proj_id' proj_nameSub getProjectList' Get Data for an existing entry' Setup for the database accessSqlQry = "SELECT PROJ_ID,PROJ_NAME from PROJECTS order by PROJ_NAME ASC"objEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )On Error Resume NextSet rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )objEH.CatchORA ( OraSession )Set oJSON.data("aaData") = oJSON.Collection()While (NOT rsQry.BOF) AND (NOT rsQry.EOF)Set newitem = oJSON.AddToCollection(oJSON.data("aaData"))Dim iifor ii = 0 to rsQry.Fields.Count - 1newitem (rsQry.FieldName(ii)) = rsQry.Fields(ii)NextrsQry.MoveNextWendresult = 0rsQry.CloseSet rsQry = NothingEnd Sub'-------------------------------------------------' Function: getReleaseList' Description: Get Release information for a project' Array of:' rtag_id' rtag_name' official' Also' proj_id'' Options: proj_id - Get Releases for given project' rtag_id - Get Releases for project of this release' mode - true: All Releases, otherwise only non-closed releasesSub getReleaseList' Get Data for an existing entry' Setup for the database accessDim rtag_id : rtag_id = QStrPar("rtag_id")Dim proj_id : proj_id = QStrPar("proj_id")OraDatabase.Parameters.Add "PROJ_ID", proj_id, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "RTAG_ID", rtag_id, ORAPARM_INPUT, ORATYPE_NUMBER'' Limit Selection to non-closed releases'Dim limitIf NOT QStrPar("mode") Thenlimit = " AND OFFICIAL NOT IN ('Y', 'A')"End IfDim whereIf rtag_id <> "" Thenwhere = " WHERE proj_id = (SELECT PROJ_ID from RELEASE_TAGS where RTAG_ID=:RTAG_ID)"Elsewhere = " WHERE PROJ_ID=:PROJ_ID"End IfSqlQry = "SELECT PROJ_ID,RTAG_ID,RTAG_NAME,OFFICIAL from RELEASE_TAGS" &_where & limit &_" ORDER BY RTAG_NAME ASC"' Perform QueryobjEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )On Error Resume NextSet rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )objEH.CatchORA ( OraSession )' Process ResultsSet oJSON.data("aaData") = oJSON.Collection()While (NOT rsQry.BOF) AND (NOT rsQry.EOF)Set newitem = oJSON.AddToCollection(oJSON.data("aaData"))Dim iifor ii = 1 to rsQry.Fields.Count - 1newitem (rsQry.FieldName(ii)) = rsQry.Fields(ii)Nextproj_id = rsQry.Fields(0)rsQry.MoveNextWendoJSON.data("proj_id") = proj_idresult = 0rsQry.CloseSet rsQry = NothingOraDatabase.Parameters.Remove "RTAG_ID"OraDatabase.Parameters.Remove "PROJ_ID"End Sub'-------------------------------------------------' Function: addNewSdkVersion' Description: Add a New Sdk VersionSub addNewSdkVersionDim userId : userId = objAccessControl.UserId()' Add a new entry'' Setup for the database access'OraDatabase.Parameters.Add "SDKTAG_NAME", QStrPar("sdkName"), ORAPARM_INPUT, ORATYPE_VARCHAR2OraDatabase.Parameters.Add "DESCRIPTION", QStrPar("sdkComment"), ORAPARM_INPUT, ORATYPE_VARCHAR2OraDatabase.Parameters.Add "SDK_ID", QStrPar("sdk_id"), ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "RTAG_ID", QStrPar("rtag_id"), ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "CREATOR_ID", userId, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "STATE_ID", userId, ORAPARM_INPUT, ORATYPE_NUMBER' Test existance - simply to provide a Nice Error messageSqlQry = "SELECT * FROM SDK_TAGS WHERE SDKTAG_NAME = :SDKTAG_NAME AND SDK_ID = :SDK_ID"objEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )On Error Resume NextSet rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )objEH.CatchORA ( OraSession )On Error GoTo 0If rsQry.RecordCount <> 0 Thenresult = -3oJSON.data("error") = -1oJSON.data("emsgSummary") = "SDK Verion Name already exists in this SDK family"oJSON.data("emsgDetails") = oJSON.data("emsgSummary")ElseSqlQry = "INSERT INTO SDK_TAGS (SDKTAG_NAME, DESCRIPTION, SDK_ID, RTAG_ID, CREATOR_ID, STATE_ID) VALUES (:SDKTAG_NAME, :DESCRIPTION, :SDK_ID, :RTAG_ID, :CREATOR_ID, :STATE_ID)"objEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )On Error Resume NextOraDatabase.ExecuteSQL SqlQryobjEH.CatchORA ( OraSession )On Error GoTo 0result = 0End IfOraDatabase.Parameters.Remove "SDKTAG_NAME"OraDatabase.Parameters.Remove "DESCRIPTION"OraDatabase.Parameters.Remove "SDK_ID"OraDatabase.Parameters.Remove "RTAG_ID"OraDatabase.Parameters.Remove "CREATOR_ID"OraDatabase.Parameters.Remove "STATE_ID"End Sub%>