Rev 6579 | Rev 6879 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<%@LANGUAGE="VBSCRIPT"%><%'=====================================================' build_release_log_json.asp'=====================================================%><%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")' Init the output JSON class' Operations can add data' Default data will be added at the endDim oJSON :Set oJSON = New aspJSONDim newitem'' Determine the size of the record set' Gives bad results when searchingDim MaxCount : MaxCount = 0SqlQry = "select count(*) as count from BUILD_INSTANCES bi"If parRtagId <> "" ThenSqlQry = SqlQry + " WHERE rtag_id = " & parRtagIdEnd IfOn 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' recordsTotal = total records without any filtering/limits' recordsFiltered = filtered result countoJSON.data("draw") = CLng(Request.QueryString("draw"))oJSON.data("recordsTotal") = CLng(MaxCount)oJSON.data("recordsFiltered") = CLng(MaxCount)' Assist in debugoJSON.data("start") = CLng(Request.QueryString("start"))oJSON.data("length") = CLng(Request.QueryString("length"))Dim vNamefor each vName in Request.QueryStringoJSON.data("sReq_" & vName) = Request.QueryString(vName)next' Extract selected rangeresult = 0dim firstRow,lastRow,noBuildTimefirstRow = CLng(Request.QueryString("start"))lastRow = firstRow + CLng(Request.QueryString("length"))' Define array of colums to sort by' Must match user sort column requestDim sortCols: sortCols = Array ( _"UPPER(pj.PROJ_NAME)",_"UPPER(rt.RTAG_NAME),build_id",_"UPPER(p.PKG_NAME),build_id",_"UPPER(p.PKG_NAME),UPPER(pv.PKG_VERSION)",_"bi.BUILD_ID",_"UPPER(bi.reason),build_id",_"build_time,build_id,NOBUILDTIME",_"UPPER(bi.state),build_id",_"build_id" )' Dim determine sorting options'On Error goto 0'Response.Write "<pre>"Dim sortStringIf Request.QueryString("order[0][column]") <> "" ThenDim sortCol : sortCol = CInt(Request.QueryString("order[0][column]"))Dim sortDir : sortDir = " " & Request.QueryString("order[0][dir]")Dim splitArg: splitArg = Split( sortCols(sortCol), "," )Dim splitItem, joinerjoiner = ""for each splitItem in splitArgIf splitItem = "NOBUILDTIME" ThennoBuildTime = " AND PV.BUILD_TIME is not null"ElsesortString = sortString & joiner & splitItem & " " & sortDirjoiner = ","End IfnextsortString = " ORDER BY " & sortStringEnd If' Filter (search )Dim searchStringIf Request.QueryString("search[value]") <> "" ThensearchString = " AND upper(p.PKG_NAME) LIKE upper('%" & Request.QueryString("search[value]") & "%')"End IfDim whereStringIf parRtagId <> "" ThenwhereString = " AND bi.rtag_id = " & parRtagIdEnd IfDim BasicSqlBasicSql = "SELECT bi.PV_ID, " &_" bi.RTAG_ID, " &_" pv.pkg_id, " &_" pj.PROJ_NAME, " &_" pj.PROJ_ID, " &_" RTAG_NAME, " &_" p.PKG_NAME, " &_" NVL(pv.V_EXT, '') AS V_EXT, " &_" TO_CHAR(bi.TIMESTAMP, 'Dy DD-Mon-YYYY HH24:MI:SS') AS TIMESTAMPTXT, " &_" DECODE(bi.reason, 'N', 'New Version', 'R', 'Ripple', 'T', 'Test', 'P', 'Restored', 'Unknown') AS REASON, " &_" DECODE(bi.state, 'B', 'Buiding', 'C', 'Complete', 'E', 'Error', 'S', 'SysErr', 'Unknown') AS STATE, " &_" bi.build_id " &_"FROM BUILD_INSTANCES bi, " &_" projects pj, " &_" RELEASE_TAGS rt, " &_" packages p, " &_" PACKAGE_VERSIONS pv " &_"WHERE bi.PV_ID = pv.pv_id " &_"AND pv.PKG_ID = p.PKG_ID " &_"AND bi.RTAG_ID = rt.RTAG_ID " &_"AND rt.proj_id = pj.proj_id " &_noBuildTime &_whereString &_searchString &_sortStringSqlQry = "Select z.*," &_"(SELECT COUNT(*) FROM TEST_RUN tr WHERE tr.build_id = z.build_id ) AS test_count, " &_"(SELECT PKG_VERSION FROM PACKAGE_VERSIONS pv1 WHERE pv1.pv_id = z.pv_id ) AS PKG_VERSION, " &_"(SELECT PV_DESCRIPTION FROM PACKAGE_VERSIONS pv1 WHERE pv1.pv_id = z.pv_id ) AS PV_DESCRIPTION, " &_"(SELECT COMMENTS FROM PACKAGE_VERSIONS pv1 WHERE pv1.pv_id = z.pv_id ) AS COMMENTS, " &_"(SELECT BUILD_TIME FROM PACKAGE_VERSIONS pv1 WHERE pv1.pv_id = z.pv_id ) AS BUILD_TIME" &_" from (select * from ( "&_"select /*+ FIRST_ROWS("& lastRow &") */ a.*, ROWNUM rnum from (" & BasicSql &_") a where ROWNUM <= " & lastRow &_") where rnum >= " & firstRow & ") z"' 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 tot he data' Extract all fields for the row' Access fields by indexDim fieldsSet fields = rsQry.FieldsDim pv_id : pv_id = fields(0)Dim rtag_id : rtag_id = fields(1)Dim pkg_id : pkg_id = fields(2)Dim proj_name : proj_name = fields(3)Dim proj_id : proj_id = fields(4)Dim rtag_name : rtag_name = fields(5)Dim pkg_name : pkg_name = fields(6)Dim v_ext : v_ext = fields(7)Dim timestamp : timestamp = fields(8)Dim reason : reason = fields(9)Dim state : state = fields(10)Dim buildId : buildId = fields(11)Dim tcount : tcount = fields(13)Dim pkg_version : pkg_version = fields(14)Dim description : description = Server.HTMLEncode(fields(15))Dim comments : comments = Server.HTMLEncode(fields(16))Dim buildTime : buildTime = Server.HTMLEncode(fields(17))Set fields = nothingIf buildTime <= 0 Then buildTime = ""If tcount <= 0 Then tcount = ""newitem(0) = "<a href='rtree.asp?proj_id=" & proj_id & "'>" & proj_name &"</a>"newitem(1) = "<a href='dependencies.asp?rtag_id=" & rtag_id & "'>" & rtag_name & "</a>"newitem(2) = "<a href=view_by_version.asp?pkg_id=" & pkg_id & "&fpkgversion=*" & v_ext & " title=""" & description & """>" & pkg_name & "</a>"newitem(3) = "<a href='dependencies.asp?pv_id=" & pv_id & "&rtag_id=" & rtag_id &"' title=""" & comments & """>" & pkg_version & "</a>"newitem(4) = timestampnewitem(5) = reasonnewitem(6) = buildTimenewitem(7) = "<a href='unit_test_log.asp?rtag_id=" & rtag_id & "&pv_id=" & pv_id & "'>" & state & "</a>"newitem(8) = tcountrsQry.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%>