Subversion Repositories DevTools

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5048 dpurdie 1
<%@LANGUAGE="VBSCRIPT"%>
2
<%
3
'=====================================================
4
'   sdk_opr_json.asp
5
'   Ajax support for SDK operations
6
'       addNew          - New SDK Name
7
'       updateEntry     - Update Sdk Name
8
'       getData         - Get single Sdk Name Entry
9
'=====================================================
10
%>
11
<%
12
Option explicit
5049 dpurdie 13
' Essential to get UTF through all the hoops. ie: VÄSTTRAFIK (VTK)
14
Response.ContentType = "text/html"
15
Response.AddHeader "Content-Type", "text/html;charset=UTF-8"
16
Response.CodePage = 65001
17
Response.CharSet = "UTF-8"
5048 dpurdie 18
%>
19
<!--#include file="common/conf.asp"-->
20
<!--#include file="common/globals.asp"-->
21
<!--#include file="common/qstr.asp"-->
22
<!--#include file="common/common_subs.asp"-->
23
<!--#include file="_access_control_general.asp"-->
24
<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="class/classaspJSON.vbs"></SCRIPT> 
25
<%
26
'------------ Variable Definition -------------
27
Dim parOpr
28
Dim result
29
Dim SqlQry
30
Dim rsQry
31
 
32
parOpr = QStrPar("action")
33
result = -1
34
 
35
' Init the output JSON class
36
'   Operations can add data
37
'   Default data will be added at the end
38
Dim oJSON
39
Set oJSON = New aspJSON
40
Dim newitem
41
 
42
Function canModify
43
    canModify = objAccessControl.IsActive("CreateNewProject")
44
    If NOT canModify Then
45
        result = -4
46
        oJSON.data("error") = 1
47
        oJSON.data("emsgSummary") = "Permission denied"
48
        oJSON.data("emsgDetails") = oJSON.data("emsgSummary")
49
    End If
50
End Function
51
 
52
'   
53
'   Perform the body of the operations within a Sub and use
54
'   On Error Resule Next to catch errors that accur in the code
55
'
56
On Error Resume Next
57
If (parOpr = "addNew") Then
58
    If canModify() Then addNewEntry
59
 
60
ElseIf (parOpr = "getData") Then
61
     getData
62
 
63
ElseIf (parOpr = "updateEntry") Then
64
    If canModify() Then updateEntry
65
 
5049 dpurdie 66
ElseIf (parOpr = "getSdkNames") Then
67
    getSdkNames
68
 
69
ElseIf (parOpr = "getProjectList") Then
70
    getProjectList
71
 
72
ElseIf (parOpr = "getReleaseList") Then
73
    getReleaseList
74
 
75
ElseIf (parOpr = "addNewSdkVersion") Then
76
    addNewSdkVersion
77
 
5048 dpurdie 78
Else
79
    oJSON.data("error") = 1
80
    oJSON.data("emsgSummary") = "Unknown JSON Operation"
81
    oJSON.data("emsgDetails") = "The Requested JSON operation is not supported: " & parOpr
82
End If
83
 
84
 
85
' SQL error detection and reporting
86
If objEH.LastOraFailed Then
87
    oJSON.data("error") = 1
88
    result = -1
89
 
90
    oJSON.data("emsgSummary") = objEH.MessageSummary
91
    oJSON.data("emsgDetails") = objEH.MessageDetails
92
    oJSON.data("SqlQry") = SqlQry
93
'
94
'   Detect program errors
95
ElseIf Err.number <> 0 Then
96
    result = -3
97
    oJSON.data("error") = 2
98
    oJSON.data("errnum") = Err.number
99
    oJSON.data("errtxt") = Err.description
100
    oJSON.data("errsrc") = Err.source
101
    oJSON.data("emsgSummary") = "Internal VBScript Error:" & Err.number &  ":" & Err.description
102
End If
103
 
104
'Write single value
105
oJSON.data("result") = result
106
 
107
'function Sleep(seconds)
108
'    dim oshell, cmd
109
'    set oShell = CreateObject("Wscript.Shell")
110
'    cmd = "cmd.exe /c timeout " & seconds & " /nobreak"
111
'    oShell.Run cmd,0,1
112
'End function
113
'
114
'Sleep(2)
115
 
116
 
117
' DEBUG: A Hash of the user provided requests
118
<!--oJSON.data("QueryString") = Request.QueryString       -->
119
<!--                                                      -->
120
<!--Dim requestSet : Set requestSet = oJSON.Collection()  -->
121
<!--Set oJSON.data("Request") = requestSet                -->
122
<!--Dim variableName                                      -->
123
<!--for each variableName in Request.QueryString          -->
124
<!--    requestSet.add variableName, Request(variableName)-->
125
<!--next                                                  -->
126
<!--for each variableName in Request.Form                 -->
127
<!--    requestSet.add variableName, Request(variableName)-->
128
<!--next                                                  -->
129
 
130
 
131
'Return the object
132
Response.Write oJSON.JSONoutput()
133
%>
134
<%
135
'-------------------------------------------------
136
' Function:    addNewEntry
137
' Description: Create a new SDK Name entry
138
Sub addNewEntry
139
 
140
    '   Add a new entry
141
    '
142
    '   Setup for the database access
143
    OraDatabase.Parameters.Add "SDKNAME",    QStrPar("sdkName"), ORAPARM_INPUT, ORATYPE_VARCHAR2
144
    OraDatabase.Parameters.Add "SDKCOMMENT", QStrPar("sdkComment"), ORAPARM_INPUT, ORATYPE_VARCHAR2
145
 
146
     '  Test existance - simply to provide a Nice Error message
147
    SqlQry = "SELECT * FROM SDK_NAMES WHERE SDK_NAME = :SDKNAME"
148
    objEH.ErrorRedirect = FALSE
149
    objEH.TryORA ( OraSession )
150
    On Error Resume Next
151
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
152
    objEH.CatchORA ( OraSession )
153
    On Error GoTo 0
154
 
155
    If rsQry.RecordCount <> 0 Then
156
        result = -3
157
        oJSON.data("error") = -1
158
        oJSON.data("emsgSummary") = "SDK Name already exists"
159
        oJSON.data("emsgDetails") = oJSON.data("emsgSummary")
160
    Else
161
 
5049 dpurdie 162
        SqlQry = "INSERT INTO SDK_NAMES (SDK_NAME, SDK_COMMENT) VALUES (:SDKNAME, :SDKCOMMENT)"
5048 dpurdie 163
        objEH.ErrorRedirect = FALSE
164
        objEH.TryORA ( OraSession )
165
        On Error Resume Next
166
        OraDatabase.ExecuteSQL SqlQry
167
        objEH.CatchORA ( OraSession )
168
        On Error GoTo 0
169
 
170
        result = 0
171
    End If
172
    OraDatabase.Parameters.Remove "SDKCOMMENT"
173
    OraDatabase.Parameters.Remove "SDKNAME"
174
End Sub
175
 
176
'-------------------------------------------------
177
' Function:    getData
178
' Description: get data for a specified SDK Name
179
Sub getData
180
 
181
    '   Get Data for an existing entry
182
    '   Setup for the database access
183
    OraDatabase.Parameters.Add "SDKID",    QStrPar("sdkId"), ORAPARM_INPUT, ORATYPE_NUMBER
184
 
185
    SqlQry = "SELECT * from SDK_NAMES where SDK_ID=:SDKID"
186
 
187
    objEH.ErrorRedirect = FALSE
188
    objEH.TryORA ( OraSession )
189
    On Error Resume Next
190
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
191
    objEH.CatchORA ( OraSession )
192
    OraDatabase.Parameters.Remove "SDKID"
193
 
194
    Dim resultSet : Set resultSet = oJSON.Collection()
195
    If ((NOT rsQry.BOF) AND (NOT rsQry.EOF)) Then
196
        Dim ii
197
        for ii = 0 to rsQry.Fields.Count - 1
198
            resultSet (rsQry.FieldName(ii)) = rsQry.Fields(ii)
199
        Next
200
        Set oJSON.data("aaData") = resultSet
201
        result = 0
202
    End If
203
    rsQry.Close
204
    Set rsQry = Nothing
205
End Sub
206
 
207
'-------------------------------------------------
208
' Function:    updateEntry
209
' Description: Update an exxisting SDK Names entry
210
Sub updateEntry
211
 
212
    '
213
    '
214
    OraDatabase.Parameters.Add "SDKID",      QStrPar("sdkId"), ORAPARM_INPUT, ORATYPE_NUMBER
215
    OraDatabase.Parameters.Add "SDKNAME",    QStrPar("sdkName"), ORAPARM_INPUT, ORATYPE_VARCHAR2
216
    OraDatabase.Parameters.Add "SDKCOMMENT", QStrPar("sdkComment"), ORAPARM_INPUT, ORATYPE_VARCHAR2
217
 
218
    '  Test existance - simply to provide a Nice Error message
219
    SqlQry = "SELECT * FROM SDK_NAMES WHERE SDK_NAME = :SDKNAME AND  SDK_ID != :SDKID"
220
    objEH.ErrorRedirect = FALSE
221
    objEH.TryORA ( OraSession )
222
    On Error Resume Next
223
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
224
    objEH.CatchORA ( OraSession )
225
    On Error GoTo 0
226
 
227
    If rsQry.RecordCount <> 0 Then
228
        result = -3
229
        oJSON.data("error") = -1
230
        oJSON.data("emsgSummary") = "SDK Name already exists"
231
        oJSON.data("emsgDetails") = oJSON.data("emsgSummary")
232
    Else
233
        '   Update an existing entry
234
        SqlQry = "UPDATE SDK_NAMES SET SDK_NAME = :SDKNAME, SDK_COMMENT = :SDKCOMMENT WHERE SDK_ID = :SDKID"
235
        objEH.ErrorRedirect = FALSE
236
        objEH.TryORA ( OraSession )
237
        On Error Resume Next
238
        OraDatabase.ExecuteSQL SqlQry
239
        objEH.CatchORA ( OraSession )
240
        On Error GoTo 0
241
        result = 0
242
    End If
243
 
244
    OraDatabase.Parameters.Remove "SDKCOMMENT"
245
    OraDatabase.Parameters.Remove "SDKNAME"
246
    OraDatabase.Parameters.Remove "SDKID"
247
End Sub
5049 dpurdie 248
 
249
'-------------------------------------------------
250
' Function:    getSdkNames
251
' Description: Get Project information
252
'              Array of:
253
'               SDK_ID
254
'               SDK_NAME
255
 
256
Sub getSdkNames
257
    '   Get Data for an existing entry
258
    '   Setup for the database access
259
    SqlQry = "SELECT SDK_ID,SDK_NAME from SDK_NAMES order by SDK_NAME ASC"
260
 
261
    objEH.ErrorRedirect = FALSE
262
    objEH.TryORA ( OraSession )
263
    On Error Resume Next
264
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
265
    objEH.CatchORA ( OraSession )
266
 
267
    Set oJSON.data("aaData") = oJSON.Collection()
268
   While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
269
       Set newitem = oJSON.AddToCollection(oJSON.data("aaData"))
270
         Dim ii
271
        for ii = 0 to rsQry.Fields.Count - 1
272
            newitem (rsQry.FieldName(ii)) = rsQry.Fields(ii)
273
        Next
274
 
275
       rsQry.MoveNext
276
    Wend
277
    result = 0
278
    rsQry.Close
279
    Set rsQry = Nothing
280
 
281
End Sub
282
 
283
 
284
'-------------------------------------------------
285
' Function:    getProjectList
286
' Description: Get Project information
287
'              Array of:
288
'               proj_id
289
'               proj_name
290
Sub getProjectList
291
    '   Get Data for an existing entry
292
    '   Setup for the database access
293
    SqlQry = "SELECT PROJ_ID,PROJ_NAME from PROJECTS order by PROJ_NAME ASC"
294
 
295
    objEH.ErrorRedirect = FALSE
296
    objEH.TryORA ( OraSession )
297
    On Error Resume Next
298
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
299
    objEH.CatchORA ( OraSession )
300
 
301
    Set oJSON.data("aaData") = oJSON.Collection()
302
   While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
303
       Set newitem = oJSON.AddToCollection(oJSON.data("aaData"))
304
         Dim ii
305
        for ii = 0 to rsQry.Fields.Count - 1
306
            newitem (rsQry.FieldName(ii)) = rsQry.Fields(ii)
307
        Next
308
 
309
       rsQry.MoveNext
310
    Wend
311
    result = 0
312
    rsQry.Close
313
    Set rsQry = Nothing
314
 
315
End Sub
316
 
317
'-------------------------------------------------
318
' Function:    getReleaseList
319
' Description: Get Release information for a project
320
'              Array of:
321
'               rtag_id
322
'               rtag_name
323
'               official
324
'              Also
325
'               proj_id
326
'
327
' Options:      proj_id - Get Releases for given project
328
'               rtag_id - Get Releases for project of this release
329
'               mode    - true: All Releases, otherwise only non-closed releases
330
 
331
Sub getReleaseList
332
    '   Get Data for an existing entry
333
    '   Setup for the database access
334
    Dim rtag_id : rtag_id = QStrPar("rtag_id")
335
    Dim proj_id : proj_id = QStrPar("proj_id")
336
    OraDatabase.Parameters.Add "PROJ_ID",      proj_id, ORAPARM_INPUT, ORATYPE_NUMBER
337
    OraDatabase.Parameters.Add "RTAG_ID",      rtag_id, ORAPARM_INPUT, ORATYPE_NUMBER
338
 
339
    '
340
    '   Limit Selection to non-closed releases
341
    '
342
    Dim limit
343
    If NOT QStrPar("mode") Then
344
        limit = " AND OFFICIAL NOT IN ('Y', 'A')"
345
    End If
346
 
347
    Dim where
348
    If rtag_id <> "" Then
349
        where = " WHERE proj_id = (SELECT PROJ_ID from RELEASE_TAGS where RTAG_ID=:RTAG_ID)" 
350
    Else
351
        where = " WHERE PROJ_ID=:PROJ_ID"
352
    End If
353
 
354
    SqlQry = "SELECT PROJ_ID,RTAG_ID,RTAG_NAME,OFFICIAL  from RELEASE_TAGS" &_
355
             where & limit &_
356
             " ORDER BY RTAG_NAME ASC"
357
 
358
    ' Perform Query
359
    objEH.ErrorRedirect = FALSE
360
    objEH.TryORA ( OraSession )
361
    On Error Resume Next
362
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
363
    objEH.CatchORA ( OraSession )
364
 
365
    ' Process Results
366
    Set oJSON.data("aaData") = oJSON.Collection()
367
    While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
368
        Set newitem = oJSON.AddToCollection(oJSON.data("aaData"))
369
        Dim ii
370
        for ii = 1 to rsQry.Fields.Count - 1
371
            newitem (rsQry.FieldName(ii)) = rsQry.Fields(ii)
372
        Next
373
        proj_id = rsQry.Fields(0) 
374
 
375
       rsQry.MoveNext
376
    Wend
377
 
378
    oJSON.data("proj_id") = proj_id
379
 
380
    result = 0
381
    rsQry.Close
382
    Set rsQry = Nothing
383
 
384
    OraDatabase.Parameters.Remove "RTAG_ID"
385
    OraDatabase.Parameters.Remove "PROJ_ID"
386
End Sub
387
 
388
'-------------------------------------------------
389
' Function:     addNewSdkVersion
390
' Description:  Add a New Sdk Version
391
Sub addNewSdkVersion
392
    Dim userId : userId = objAccessControl.UserId()
393
    '   Add a new entry
394
    '
395
    '   Setup for the database access
396
    '
397
    OraDatabase.Parameters.Add "SDKTAG_NAME",   QStrPar("sdkName"),     ORAPARM_INPUT, ORATYPE_VARCHAR2
398
    OraDatabase.Parameters.Add "DESCRIPTION",   QStrPar("sdkComment"),  ORAPARM_INPUT, ORATYPE_VARCHAR2
399
    OraDatabase.Parameters.Add "SDK_ID",        QStrPar("sdk_id"),      ORAPARM_INPUT, ORATYPE_NUMBER
400
    OraDatabase.Parameters.Add "RTAG_ID",       QStrPar("rtag_id"),     ORAPARM_INPUT, ORATYPE_NUMBER
401
    OraDatabase.Parameters.Add "CREATOR_ID",    userId,                 ORAPARM_INPUT, ORATYPE_NUMBER
402
    OraDatabase.Parameters.Add "STATE_ID",      userId,                 ORAPARM_INPUT, ORATYPE_NUMBER
403
 
404
     '  Test existance - simply to provide a Nice Error message
405
    SqlQry = "SELECT * FROM SDK_TAGS WHERE SDKTAG_NAME = :SDKTAG_NAME AND SDK_ID = :SDK_ID"
406
    objEH.ErrorRedirect = FALSE
407
    objEH.TryORA ( OraSession )
408
    On Error Resume Next
409
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
410
    objEH.CatchORA ( OraSession )
411
    On Error GoTo 0
412
 
413
    If rsQry.RecordCount <> 0 Then
414
        result = -3
415
        oJSON.data("error") = -1
416
        oJSON.data("emsgSummary") = "SDK Verion Name already exists in this SDK family"
417
        oJSON.data("emsgDetails") = oJSON.data("emsgSummary")
418
    Else
419
        SqlQry = "INSERT INTO SDK_TAGS (SDKTAG_NAME, DESCRIPTION, SDK_ID, RTAG_ID, CREATOR_ID, STATE_ID) VALUES (:SDKTAG_NAME, :DESCRIPTION, :SDK_ID, :RTAG_ID, :CREATOR_ID, :STATE_ID)"
420
        objEH.ErrorRedirect = FALSE
421
        objEH.TryORA ( OraSession )
422
        On Error Resume Next
423
        OraDatabase.ExecuteSQL SqlQry
424
        objEH.CatchORA ( OraSession )
425
        On Error GoTo 0
426
 
427
        result = 0
428
    End If
429
 
430
    OraDatabase.Parameters.Remove "SDKTAG_NAME"
431
    OraDatabase.Parameters.Remove "DESCRIPTION"
432
    OraDatabase.Parameters.Remove "SDK_ID"
433
    OraDatabase.Parameters.Remove "RTAG_ID"    
434
    OraDatabase.Parameters.Remove "CREATOR_ID" 
435
    OraDatabase.Parameters.Remove "STATE_ID"   
436
 
437
End Sub
5048 dpurdie 438
%>