Subversion Repositories DevTools

Rev

Rev 6594 | Rev 6883 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5018 dpurdie 1
<%@LANGUAGE="VBSCRIPT"%>
2
<%
3
'=====================================================
5394 dpurdie 4
'       build_release_log_json.asp
5018 dpurdie 5
'=====================================================
6
%>
7
<%
8
Option explicit
9
' Essential to get UTF through all the hoops. ie: VÄSTTRAFIK (VTK)
10
Response.ContentType = "text/html"
11
Response.AddHeader "Content-Type", "text/html;charset=UTF-8"
12
Response.CodePage = 65001
13
Response.CharSet = "UTF-8"
14
%>
15
<!--#include file="common/conf.asp"-->
16
<!--#include file="common/globals.asp"-->
17
<!--#include file="common/qstr.asp"-->
18
<!--#include file="common/common_subs.asp"-->
19
<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="class/classaspJSON.vbs"></SCRIPT> 
20
<%
21
'------------ Variable Definition -------------
22
Dim result : result = -1
23
Dim SqlQry
24
Dim rsQry
6879 dpurdie 25
Dim parRtagId : parRtagId = Request.Form("rtag_id")
26
Dim parOnlyNew : parOnlyNew = RequestBool("onlyNew", False)
27
Dim parOnlyComplete : parOnlyComplete = RequestBool("onlyComplete", False)
5018 dpurdie 28
 
29
' Init the output JSON class
30
'   Operations can add data
31
'   Default data will be added at the end
32
Dim oJSON :Set oJSON = New aspJSON
33
Dim newitem
34
 
35
'
36
' Determine the size of the record set
37
'   Gives bad results when searching
38
Dim MaxCount : MaxCount = 0
39
 
40
SqlQry = "select count(*) as count from BUILD_INSTANCES bi"
41
If parRtagId <> "" Then
42
    SqlQry = SqlQry + " WHERE rtag_id = " &  parRtagId
43
End If
44
 
45
On Error Resume Next
46
objEH.ErrorRedirect = FALSE
47
objEH.TryORA ( OraSession )
48
Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
49
objEH.CatchORA ( OraSession )
50
    If ((NOT rsQry.BOF) AND (NOT rsQry.EOF)) Then
51
        MaxCount = rsQry("COUNT")
52
    End If
53
rsQry.Close
54
Set rsQry = Nothing
55
 
56
' Basic Header
6579 dpurdie 57
'   recordsTotal = total records without any filtering/limits
58
'   recordsFiltered = filtered result count
5019 dpurdie 59
 
6879 dpurdie 60
oJSON.data("draw") = CLng(Request.Form("draw"))
6579 dpurdie 61
oJSON.data("recordsTotal") = CLng(MaxCount)
62
oJSON.data("recordsFiltered") = CLng(MaxCount)
5018 dpurdie 63
 
64
' Assist in debug
6879 dpurdie 65
oJSON.data("start") = CLng(Request.Form("start"))
66
oJSON.data("length") = CLng(Request.Form("length"))
5018 dpurdie 67
 
68
Dim vName
69
for each vName in Request.QueryString
6879 dpurdie 70
    oJSON.data("sReq_" & vName) = Request.Form(vName)
5018 dpurdie 71
next
72
 
73
' Extract selected range
74
result = 0
6538 dpurdie 75
dim firstRow,lastRow,noBuildTime
6879 dpurdie 76
firstRow = CLng(Request.Form("start"))
77
lastRow = firstRow + CLng(Request.Form("length"))
5018 dpurdie 78
 
79
'   Define array of colums to sort by
80
'       Must match user sort column request
81
Dim sortCols: sortCols = Array ( _
82
        "UPPER(pj.PROJ_NAME)",_
6538 dpurdie 83
        "UPPER(rt.RTAG_NAME),build_id",_
84
        "UPPER(p.PKG_NAME),build_id",_
85
        "UPPER(p.PKG_NAME),UPPER(pv.PKG_VERSION)",_
5018 dpurdie 86
        "bi.BUILD_ID",_
6538 dpurdie 87
        "UPPER(bi.reason),build_id",_
88
        "build_time,build_id,NOBUILDTIME",_
89
        "UPPER(bi.state),build_id",_
5102 dpurdie 90
        "build_id" )
5018 dpurdie 91
 
92
' Dim determine sorting options
93
'On Error goto 0
94
'Response.Write "<pre>"
95
Dim sortString
6879 dpurdie 96
If Request.Form("order[0][column]") <> "" Then
6579 dpurdie 97
 
6879 dpurdie 98
    Dim sortCol : sortCol = CInt(Request.Form("order[0][column]"))
99
    Dim sortDir : sortDir = " " & Request.Form("order[0][dir]")
6579 dpurdie 100
 
101
    Dim splitArg: splitArg = Split( sortCols(sortCol), "," )
6538 dpurdie 102
    Dim splitItem, joiner
103
    joiner = ""
104
    for each splitItem in splitArg
105
        If splitItem = "NOBUILDTIME" Then
106
            noBuildTime = " AND PV.BUILD_TIME is not null"
107
        Else
6579 dpurdie 108
            sortString = sortString & joiner & splitItem & " " & sortDir
6538 dpurdie 109
            joiner = ","
110
        End If
111
    next
112
    sortString = " ORDER BY " & sortString
5018 dpurdie 113
End If
114
 
115
' Filter (search )
116
Dim searchString
6879 dpurdie 117
If Request.Form("search[value]") <> "" Then
118
    searchString = " AND upper(p.PKG_NAME) LIKE upper('%" & Request.Form("search[value]") & "%')" 
5018 dpurdie 119
End If
120
 
121
Dim whereString
122
If parRtagId <> "" Then
123
    whereString = " AND bi.rtag_id = " &  parRtagId
124
End If
125
 
6879 dpurdie 126
' Limit to only new packages
127
Dim onlyNewString : onlyNewString = ""
128
If parOnlyNew Then
129
    onlyNewString = onlyNewString & " AND bi.reason = 'N' "
130
End If
131
If parOnlyComplete Then
132
    onlyNewString = onlyNewString & " AND bi.state = 'C' "
133
End If
134
 
5018 dpurdie 135
Dim BasicSql
6538 dpurdie 136
BasicSql =  "SELECT bi.PV_ID, " &_
137
            "  bi.RTAG_ID, " &_
138
            "  pv.pkg_id, " &_
139
            "  pj.PROJ_NAME, " &_
140
            "  pj.PROJ_ID, " &_
141
            "  RTAG_NAME, " &_
142
            "  p.PKG_NAME, " &_
143
            "  NVL(pv.V_EXT, '') AS V_EXT, " &_
144
            "  TO_CHAR(bi.TIMESTAMP, 'Dy DD-Mon-YYYY HH24:MI:SS') AS TIMESTAMPTXT, " &_
145
            "  DECODE(bi.reason, 'N', 'New Version', 'R', 'Ripple', 'T', 'Test', 'P', 'Restored', 'Unknown') AS REASON, " &_
146
            "  DECODE(bi.state, 'B', 'Buiding', 'C', 'Complete', 'E', 'Error', 'S', 'SysErr', 'Unknown') AS STATE, " &_
147
            "  bi.build_id " &_
148
            "FROM BUILD_INSTANCES bi, " &_
149
            "  projects pj, " &_
150
            "  RELEASE_TAGS rt, " &_
151
            "  packages p, " &_
152
            "  PACKAGE_VERSIONS pv " &_
153
            "WHERE bi.PV_ID = pv.pv_id " &_
154
            "AND pv.PKG_ID  = p.PKG_ID " &_
155
            "AND bi.RTAG_ID = rt.RTAG_ID " &_
156
            "AND rt.proj_id = pj.proj_id " &_
6879 dpurdie 157
            onlyNewString &_
6538 dpurdie 158
            noBuildTime &_
5018 dpurdie 159
            whereString &_
160
            searchString &_
161
            sortString
162
 
6538 dpurdie 163
SqlQry = "Select z.*," &_
164
            "(SELECT COUNT(*) FROM TEST_RUN tr WHERE tr.build_id = z.build_id ) AS test_count, " &_
165
            "(SELECT PKG_VERSION FROM PACKAGE_VERSIONS pv1 WHERE pv1.pv_id = z.pv_id ) AS PKG_VERSION, " &_
166
            "(SELECT PV_DESCRIPTION FROM PACKAGE_VERSIONS pv1 WHERE pv1.pv_id = z.pv_id ) AS PV_DESCRIPTION, " &_
167
            "(SELECT COMMENTS FROM PACKAGE_VERSIONS pv1 WHERE pv1.pv_id = z.pv_id ) AS COMMENTS, " &_
168
            "(SELECT BUILD_TIME FROM PACKAGE_VERSIONS pv1 WHERE pv1.pv_id = z.pv_id  ) AS BUILD_TIME" &_
169
            " from (select * from ( "&_
170
            "select /*+ FIRST_ROWS("& lastRow &") */ a.*, ROWNUM rnum from (" & BasicSql &_
5018 dpurdie 171
                ") a where ROWNUM <= " & lastRow &_
5102 dpurdie 172
            ") where rnum >= " & firstRow & ") z"
5018 dpurdie 173
 
174
' Assist in debug
175
oJSON.data("BasicSql") = BasicSql
5102 dpurdie 176
oJSON.data("SqlQry") = SqlQry
5018 dpurdie 177
 
178
' Perform the database query
6579 dpurdie 179
Set oJSON.data("data") = oJSON.Collection()
5018 dpurdie 180
On Error Resume Next
181
objEH.ErrorRedirect = FALSE
182
objEH.TryORA ( OraSession )
183
Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
184
objEH.CatchORA ( OraSession )
185
' Process each row and return required fields to the user
186
If objEH.Finally Then
187
   While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
6579 dpurdie 188
       Set newitem = oJSON.AddToCollection(oJSON.data("data"))
5018 dpurdie 189
 
190
       ' Attempt to speed up access tot he data
191
       '    Extract all fields for the row
192
       '    Access fields by index
193
       Dim fields
194
       Set fields = rsQry.Fields
6538 dpurdie 195
       Dim pv_id        : pv_id = fields(0)
196
       Dim rtag_id      : rtag_id = fields(1)
197
       Dim pkg_id       : pkg_id = fields(2)
5018 dpurdie 198
       Dim proj_name    : proj_name = fields(3)
199
       Dim proj_id      : proj_id = fields(4)
200
       Dim rtag_name    : rtag_name = fields(5)
201
       Dim pkg_name     : pkg_name = fields(6)
6538 dpurdie 202
       Dim v_ext        : v_ext = fields(7)
203
       Dim timestamp    : timestamp = fields(8)
204
       Dim reason       : reason = fields(9)
205
       Dim state        : state = fields(10)
206
       Dim buildId      : buildId = fields(11)
207
       Dim tcount       : tcount = fields(13)
208
       Dim pkg_version  : pkg_version = fields(14)
209
       Dim description  : description = Server.HTMLEncode(fields(15))
210
       Dim comments     : comments = Server.HTMLEncode(fields(16))
211
       Dim buildTime    : buildTime = Server.HTMLEncode(fields(17))
5018 dpurdie 212
 
213
       Set fields = nothing
214
 
6538 dpurdie 215
        If buildTime <= 0 Then buildTime = ""
216
        If tcount <= 0 Then tcount = ""
217
 
218
        newitem(0) = "<a href='rtree.asp?proj_id=" & proj_id & "'>" & proj_name &"</a>"
5394 dpurdie 219
        newitem(1) = "<a href='dependencies.asp?rtag_id=" & rtag_id & "'>" & rtag_name & "</a>"
5018 dpurdie 220
        newitem(2) = "<a href=view_by_version.asp?pkg_id=" & pkg_id & "&fpkgversion=*" & v_ext & " title=""" & description & """>" & pkg_name & "</a>"
221
        newitem(3) =  "<a href='dependencies.asp?pv_id=" & pv_id & "&rtag_id=" & rtag_id &"' title=""" & comments & """>" & pkg_version & "</a>"
222
        newitem(4) = timestamp
223
        newitem(5) = reason
6538 dpurdie 224
        newitem(6) = buildTime
225
        newitem(7) = "<a href='unit_test_log.asp?rtag_id=" & rtag_id & "&pv_id=" & pv_id & "'>" & state & "</a>"
226
        newitem(8) = tcount
5018 dpurdie 227
 
228
       rsQry.MoveNext
229
   Wend
230
End IF
231
 
232
rsQry.Close
233
Set rsQry = Nothing
234
 
235
'
236
' SQL error detection and reporting
237
If objEH.LastOraFailed Then
238
    oJSON.data("error") = 1
239
 
240
    oJSON.data("emsgSummary") = objEH.MessageSummary
241
    oJSON.data("emsgDetails") = objEH.MessageDetails
242
    oJSON.data("SqlQry") = SqlQry
243
End If
244
 
245
'Return the object
246
Response.Write oJSON.JSONoutput()
5957 dpurdie 247
Set oJSON = Nothing
248
Call Destroy_All_Objects
5018 dpurdie 249
%>