Rev 6953 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<%@LANGUAGE="VBSCRIPT"%><%'=====================================================' rep_new_versions_json.asp' Ajax support for various operations' getData''=====================================================%><%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 parOpr, parRtagIdDim resultDim SqlQryDim rsQryparOpr = QStrPar("action")parRtagId = QStrPar("rtag_id")result = -1' Init the output JSON class' Operations can add data' Default data will be added at the endDim oJSONSet oJSON = New aspJSONDim newitem'' 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 = "getData") ThengetDataElseIf (parOpr = "mergeVersion") ThenmergeVersionElseoJSON.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%><%'-------------------------------------------------' Function: mergeVersion' Description: Merge the selected version into the Release' rtag_id - The release to process' pv_id - Current PVID' npv_id - New PVID' mode - A (Add), R (Remove)'Sub mergeVersionDim OraParameterDim mode : mode = QStrPar("mode")OraDatabase.Parameters.Add "RTAG_ID", parRtagId, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "NPV_ID", QStrPar("npv_id"), ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "PV_ID", QStrPar("pv_id"), ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "VIEW_ID", NULL, ORAPARM_BOTH, ORATYPE_NUMBEROraDatabase.Parameters.Add "USER_ID", objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "OPERATION",NULL, ORAPARM_INPUT, ORATYPE_CHARSet OraParameter = OraDatabase.ParametersOn Error Resume NextobjEH.TryORA ( OraSession )If mode = "A" ThenOraParameter("OPERATION").Value = "A"OraDatabase.ExecuteSQL _"BEGIN "&_" :VIEW_ID := PK_RELEASE.GET_PACKAGE_VIEW ( :PV_ID, :RTAG_ID ); "&_" PK_PLANNED.MERGE_PACKAGE ( :NPV_ID, :VIEW_ID, :RTAG_ID, :USER_ID, :OPERATION ); "&_"END;"ElseIf mode = "R" ThenOraDatabase.ExecuteSQL "BEGIN PK_ENVIRONMENT.MAKE_REJECT ( :NPV_ID, :RTAG_ID, :USER_ID ); END; "Elseresult = -1oJSON.data("emsgSummary") = "Internal: mergeVersion. Unknown mode"Exit SubEnd IfobjEH.CatchORA ( OraSession )On Error GoTo 0If Err.Number = 0 Thenresult = 0End IfOraDatabase.Parameters.Remove "OPERATION"OraDatabase.Parameters.Remove "USER_ID"OraDatabase.Parameters.Remove "VIEW_ID"OraDatabase.Parameters.Remove "PV_ID"OraDatabase.Parameters.Remove "NPV_ID"OraDatabase.Parameters.Remove "RTAG_ID"End Sub'-------------------------------------------------' Function: getData' Description: Get the data for the page - as jason' Not used directly by datatables' The format is special. Its not a direct result of the sql query' Group multiple version-information as an array' ie: [ a,b,c,d,e,f, [[ a,b,c],[a,b,c]]'Sub getDataOraDatabase.Parameters.Add "RTAG_ID", parRtagId, ORAPARM_INPUT, ORATYPE_NUMBERSqlQry = GetQuery("rep_new_versions.sql")objEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )On Error Resume NextSet rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )objEH.CatchORA ( OraSession )On Error GoTo 0OraDatabase.Parameters.Remove "RTAG_ID"' Things for oJSON object' Set someVar = oJSON.Collection() (Will create an empty collection)' obj(field) = data (Will create a hash entry)' newObj = oJSON.AddToCollection( obj ) (Will create an array)Dim lastPvid : lastPvid = 0Dim pvid, lastItemDim childCount, pTypeSet oJSON.data("aaData") = oJSON.Collection()lastItem = nullWhile (NOT rsQry.BOF) AND (NOT rsQry.EOF)pvid = rsQry("PV_ID")If lastPvid <> pvid ThenchildCount = 0pType = 0ElsechildCount = childCount + 1pType = 2End IfSet newitem = oJSON.AddToCollection(oJSON.data("aaData"))newitem(0)= rsQry("PV_ID")newitem(1)= rsQry("VIEW_NAME")newitem(2)= rsQry("PKG_ID")newitem(3)= rsQry("PKG_NAME")newitem(4)= rsQry("PKG_VERSION")newitem(5)= rsQry("V_EXT")newitem(6)= rsQry("CREATED_STAMP")newitem(7)= rsQry("NEW_PV_ID")newitem(8)= rsQry("NEW_PKG_VERSION")newitem(9)= rsQry("NEW_CREATED_STAMP")newitem(10)= pTypenewitem(11)= rsQry("NEW_AGE")newitem(12)= rsQry("ETYPE")' Is the last item a parent (Has children)' entry(10)' 0 - Is a parent without children' 1 - Is a parent with children' 2 - Is a child'If childCount = 1 AND NOT isNULL(lastItem) ThenlastItem(10)= 1End If' If this is an entry of ETYPE of A, then we skip the next entry.' It will be repeatIf rsQry("ETYPE") = "A" ThenrsQry.MoveNextEnd IflastPvid = pvidSet lastItem = newitemrsQry.MoveNextWendEnd Sub%>