Subversion Repositories DevTools

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5050 dpurdie 1
<%@LANGUAGE="VBSCRIPT"%>
2
<%
3
'=====================================================
4
'       sdk_content_json.asp
5
'       Ajax support for table of SDK Content
6
'       Designed to be driven by the jquery tablescroller
5054 dpurdie 7
'       Uses DataTables 1.10 format data
5050 dpurdie 8
'=====================================================
9
%>
10
<%
11
Option explicit
12
' Essential to get UTF through all the hoops. ie: VÄSTTRAFIK (VTK)
13
Response.ContentType = "text/html"
14
Response.AddHeader "Content-Type", "text/html;charset=UTF-8"
15
Response.CodePage = 65001
16
Response.CharSet = "UTF-8"
17
%>
18
<!--#include file="common/conf.asp"-->
19
<!--#include file="common/globals.asp"-->
20
<!--#include file="common/qstr.asp"-->
21
<!--#include file="common/common_subs.asp"-->
22
<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="class/classaspJSON.vbs"></SCRIPT> 
23
<%
24
'------------ Variable Definition -------------
25
Dim result : result = -1
26
Dim SqlQry
27
Dim rsQry
28
Dim sdktag_id : sdktag_id = Request("sdktag_id")
5055 dpurdie 29
Dim sdk_reftag_id : sdk_reftag_id = Request("sdk_reftag_id") : if sdk_reftag_id = "" Then sdk_reftag_id = 0
5052 dpurdie 30
Dim sdk_statefilter : sdk_statefilter = Request("sdk_statefilter")
5050 dpurdie 31
 
32
' Init the output JSON class
33
'   Operations can add data
34
'   Default data will be added at the end
35
Dim oJSON :Set oJSON = New aspJSON
36
Dim newitem
37
 
38
'
39
' Determine the size of the record set
40
'   Gives bad results when searching
41
Dim MaxCount : MaxCount = 0
42
 
43
SqlQry = "select count(*) as count from SDK_CONTENT skc where SDKTAG_ID = '" & sdktag_id &"'"
5053 dpurdie 44
If sdk_statefilter Then
45
    SqlQry = SqlQry & " AND skc.sdkpkg_state in ('E')"
46
End If
5050 dpurdie 47
 
48
On Error Resume Next
49
objEH.ErrorRedirect = FALSE
50
objEH.TryORA ( OraSession )
51
Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
52
objEH.CatchORA ( OraSession )
53
    If ((NOT rsQry.BOF) AND (NOT rsQry.EOF)) Then
54
        MaxCount = rsQry("COUNT")
55
    End If
56
rsQry.Close
57
Set rsQry = Nothing
58
 
59
' Basic Header
60
'   iTotalRecords = total records without any filtering/limits
61
'   iTotalDisplayRecords = filtered result count
62
 
5054 dpurdie 63
oJSON.data("draw") = CInt(Request.QueryString("draw"))
64
oJSON.data("recordsTotal") = MaxCount
65
oJSON.data("recordsFiltered") = MaxCount
5050 dpurdie 66
 
67
Dim vName
68
for each vName in Request.QueryString
69
    oJSON.data("sReq_" & vName) = Request.QueryString(vName)
70
next
71
 
72
' Extract selected range
73
result = 0
74
dim firstRow,lastRow
5054 dpurdie 75
firstRow = CInt(Request.QueryString("start"))
76
lastRow = firstRow + CInt(Request.QueryString("length"))
5050 dpurdie 77
 
78
'
79
'   Define array of colums to sort by
80
'       Must match user sort column request
81
Dim sortCols: sortCols = Array ( _
5055 dpurdie 82
        "pv_id", _
83
        "UPPER(pkg_name)", _
84
        "UPPER(pkg_version)", _
85
        "UPPER(ref_pkg_version)", _
86
        "UPPER(NVL(ref_sdkpkg_state,'-'))" , _
87
        "UPPER(NVL(sdkpkg_state,'-'))" )
5050 dpurdie 88
 
89
' Dim determine sorting options
5055 dpurdie 90
'   Sort by specified colum
91
'   Then sort by package name
92
'   Default - sort by package name
5050 dpurdie 93
Dim sortString
5055 dpurdie 94
Dim sortJoin : sortJoin = " ORDER BY "
5054 dpurdie 95
If Request.QueryString("order[0][column]") <> "" Then
5055 dpurdie 96
 
97
    Dim sortCol : sortCol = CInt(Request.QueryString("order[0][column]"))
98
    Dim sortDir : sortDir = " " & Request.QueryString("order[0][dir]")
99
 
100
    sortString = sortJoin & sortCols(sortCol)
101
    sortString = sortString & sortDir
102
    sortJoin = ","
103
 
104
    If sortCol <> 1 Then
105
        sortString = sortString &sortJoin & sortCols(CInt(1))& sortDir
106
    End If
5050 dpurdie 107
Else
5055 dpurdie 108
    sortString = sortJoin & sortCols(CInt(1)) & " asc"
5050 dpurdie 109
End If
110
 
111
' Filter (search )
5055 dpurdie 112
'   Filter by search string
113
'   Filter by state
114
Dim searchJoin : searchJoin = " WHERE "
5052 dpurdie 115
Dim searchString : searchString = ""
5054 dpurdie 116
If Request.QueryString("search[value]") <> "" Then
5055 dpurdie 117
    searchString = searchJoin & "upper(pkg_name) || '_' || UPPER(pkg_version) LIKE upper('%" & Request.QueryString("search[value]") & "%')" 
118
    searchJoin = " AND "
5050 dpurdie 119
End If
120
 
5052 dpurdie 121
If sdk_statefilter Then
5055 dpurdie 122
    searchString = searchString & searchJoin & "sdkpkg_state in ('E') OR REF_SDKPKG_STATE in ('E')"
5052 dpurdie 123
End If
124
 
5050 dpurdie 125
Dim BasicSql
5055 dpurdie 126
BasicSql =  "SELECT * from (" &_
127
            "SELECT  " &_
128
            "A.PV_ID," &_
129
            "NVL(A.PKG_NAME, B.PKG_NAME) as PKG_NAME," &_
130
            "A.PKG_VERSION," &_
131
            "B.PKG_VERSION as REF_PKG_VERSION," &_
132
            "A.sdkpkg_state," &_
133
            "B.sdkpkg_state as REF_SDKPKG_STATE" &_
134
            " FROM " &_
135
            "(SELECT p.pkg_name || pv.v_ext as mname," &_
136
            "  sc.pv_id," &_
137
            "  p.pkg_name," &_
138
            "  pv.pkg_version," &_
139
            "  sc.sdkpkg_state" &_
140
            " FROM SDK_CONTENT SC ," &_
141
            "  PACKAGE_VERSIONS pv," &_
142
            "  PACKAGES p" &_
143
            " WHERE sc.sdktag_id = " & sdktag_id  &_
144
            " AND pv.pv_id       = sc.pv_id" &_
145
            " AND p.pkg_id       = pv.pkg_id" &_
146
            ") A" &_
147
            " FULL OUTER JOIN" &_
148
            "(" &_
149
            "SELECT p.pkg_name || pv.v_ext as mname," &_
150
            "  sc.pv_id," &_
151
            "  p.pkg_name," &_
152
            "  pv.pkg_version," &_
153
            "  sc.sdkpkg_state" &_
154
            " FROM SDK_CONTENT SC ," &_
155
            "  PACKAGE_VERSIONS pv," &_
156
            "  PACKAGES p" &_
157
            " WHERE sc.sdktag_id = " & sdk_reftag_id &_
158
            " AND pv.pv_id       = sc.pv_id" &_
159
            " AND p.pkg_id       = pv.pkg_id" &_
160
            " ) B" &_
161
            " ON A.mname = B.mname)" &_
5050 dpurdie 162
            searchString &_
163
            sortString
164
 
165
SqlQry = "select * from ( "&_
166
            "select a.*, ROWNUM rnum from (" & BasicSql &_
167
                ") a where ROWNUM <= " & lastRow &_
168
            ") where rnum >= " & firstRow
169
 
170
' Assist in debug
171
oJSON.data("BasicSql") = BasicSql
172
'oJSON.data("SqlQry") = SqlQry
173
 
174
' Perform the database query
175
Set oJSON.data("aaData") = oJSON.Collection()
176
On Error Resume Next
177
objEH.ErrorRedirect = FALSE
178
objEH.TryORA ( OraSession )
179
Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
180
objEH.CatchORA ( OraSession )
181
' Process each row and return required fields to the user
182
If objEH.Finally Then
183
On Error goto 0
184
 
185
    While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
186
        Set newitem = oJSON.AddToCollection(oJSON.data("aaData"))
187
        Dim ii
188
        for ii = 0 to rsQry.Fields.Count - 2
189
            newitem (rsQry.FieldName(ii)) = rsQry.Fields(ii)
190
            'newitem (ii) = rsQry.Fields(ii)
191
        Next
192
       rsQry.MoveNext
193
    Wend
194
End IF
195
 
196
rsQry.Close
197
Set rsQry = Nothing
198
 
199
'
200
' SQL error detection and reporting
5054 dpurdie 201
'   The content of 'error' will be dsplayed to the user.
5050 dpurdie 202
If objEH.LastOraFailed Then
5054 dpurdie 203
    oJSON.data("error") = objEH.MessageSummary
5050 dpurdie 204
    oJSON.data("emsgDetails") = objEH.MessageDetails
205
    oJSON.data("SqlQry") = SqlQry
206
End If
207
 
208
'Return the object
209
Response.Write oJSON.JSONoutput()
210
'OraSession.Dispose()
211
%>