Subversion Repositories DevTools

Rev

Rev 6773 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
6770 dpurdie 1
<%@LANGUAGE="VBSCRIPT"%>
2
<%
3
'=====================================================
4
'   _json_Replication.asp
5
'   Ajax support Package Replication Operations
6
'
7
'=====================================================
8
%>
9
<%
10
Option explicit
11
' Essential to get UTF through all the hoops. ie: VÄSTTRAFIK (VTK)
12
Response.ContentType = "text/html"
13
Response.AddHeader "Content-Type", "text/html;charset=UTF-8"
14
Response.CodePage = 65001
15
Response.CharSet = "UTF-8"
16
%>
17
<!--#include file="common/conf.asp"-->
18
<!--#include file="common/globals.asp"-->
19
<!--#include file="common/qstr.asp"-->
20
<!--#include file="common/common_subs.asp"-->
21
<% '------------ ACCESS CONTROL ------------------ %>
22
<!--#include file="_access_control_login_optional.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("Opr")
33
 
34
' Init the output JSON class
35
'   Operations can add data
36
'   Default data will be added at the end
37
Dim oJSON
38
Set oJSON = New aspJSON
39
Dim newitem
40
 
6777 dpurdie 41
Function canModify(cname)
42
    canModify = canActionControl(cname)
6770 dpurdie 43
    If NOT canModify Then
44
        result = -4
45
        oJSON.data("error") = 1
46
        oJSON.data("emsgSummary") = "Permission denied"
47
        oJSON.data("emsgDetails") = oJSON.data("emsgSummary")
48
    End If
49
End Function
50
 
51
'
52
'   Prefill error indications
53
'   
54
result = -1
55
oJSON.data("emsgSummary") = "JSON Operation:" & parOpr
56
oJSON.data("emsgDetails") = "Internal Problem. Error not reported" 
57
 
58
'   
59
'   Perform the body of the operations within a Sub and use
60
'   On Error Resule Next to catch errors that accur in the code
61
'
62
On Error Resume Next
63
 
64
If (parOpr = "EnableProject") Then
6777 dpurdie 65
    If canModify("ConfigureReplication") Then EnableProject
6770 dpurdie 66
ElseIf (parOpr = "RemoveProject") Then
6777 dpurdie 67
    If canModify("ConfigureReplication") Then RemoveProject
68
 
6770 dpurdie 69
ElseIf (parOpr = "AddProject") Then
6777 dpurdie 70
    If canModify("ConfigureReplication") Then AddProject
6770 dpurdie 71
ElseIf (parOpr = "EnableRelease") Then
6777 dpurdie 72
    If canModify("ConfigureReplication") Then EnableRelease
6770 dpurdie 73
ElseIf (parOpr = "RemoveRelease") Then
6777 dpurdie 74
    If canModify("ConfigureReplication") Then RemoveRelease
6770 dpurdie 75
ElseIf (parOpr = "AddRelease") Then
6777 dpurdie 76
    If canModify("ConfigureReplication") Then AddRelease
6770 dpurdie 77
 
78
Else
79
    oJSON.data("error") = 1
80
    oJSON.data("emsgSummary") = "Unknown JSON Operation"
81
    oJSON.data("emsgDetails") = "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:"
102
    oJSON.data("emsgDetails") = Err.number &  ":" & Err.description
103
End If
104
On error goto 0
105
'Write single value
106
oJSON.data("result") = result
107
If result = 0 Then
108
    oJSON.data.Remove("emsgSummary")
109
    oJSON.data.Remove("emsgDetails")
110
End If
111
 
112
'function Sleep(seconds)
113
'    dim oshell, cmd
114
'    set oShell = CreateObject("Wscript.Shell")
115
'    cmd = "cmd.exe /c timeout " & seconds & " /nobreak"
116
'    oShell.Run cmd,0,1
117
'End function
118
'
119
'Sleep(2)
120
 
121
 
122
' DEBUG: A Hash of the user provided requests
123
<!--oJSON.data("QueryString") = Request.QueryString       -->
124
<!--                                                      -->
125
<!--Dim requestSet : Set requestSet = oJSON.Collection()  -->
126
<!--Set oJSON.data("Request") = requestSet                -->
127
<!--Dim variableName                                      -->
128
<!--for each variableName in Request.QueryString          -->
129
<!--    requestSet.add variableName, Request(variableName)-->
130
<!--next                                                  -->
131
<!--for each variableName in Request.Form                 -->
132
<!--    requestSet.add variableName, Request(variableName)-->
133
<!--next                                                  -->
134
 
135
 
136
'Return the object
137
Response.Write oJSON.JSONoutput()
138
Set oJSON = Nothing
139
Call Destroy_All_Objects
140
%>
141
<%
142
'-------------------------------------------------
143
' Function:    EnableProject
144
' Description: Set the enabled state of a Project Replica for a specified target
145
'              server_id - Id of the BLAT replica server
146
'              user_id - user_id requesting the operation
147
'              proj_id - proj_id of the project entry to modify
148
'              new_state - New state
149
Sub EnableProject
150
 
151
    Dim  parServerId : parServerId = QStrPar("server_id")
152
    Dim  parUserId : parUserId = QStrPar("user_id")
153
    Dim  parProjId : parProjId = QStrPar("proj_id")
154
    Dim  parState  : parState = QStrPar("new_state")
155
 
156
    If parServerId <> "" AND parUserId<> "" AND parProjId <> "" AND parState <> "" Then
157
 
158
        If parState <> "Y" and parState <> "N" Then
159
            oJSON.data("emsgSummary") = "EnableProject"
160
            oJSON.data("emsgDetails") = "Invalid State"
161
            Exit Sub
162
        End If
163
 
164
        objEH.ErrorRedirect = FALSE
165
        objEH.TryORA ( OraSession )
166
        On Error Resume Next
167
 
168
        OraDatabase.Parameters.Add "USER_ID",           parUserId,      ORAPARM_INPUT, ORATYPE_NUMBER
169
        OraDatabase.Parameters.Add "PROJ_ID",           parProjId,      ORAPARM_INPUT, ORATYPE_NUMBER
170
        OraDatabase.Parameters.Add "SERVER_ID",         parServerId,    ORAPARM_INPUT, ORATYPE_NUMBER
171
        OraDatabase.Parameters.Add "STATE",             parState,       ORAPARM_INPUT, ORATYPE_NUMBER
172
 
173
        SqlQry = "UPDATE BLAT_PROJECTS SET BP_ENABLED = :STATE where BLAT_ID = :SERVER_ID and PROJ_ID = :PROJ_ID"
174
        OraDatabase.ExecuteSQL SqlQry
175
 
6773 dpurdie 176
        OraDatabase.ExecuteSQL ("BEGIN PK_BLATAPI.set_pkg_replica_changed(:SERVER_ID); END; ")
177
 
6770 dpurdie 178
        OraDatabase.Parameters.Remove "USER_ID_LIST"
179
        OraDatabase.Parameters.Remove "PROJ_ID"
180
        OraDatabase.Parameters.Remove "SERVER_ID"
181
        OraDatabase.Parameters.Remove "STATE"
182
 
183
        objEH.CatchORA ( OraSession )
184
        result = 0
185
 
186
    Else
187
        oJSON.data("emsgSummary") = "EnableProject"
188
        oJSON.data("emsgDetails") = "Insufficient arguments"
189
    End If
190
 
191
End Sub
192
 
193
'-------------------------------------------------
194
' Function:    RemoveProject
195
' Description: Remove a Project Replica for a specified target
196
'              server_id - Id of the BLAT replica server
197
'              user_id - user_id requesting the operation
198
'              proj_id - proj_id of the project entry to modify
199
Sub RemoveProject
200
 
201
    Dim  parServerId : parServerId = QStrPar("server_id")
202
    Dim  parUserId : parUserId = QStrPar("user_id")
203
    Dim  parProjId : parProjId = QStrPar("proj_id")
204
 
205
    If parServerId <> "" AND parUserId<> "" AND parProjId <> "" Then
206
 
207
        objEH.ErrorRedirect = FALSE
208
        objEH.TryORA ( OraSession )
209
        On Error Resume Next
210
 
211
        OraDatabase.Parameters.Add "USER_ID",           parUserId,      ORAPARM_INPUT, ORATYPE_NUMBER
212
        OraDatabase.Parameters.Add "PROJ_ID",           parProjId,      ORAPARM_INPUT, ORATYPE_NUMBER
213
        OraDatabase.Parameters.Add "SERVER_ID",         parServerId,    ORAPARM_INPUT, ORATYPE_NUMBER
214
 
215
        SqlQry = "DELETE FROM BLAT_PROJECTS where BLAT_ID = :SERVER_ID and PROJ_ID = :PROJ_ID"
216
        OraDatabase.ExecuteSQL SqlQry
6773 dpurdie 217
        OraDatabase.ExecuteSQL ("BEGIN PK_BLATAPI.set_pkg_replica_changed(:SERVER_ID); END; ")
6770 dpurdie 218
 
219
        OraDatabase.Parameters.Remove "USER_ID_LIST"
220
        OraDatabase.Parameters.Remove "PROJ_ID"
221
        OraDatabase.Parameters.Remove "SERVER_ID"
222
 
223
        objEH.CatchORA ( OraSession )
224
        result = 0
225
 
226
    Else
227
        oJSON.data("emsgSummary") = "EnableProject"
228
        oJSON.data("emsgDetails") = "Insufficient arguments"
229
    End If
230
 
231
End Sub
232
 
233
'-------------------------------------------------
234
' Function:    AddProject
235
' Description: Add a Project Replica for a specified target
236
'              server_id - Id of the BLAT replica server
237
'              user_id - user_id requesting the operation
238
'              proj_id - proj_id of the project entry to modify
239
Sub AddProject
240
 
241
    Dim  parServerId : parServerId = QStrPar("server_id")
242
    Dim  parUserId : parUserId = QStrPar("user_id")
243
    Dim  parProjId : parProjId = QStrPar("proj_id")
244
 
245
    If parServerId <> "" AND parUserId<> "" AND parProjId <> "" Then
246
 
247
        objEH.ErrorRedirect = FALSE
248
        objEH.TryORA ( OraSession )
249
        On Error Resume Next
250
 
251
        OraDatabase.Parameters.Add "USER_ID",           parUserId,      ORAPARM_INPUT, ORATYPE_NUMBER
252
        OraDatabase.Parameters.Add "PROJ_ID",           parProjId,      ORAPARM_INPUT, ORATYPE_NUMBER
253
        OraDatabase.Parameters.Add "SERVER_ID",         parServerId,    ORAPARM_INPUT, ORATYPE_NUMBER
254
 
255
        SqlQry = "INSERT INTO BLAT_PROJECTS (BLAT_ID,proj_id) VALUES( :SERVER_ID, :PROJ_ID)"
256
        OraDatabase.ExecuteSQL SqlQry
6773 dpurdie 257
        OraDatabase.ExecuteSQL ("BEGIN PK_BLATAPI.set_pkg_replica_changed(:SERVER_ID); END; ")
6770 dpurdie 258
 
259
        OraDatabase.Parameters.Remove "USER_ID_LIST"
260
        OraDatabase.Parameters.Remove "PROJ_ID"
261
        OraDatabase.Parameters.Remove "SERVER_ID"
262
 
263
        objEH.CatchORA ( OraSession )
264
        result = 0
265
 
266
    Else
267
        oJSON.data("emsgSummary") = "EnableProject"
268
        oJSON.data("emsgDetails") = "Insufficient arguments"
269
    End If
270
 
271
End Sub
272
 
273
'-------------------------------------------------
274
' Function:    EnableRelease
275
' Description: Set the enabled state of a Release Replica for a specified target
276
'              server_id - Id of the BLAT replica server
277
'              user_id - user_id requesting the operation
278
'              rtag_id - rtag_id of the release entry to modify
279
'              new_state - New state
280
Sub EnableRelease
281
 
282
    Dim  parServerId : parServerId = QStrPar("server_id")
283
    Dim  parUserId : parUserId = QStrPar("user_id")
284
    Dim  parRtagId : parRtagId = QStrPar("rtag_id")
285
    Dim  parState  : parState = QStrPar("new_state")
286
 
287
    If parServerId <> "" AND parUserId<> "" AND parRtagId <> "" AND parState <> "" Then
288
 
289
        If parState <> "Y" and parState <> "N" Then
290
            oJSON.data("emsgSummary") = "EnableProject"
291
            oJSON.data("emsgDetails") = "Invalid State"
292
            Exit Sub
293
        End If
294
 
295
        objEH.ErrorRedirect = FALSE
296
        objEH.TryORA ( OraSession )
297
        On Error Resume Next
298
 
299
        OraDatabase.Parameters.Add "USER_ID",           parUserId,      ORAPARM_INPUT, ORATYPE_NUMBER
300
        OraDatabase.Parameters.Add "RTAG_ID",           parRtagId,      ORAPARM_INPUT, ORATYPE_NUMBER
301
        OraDatabase.Parameters.Add "SERVER_ID",         parServerId,    ORAPARM_INPUT, ORATYPE_NUMBER
302
        OraDatabase.Parameters.Add "STATE",             parState,       ORAPARM_INPUT, ORATYPE_NUMBER
303
 
304
        SqlQry = "UPDATE BLAT_RELEASES SET BR_ENABLED = :STATE where BLAT_ID = :SERVER_ID and RTAG_ID = :RTAG_ID"
305
        OraDatabase.ExecuteSQL SqlQry
6773 dpurdie 306
        OraDatabase.ExecuteSQL ("BEGIN PK_BLATAPI.set_pkg_replica_changed(:SERVER_ID); END; ")
6770 dpurdie 307
 
308
        OraDatabase.Parameters.Remove "USER_ID_LIST"
309
        OraDatabase.Parameters.Remove "RTAG_ID"
310
        OraDatabase.Parameters.Remove "SERVER_ID"
311
        OraDatabase.Parameters.Remove "STATE"
312
 
313
        objEH.CatchORA ( OraSession )
314
        result = 0
315
 
316
    Else
317
        oJSON.data("emsgSummary") = "EnableProject"
318
        oJSON.data("emsgDetails") = "Insufficient arguments"
319
    End If
320
 
321
End Sub
322
'-------------------------------------------------
323
' Function:    RemoveRelease
324
' Description: Remove a Release Replica for a specified target
325
'              server_id - Id of the BLAT replica server
326
'              user_id - user_id requesting the operation
327
'              rtag_id - rtag_id of the release entry to modify
328
Sub RemoveRelease
329
 
330
    Dim  parServerId : parServerId = QStrPar("server_id")
331
    Dim  parUserId : parUserId = QStrPar("user_id")
332
    Dim  parRtagId : parRtagId = QStrPar("rtag_id")
333
 
334
    If parServerId <> "" AND parUserId<> "" AND parRtagId <> "" Then
335
 
336
        objEH.ErrorRedirect = FALSE
337
        objEH.TryORA ( OraSession )
338
        On Error Resume Next
339
 
340
        OraDatabase.Parameters.Add "USER_ID",           parUserId,      ORAPARM_INPUT, ORATYPE_NUMBER
341
        OraDatabase.Parameters.Add "RTAG_ID",           parRtagId,      ORAPARM_INPUT, ORATYPE_NUMBER
342
        OraDatabase.Parameters.Add "SERVER_ID",         parServerId,    ORAPARM_INPUT, ORATYPE_NUMBER
343
 
344
        SqlQry = "DELETE FROM BLAT_RELEASES where BLAT_ID = :SERVER_ID and RTAG_ID = :RTAG_ID"
345
        OraDatabase.ExecuteSQL SqlQry
6773 dpurdie 346
        OraDatabase.ExecuteSQL ("BEGIN PK_BLATAPI.set_pkg_replica_changed(:SERVER_ID); END; ")
6770 dpurdie 347
 
348
        OraDatabase.Parameters.Remove "USER_ID_LIST"
349
        OraDatabase.Parameters.Remove "RTAG_ID"
350
        OraDatabase.Parameters.Remove "SERVER_ID"
351
 
352
        objEH.CatchORA ( OraSession )
353
        result = 0
354
 
355
    Else
356
        oJSON.data("emsgSummary") = "EnableProject"
357
        oJSON.data("emsgDetails") = "Insufficient arguments"
358
    End If
359
 
360
End Sub
361
'-------------------------------------------------
362
' Function:    AddRelease
363
' Description: Add a Release Replica for a specified target
364
'              server_id - Id of the BLAT replica server
365
'              user_id - user_id requesting the operation
366
'              rtag_id - rtag_id of the release entry to modify
367
Sub AddRelease
368
 
369
    Dim  parServerId : parServerId = QStrPar("server_id")
370
    Dim  parUserId : parUserId = QStrPar("user_id")
371
    Dim  parRtagId : parRtagId = QStrPar("rtag_id")
372
 
373
    If parServerId <> "" AND parUserId<> "" AND parRtagId <> "" Then
374
 
375
        objEH.ErrorRedirect = FALSE
376
        objEH.TryORA ( OraSession )
377
        On Error Resume Next
378
 
379
        OraDatabase.Parameters.Add "USER_ID",           parUserId,      ORAPARM_INPUT, ORATYPE_NUMBER
380
        OraDatabase.Parameters.Add "RTAG_ID",           parRtagId,      ORAPARM_INPUT, ORATYPE_NUMBER
381
        OraDatabase.Parameters.Add "SERVER_ID",         parServerId,    ORAPARM_INPUT, ORATYPE_NUMBER
382
 
383
        SqlQry = "INSERT INTO BLAT_RELEASES (BLAT_ID,rtag_id) VALUES( :SERVER_ID, :RTAG_ID)"
384
        OraDatabase.ExecuteSQL SqlQry
6773 dpurdie 385
        OraDatabase.ExecuteSQL ("BEGIN PK_BLATAPI.set_pkg_replica_changed(:SERVER_ID); END; ")
6770 dpurdie 386
 
387
        OraDatabase.Parameters.Remove "USER_ID_LIST"
388
        OraDatabase.Parameters.Remove "RTAG_ID"
389
        OraDatabase.Parameters.Remove "SERVER_ID"
390
 
391
        objEH.CatchORA ( OraSession )
392
        result = 0
393
 
394
    Else
395
        oJSON.data("emsgSummary") = "EnableProject"
396
        oJSON.data("emsgDetails") = "Insufficient arguments"
397
    End If
398
 
399
End Sub
400
 
401
%>