<%@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 = 65001 Response.CharSet = "UTF-8" %> <% '------------ Variable Definition ------------- Dim parOpr, parRtagId Dim result Dim SqlQry Dim rsQry parOpr = QStrPar("action") parRtagId = QStrPar("rtag_id") 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 ' ' 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 Next If (parOpr = "getData") Then getData ElseIf (parOpr = "mergeVersion") Then mergeVersion ElseIf (parOpr = "getPackageInfo") Then getPackageInfo Else oJSON.data("error") = 1 oJSON.data("emsgSummary") = "Unknown JSON Operation" oJSON.data("emsgDetails") = "The Requested JSON operation is not supported: " & parOpr End If ' SQL error detection and reporting If objEH.LastOraFailed Then oJSON.data("error") = 1 result = -1 oJSON.data("emsgSummary") = objEH.MessageSummary oJSON.data("emsgDetails") = objEH.MessageDetails oJSON.data("SqlQry") = SqlQry ' ' Detect program errors ElseIf Err.number <> 0 Then result = -3 oJSON.data("error") = 2 oJSON.data("errnum") = Err.number oJSON.data("errtxt") = Err.description oJSON.data("errsrc") = Err.source oJSON.data("emsgSummary") = "Internal VBScript Error:" & Err.number & ":" & Err.description End If On error goto 0 'Write single value oJSON.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 'Return the object Response.Write oJSON.JSONoutput() Set oJSON = Nothing Call 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 mergeVersion Dim OraParameter Dim mode : mode = QStrPar("mode") If NOT releaseIsMergable(releaseInfoHash("official")) Then result = -4 If NOT objAccessControl.UserLogedIn Then oJSON.data("emsgSummary") = "User not logged in" Else oJSON.data("emsgSummary") = "Access not allowed" End If Exit Sub End If OraDatabase.Parameters.Add "RTAG_ID", parRtagId, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "NPV_ID", QStrPar("npv_id"), ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "PV_ID", QStrPar("pv_id"), ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "VIEW_ID", NULL, ORAPARM_BOTH, ORATYPE_NUMBER OraDatabase.Parameters.Add "USER_ID", objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "OPERATION",NULL, ORAPARM_INPUT, ORATYPE_CHAR Set OraParameter = OraDatabase.Parameters On Error Resume Next objEH.TryORA ( OraSession ) If mode = "A" Then OraParameter("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" Then OraDatabase.ExecuteSQL "BEGIN PK_ENVIRONMENT.MAKE_REJECT ( :NPV_ID, :RTAG_ID, :USER_ID ); END; " Else result = -1 oJSON.data("emsgSummary") = "Internal: mergeVersion. Unknown mode" Exit Sub End If objEH.CatchORA ( OraSession ) On Error GoTo 0 If Err.Number = 0 Then result = 0 End If OraDatabase.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 getData OraDatabase.Parameters.Add "RTAG_ID", parRtagId, ORAPARM_INPUT, ORATYPE_NUMBER SqlQry = GetQuery("rep_new_versions.sql") objEH.ErrorRedirect = FALSE objEH.TryORA ( OraSession ) On Error Resume Next Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT ) objEH.CatchORA ( OraSession ) On Error GoTo 0 OraDatabase.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 = 0 Dim pvid, lastItem Dim childCount, pType Set oJSON.data("aaData") = oJSON.Collection() lastItem = null While (NOT rsQry.BOF) AND (NOT rsQry.EOF) pvid = rsQry("PV_ID") If lastPvid <> pvid Then childCount = 0 pType = 0 Else childCount = childCount + 1 pType = 2 End If Set 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)= pType newitem(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) Then lastItem(10)= 1 End If ' If this is an entry of ETYPE of A, then we skip the next entry. ' It will be repeat If rsQry("ETYPE") = "A" Then rsQry.MoveNext End If lastPvid = pvid Set lastItem = newitem rsQry.MoveNext Wend End Sub '------------------------------------------------- ' Function: getPackageInfo ' Description: Get basic Package info ' Requires pvid ' ' Returns: pkgName ' pkgVersion ' ' Sub getPackageInfo Dim entry OraDatabase.Parameters.Add "PV_ID", QStrPar("pv_id"), ORAPARM_INPUT, ORATYPE_NUMBER SqlQry = "select p.pkg_name, pv.pkg_version from packages p, package_versions pv where pv.pv_id = :PV_ID and pv.pkg_id = p.pkg_id" objEH.ErrorRedirect = FALSE objEH.TryORA ( OraSession ) On Error Resume Next Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT ) objEH.CatchORA ( OraSession ) On Error GoTo 0 If Err.Number = 0 Then result = 0 End If Set entry = oJSON.Collection() Set oJSON.data("aaData") = entry entry("pkg_name")= rsQry("PKG_NAME") entry("pkg_version")= rsQry("PKG_VERSION") OraDatabase.Parameters.Remove "PV_ID" End Sub %>