Rev 7395 | Blame | Last modification | View Log | RSS feed
<%@LANGUAGE="VBSCRIPT"%><%'=====================================================' s3Sync_state_json'=====================================================%><%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"--><SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="class/classaspJSON.vbs"></SCRIPT><%'------------ Variable Definition -------------Dim result : result = -1Dim SqlQryDim rsQryDim parRtagId : parRtagId = Request("rtag_id")Dim parShow : parShow = Request("show")Dim parShowImg : parShowImg = Request("showImg")' Init the output JSON class' Operations can add data' Default data will be added at the endDim oJSON :Set oJSON = New aspJSONDim newitem'' Global Filter'Dim showHideFilter : showHideFilter = ""If parShow = "true" ThenshowHideFilter = showHideFilter & " AND rc.S3SYNC = 'Y'"End IfIf parShowImg = "true" ThenshowHideFilter = showHideFilter & " AND NVL2(s3.PV_ID, 1, 0) = 1"End If' Filter (search )Dim searchStringIf Request.QueryString("search[value]") <> "" ThensearchString = " AND upper(p.PKG_NAME || '_' || pv.PKG_VERSION ) LIKE upper('%" & Request.QueryString("search[value]") & "%')"End If'' Determine the size of the record set' Gives bad results when searchingDim MaxCount : MaxCount = 0SqlQry = "select count(*) as count " &_" FROM package_versions pv, " &_" RELEASE_CONTENT rc, " &_" PACKAGES p, " &_" (select rcp.* from release_components rcp, release_content rc where rc.rtag_id = "& parRtagId &" and rc.pv_id = rcp.pv_id AND RCP.FILE_NAME = 's3Transfer.json' AND RCP.FILE_PATH IS NULL ) s3 " &_" WHERE rc.rtag_id = " & parRtagId &_" AND rc.pv_id = pv.pv_id " &_" AND p.PKG_ID = pv.pkg_id " &_" AND s3.pv_id(+) = rc.pv_id " &_searchString &_showHideFilteroJSON.data("CountSqlQry") = SqlQryOn Error Resume NextobjEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )objEH.CatchORA ( OraSession )If ((NOT rsQry.BOF) AND (NOT rsQry.EOF)) ThenMaxCount = rsQry("COUNT")End IfrsQry.CloseSet rsQry = Nothing' Basic Header' iTotalRecords = total records without any filtering/limits' iTotalDisplayRecords = filtered result countoJSON.data("draw") = CLng(Request.QueryString("draw"))oJSON.data("recordsTotal") = MaxCountoJSON.data("recordsFiltered") = MaxCountDim vNamefor each vName in Request.QueryStringoJSON.data("sReq_" & vName) = Request.QueryString(vName)next' Extract selected rangeresult = 0dim firstRow,lastRowfirstRow = CLng(Request.QueryString("start"))lastRow = firstRow + CLng(Request.QueryString("length"))' Define the data items to extract from the database' An array of items to extract'Dim dataCols: dataCols = Array ( _"pv.pv_id", _"pv.pkg_id", _"p.PKG_NAME", _"pv.PKG_VERSION", _"pv.PV_DESCRIPTION", _"pv.v_ext", _"rc.S3SYNC", _"pv.COMMENTS", _"NVL2(s3.PV_ID, 1, 0) as s3able" )' Define array of colums to sort by' Must match user sort column requestDim sortCols: sortCols = Array ( _"pv.pv_id",_"UPPER(p.PKG_NAME)",_"UPPER(pv.PKG_VERSION)",_"UPPER(pv.v_ext)",_"UPPER(pv.PV_DESCRIPTION)",_"UPPER(rc.S3SYNC)",_"NVL2(s3.PV_ID, 1, 0)" )' Dim determine sorting options'On Error goto 0'Response.Write "<pre>"' Dim determine sorting options' Secondary sort by package name Entry(1)Dim sortStringDim sortColumn : sortColumn = CInt(Request.QueryString("order[0][column]"))Dim sortDir : sortDir = Request.QueryString("order[0][dir]")If sortColumn <> "" ThensortString = " ORDER BY " & sortCols(sortColumn) & " " & sortDirIf sortColumn <> "1" ThensortString = sortString & ", " & sortCols(CInt(1)) & " " & sortDirEnd IfElsesortString = " ORDER BY " & sortCols(CInt(1)) & " asc"End If' Create a list of cols that we need. Avoids ambiguity in selectionsDim x,colList,colListJoinFor x = Lbound(dataCols) to Ubound(dataCols)colList = colList & colListJoin & dataCols(x)colListJoin = ","NextDim BasicSqlBasicSql = "select " & colList &_" FROM package_versions pv, " &_" RELEASE_CONTENT rc, " &_" PACKAGES p, " &_" (select rcp.* from release_components rcp, release_content rc where rc.rtag_id = "& parRtagId &" and rc.pv_id = rcp.pv_id AND RCP.FILE_NAME = 's3Transfer.json' AND RCP.FILE_PATH IS NULL ) s3 " &_" WHERE rc.rtag_id = " & parRtagId &_" AND rc.pv_id = pv.pv_id " &_" AND p.PKG_ID = pv.pkg_id " &_" AND s3.pv_id(+) = rc.pv_id " &_searchString &_showHideFilter &_sortStringSqlQry = "select * from ( "&_"select a.*, ROWNUM rnum from (" & BasicSql &_") a where ROWNUM <= " & lastRow &_") where rnum >= " & firstRow' Assist in debugoJSON.data("BasicSql") = BasicSqloJSON.data("SqlQry") = SqlQry' Perform the database querySet oJSON.data("data") = oJSON.Collection()On Error Resume NextobjEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )objEH.CatchORA ( OraSession )' Process each row and return required fields to the userIf objEH.Finally ThenWhile (NOT rsQry.BOF) AND (NOT rsQry.EOF)Set newitem = oJSON.AddToCollection(oJSON.data("data"))' Attempt to speed up access to the data' Extract all fields for the row' Access fields by indexDim fieldsSet fields = rsQry.FieldsDim pv_id : pv_id = fields(0)Dim pkg_id : pkg_id = fields(1)Dim pkg_name : pkg_name = fields(2)Dim pkg_version : pkg_version = fields(3)Dim description : description = Server.HTMLEncode(fields(4))Dim v_ext : v_ext = fields(5)Dim state : state = fields(6)Dim comments : comments = CleanUpJson(Server.HTMLEncode(fields(7)))Dim s3Able : s3Able = fields(8)Set fields = nothingnewitem(0) = pv_idnewitem(1) = "<a href=view_by_version.asp?pkg_id=" & pkg_id & "&fpkgversion=*" & v_ext & " title=""" & description & """>" & pkg_name & "</a>"newitem(2) = "<a href='fixed_issues.asp?pv_id=" & pv_id & "&rtag_id=" & parRtagId &"' title=""" & comments & """>" & pkg_version & "</a>"newitem(3) = v_extnewitem(4) = descriptionnewitem(5) = statenewitem(6) = s3AblersQry.MoveNextWendEnd IFrsQry.CloseSet rsQry = Nothing'' SQL error detection and reportingIf objEH.LastOraFailed ThenoJSON.data("error") = 1oJSON.data("emsgSummary") = objEH.MessageSummaryoJSON.data("emsgDetails") = objEH.MessageDetailsoJSON.data("SqlQry") = SqlQryEnd If'Return the objectResponse.Write oJSON.JSONoutput()Set oJSON = NothingCall Destroy_All_Objects%>