Subversion Repositories DevTools

Rev

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

Rev Author Line No. Line
4198 dpurdie 1
<%@LANGUAGE="VBSCRIPT"%>
2
<%
3
'=====================================================
6122 dpurdie 4
'       Update Package Version
5
'           _json_updateVersion.asp
4198 dpurdie 6
'       Designed to be called via AJAX and to return
7
'       JSON formatted data to dynamic page
6122 dpurdie 8
'   Ajax support for operaions on a package-version:
9
'       
10
'       updateVer
11
'       setDeployable
12
'
4198 dpurdie 13
'=====================================================
14
%>
15
<%
16
Option explicit
17
' Good idea to set when using redirect
18
Response.Expires = 0   ' always load the page, dont store
19
%>
20
<!--#include file="common/conf.asp"-->
21
<!--#include file="common/globals.asp"-->
22
<!--#include file="common/qstr.asp"-->
23
<!--#include file="common/common_subs.asp"-->
24
<!--#include file="common/common_dbedit.asp"-->
4254 dpurdie 25
<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="class/classaspJSON.vbs"></SCRIPT> 
4198 dpurdie 26
<%
27
'------------ Variable Definition -------------
28
Dim parOpr
29
Dim result
30
Dim SqlQry
31
Dim rsQry
32
 
33
parOpr = QStrPar("Opr")
34
result = -1
35
 
36
' Init the output JSON class
37
'   Operations can add data
38
'   Default data will be added at the end
39
Dim oJSON
40
Set oJSON = New aspJSON
41
Dim newitem
42
 
4199 dpurdie 43
If NOT objAccessControl.UserLogedIn Then
44
    oJSON.data("error") = 1
4198 dpurdie 45
 
4199 dpurdie 46
    oJSON.data("emsgSummary") = "User no longer logged in"
47
    oJSON.data("emsgDetails") = oJSON.data("emsgSummary")
48
 
49
ElseIf (parOpr = "updateVer") Then
6122 dpurdie 50
    updateVersion
4199 dpurdie 51
 
6122 dpurdie 52
ElseIf (parOpr = "setDeployable") Then
53
    setDeployable
54
 
6123 dpurdie 55
ElseIf (parOpr = "clearAllDeployable") Then
56
    clearAllDeployable
57
 
7468 dpurdie 58
ElseIf (parOpr = "setInManifest") Then
59
    setInManifest
7395 dpurdie 60
 
7468 dpurdie 61
ElseIf (parOpr = "clearAllInManifest") Then
62
	clearAllInManifest
7395 dpurdie 63
 
6122 dpurdie 64
Else
65
    oJSON.data("error") = 1
66
    oJSON.data("emsgSummary") = "Unknown JSON Operation"
67
    oJSON.data("emsgDetails") = "The Requested JSON operation is not supported: " & parOpr
68
End If
69
 
70
' SQL error detection and reporting
71
If objEH.LastOraFailed Then
72
    oJSON.data("error") = 1
73
    result = -1
74
 
75
    oJSON.data("emsgSummary") = objEH.MessageSummary
76
    oJSON.data("emsgDetails") = objEH.MessageDetails
77
    oJSON.data("SqlQry") = SqlQry
78
'
79
'   Detect program errors
80
ElseIf Err.number <> 0 Then
81
    result = -3
82
    oJSON.data("error") = 2
83
    oJSON.data("errnum") = Err.number
84
    oJSON.data("errtxt") = Err.description
85
    oJSON.data("errsrc") = Err.source
86
    oJSON.data("emsgSummary") = "Internal VBScript Error:" & Err.number &  ":" & Err.description
87
End If
88
On error goto 0
89
'Write single value
90
oJSON.data("result") = result
91
 
92
'function Sleep(seconds)
93
'    dim oshell, cmd
94
'    set oShell = CreateObject("Wscript.Shell")
95
'    cmd = "cmd.exe /c timeout " & seconds & " /nobreak"
96
'    oShell.Run cmd,0,1
97
'End function
98
'
99
'Sleep(2)
100
 
101
' DEBUG: A Hash of the user provided requests
102
<!--oJSON.data("QueryString") = Request.QueryString       -->
103
<!--                                                      -->
104
<!--Dim requestSet : Set requestSet = oJSON.Collection()  -->
105
<!--Set oJSON.data("Request") = requestSet                -->
106
<!--Dim variableName                                      -->
107
<!--for each variableName in Request.QueryString          -->
108
<!--    requestSet.add variableName, Request(variableName)-->
109
<!--next                                                  -->
110
<!--for each variableName in Request.Form                 -->
111
<!--    requestSet.add variableName, Request(variableName)-->
112
<!--next                                                  -->
113
 
114
 
115
'Return the object
116
Response.Write oJSON.JSONoutput()
117
Set oJSON = Nothing
118
Call Destroy_All_Objects
119
%>
120
<%
6370 dpurdie 121
Sub ReportError (sSummary, sDetails)
122
    oJSON.data("error") = 1
123
    oJSON.data("emsgSummary") = sSummary
124
    oJSON.data("emsgDetails") = sDetails
125
End Sub
6122 dpurdie 126
'-------------------------------------------------
127
' Function:    updateVersion
128
' Description: Update version information
129
'
130
Sub updateVersion
6370 dpurdie 131
    Dim buildType, changeType, pvId, rtagId, version, vExt, errMessage, modeType, packageName
4198 dpurdie 132
    ' 
133
    ' Ensure we have all the required parameters
134
    '
135
    buildType = QStrPar("buildType")
136
    changeType = QStrPar("changeType")
137
    pvId = QStrPar("pvId")
138
    rtagId = QStrPar("rtagId")
139
    version = QStrPar("Version")
140
    vExt = QStrPar("vExt")
6370 dpurdie 141
    modeType = QStrPar("Mode")
142
    packageName = QStrPar("packageName")
4198 dpurdie 143
 
144
    '
145
    ' If Manual then force change type to 'F'
146
    ' If Auto then ensure that the version number is of the correct form
147
    if buildType = "M" then 
148
        changeType = "F"
149
    end if
150
 
4203 dpurdie 151
    If changeType <> "F" Then
152
        version=vExt
153
    End If
154
 
4198 dpurdie 155
    '
156
    '   Get existing data
157
    '       Test for package existence
158
    '       Check for changes
159
    '
6370 dpurdie 160
    SqlQry = "SELECT p.pkg_name, pv.pkg_id, pv.pv_id, pv.pkg_version, pv.v_ext, pv.change_type, pv.build_type"&_
161
             " FROM package_versions pv, packages p"&_
162
             " WHERE pv.pv_id = :NNpv_id" &_
163
             " AND p.pkg_id = pv.pkg_id"
4198 dpurdie 164
    OraDatabase.Parameters.Add "NNpv_id", pvId, ORAPARM_INPUT, ORATYPE_NUMBER
165
 
166
	objEH.ErrorRedirect = FALSE
167
    objEH.TryORA ( OraSession )
168
    On Error Resume Next
169
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
170
    objEH.CatchORA ( OraSession )
171
    errMessage = OraDatabase.Parameters("errMessage").Value
172
    OraDatabase.Parameters.Remove "NNpv_id"
173
    On Error GoTo 0
174
 
175
    If NOT objEH.LastOraFailed Then
4203 dpurdie 176
        Dim changed
4198 dpurdie 177
        changed = 0
178
 
179
        If ((rsQry.BOF) OR (rsQry.EOF)) Then
180
            oJSON.data("emsgDetails") = "Package not found"
181
            oJSON.data("error") = 1
182
        End If
183
 
184
        ' Detect changes
185
        '   version can only be tested if a Manually Versioned
186
        '
4203 dpurdie 187
        If changeType = "F" AND rsQry("pkg_version") <> version Then changed = 1
188
        If rsQry("build_type")  <> buildType Then changed = changed + 2
4198 dpurdie 189
        If rsQry("v_ext")       <> vExt Then changed = changed + 4
4203 dpurdie 190
        If rsQry("change_type") <> changeType Then changed = changed + 8
4198 dpurdie 191
 
192
        If changed Then
193
            '
194
            '   Setup for the database access
195
            OraDatabase.Parameters.Add "RTAG_ID", rtagId, ORAPARM_INPUT, ORATYPE_NUMBER
196
            OraDatabase.Parameters.Add "NNpv_id", pvId, ORAPARM_INPUT, ORATYPE_NUMBER
197
            OraDatabase.Parameters.Add "SSpkg_version",  version,      ORAPARM_INPUT, ORATYPE_VARCHAR2
198
            OraDatabase.Parameters.Add "BUILD_TYPE", buildType, ORAPARM_INPUT, ORATYPE_CHAR
4203 dpurdie 199
            OraDatabase.Parameters.Add "CHANGE_TYPE", changeType, ORAPARM_INPUT, ORATYPE_CHAR
4198 dpurdie 200
            OraDatabase.Parameters.Add "NNuser_id", objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBER
201
            OraDatabase.Parameters.Add "errMessage", 0, ORAPARM_OUTPUT, ORATYPE_VARCHAR2
202
 
4203 dpurdie 203
            SqlQry = "BEGIN Rename_Package_Version (:NNpv_id,:SSpkg_version,:BUILD_TYPE,:CHANGE_TYPE,:NNuser_id,:errMessage ); END;"
4198 dpurdie 204
            objEH.ErrorRedirect = FALSE
205
            objEH.TryORA ( OraSession )
206
            On Error Resume Next
207
            OraDatabase.ExecuteSQL SqlQry
208
            objEH.CatchORA ( OraSession )
209
            errMessage = OraDatabase.Parameters("errMessage").Value
210
            On Error GoTo 0
211
 
212
            OraDatabase.Parameters.Remove "RTAG_ID"
213
            OraDatabase.Parameters.Remove "NNpv_id"
214
            OraDatabase.Parameters.Remove "SSpkg_version"
215
            OraDatabase.Parameters.Remove "NNuser_id"
216
            OraDatabase.Parameters.Remove "errMessage"
217
            OraDatabase.Parameters.Remove "BUILD_TYPE"
4203 dpurdie 218
            OraDatabase.Parameters.Remove "CHANGE_TYPE"
4198 dpurdie 219
            result = 0
220
        End If
221
 
6370 dpurdie 222
        If modeType = 1 Then
223
            '   Rename the package - possibly
224
            If rsQry("pkg_name") <> packageName Then
225
                changed = changed + 16
226
                Dim rsQry1, count
227
 
228
                OraDatabase.Parameters.Add "PKG_ID", rsQry("pkg_id"), ORAPARM_INPUT, ORATYPE_NUMBER
229
                OraDatabase.Parameters.Add "PKG_NAME", packageName, ORAPARM_INPUT, ORATYPE_VARCHAR2
230
 
231
                SqlQry = "select count(*) as count from package_versions where pkg_id = :PKG_ID"
232
            	objEH.ErrorRedirect = FALSE
233
                objEH.TryORA ( OraSession )
234
                On Error Resume Next
235
                Set rsQry1 = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
236
                objEH.CatchORA ( OraSession )
237
                errMessage = OraDatabase.Parameters("errMessage").Value
238
                On Error GoTo 0
239
 
240
                If NOT objEH.LastOraFailed Then
241
 
242
                    If ((NOT rsQry1.BOF) AND (NOT rsQry1.EOF)) Then
243
                      count = rsQry1.Fields("count")
244
                    End If
245
                    rsQry1.Close
246
 
247
                    If count = 1 Then
248
                        SqlQry = "update packages set pkg_name = :PKG_NAME where pkg_id = :PKG_ID"
249
                    	objEH.ErrorRedirect = FALSE
250
                        objEH.TryORA ( OraSession )
251
                        On Error Resume Next
252
                        OraDatabase.ExecuteSQL SqlQry
253
                        objEH.CatchORA ( OraSession )
254
                        errMessage = OraDatabase.Parameters("errMessage").Value
255
                        On Error GoTo 0
256
 
257
                        If NOT objEH.LastOraFailed Then
258
                            result = 0
259
                        End If
260
                    Else
261
                        ReportError "Package name has been used","The Package name cannot be renamed as it is in use by multiple versions"
262
                    End If
263
                End If
264
 
265
                OraDatabase.Parameters.Remove "PKG_ID"
266
                OraDatabase.Parameters.Remove "PKG_NAME"
267
                rsQry1.Close
268
                Set rsQry1 = Nothing
269
            End If
270
        End If
271
 
272
        ' Report - no changes
273
        If changed = 0 Then
274
            ReportError "No change detected", "No changes detected"
275
        End If
276
 
4198 dpurdie 277
    rsQry.Close
278
    Set rsQry = Nothing
279
    End If
6122 dpurdie 280
End Sub
281
'-------------------------------------------------
282
' Function:    setDeployable
283
' Description: Set the state of the is_deployable flag
284
'              Request Parameters
285
'                   pv_id
286
'                   deployment_state
4198 dpurdie 287
'
6122 dpurdie 288
Sub setDeployable
289
    OraDatabase.Parameters.Add "PV_ID",     QStrPar("pv_id"), ORAPARM_INPUT, ORATYPE_NUMBER
290
    OraDatabase.Parameters.Add "DEPLOYABLE_STATE",  QStrPar("deployment_state"), ORAPARM_INPUT, ORATYPE_CHAR
4198 dpurdie 291
 
6122 dpurdie 292
        '   Set/Reset IS_DEPLOYABLE flag
293
        SqlQry = _
294
            "UPDATE PACKAGE_VERSIONS " &_
295
            "  SET IS_DEPLOYABLE = DECODE(:DEPLOYABLE_STATE, 'Y', 'Y', NULL)" &_
296
            "  WHERE PV_ID =  :PV_ID"
297
        objEH.ErrorRedirect = FALSE
298
        objEH.TryORA ( OraSession )
299
        On Error Resume Next
300
        OraDatabase.ExecuteSQL SqlQry
301
        objEH.CatchORA ( OraSession )
302
        On Error GoTo 0
303
        result = 0
4198 dpurdie 304
 
6122 dpurdie 305
    OraDatabase.Parameters.Remove "PV_ID"
306
    OraDatabase.Parameters.Remove "DEPLOYABLE_STATE"
4198 dpurdie 307
 
6122 dpurdie 308
End Sub
4198 dpurdie 309
 
6123 dpurdie 310
'-------------------------------------------------
311
' Function:    clearAllDeployable
312
' Description: Clear the is_deployable flag on all packages in the Release
313
'              Request Parameters
314
'                   rtag_id
315
'
316
Sub clearAllDeployable
317
    OraDatabase.Parameters.Add "RTAG_ID",     QStrPar("rtag_id"), ORAPARM_INPUT, ORATYPE_NUMBER
318
 
319
        '   Reset IS_DEPLOYABLE flag
320
        SqlQry = _
321
            "update package_versions pv " &_
322
            " set pv.IS_DEPLOYABLE = null" &_
323
            " Where pv.pv_id in ( SELECT pv.pv_id" &_
324
            " FROM package_versions pv," &_
325
            "      RELEASE_CONTENT rc" &_
326
            " WHERE rc.rtag_id = :RTAG_ID" &_
327
            "   AND rc.pv_id     = pv.pv_id" &_
328
            "   AND pv.IS_DEPLOYABLE is not null )"
329
 
330
        objEH.ErrorRedirect = FALSE
331
        objEH.TryORA ( OraSession )
332
        On Error Resume Next
333
        OraDatabase.ExecuteSQL SqlQry
334
        objEH.CatchORA ( OraSession )
335
        On Error GoTo 0
336
        result = 0
337
 
338
    OraDatabase.Parameters.Remove "RTAG_ID"
339
 
340
End Sub
341
 
7395 dpurdie 342
'-------------------------------------------------
7468 dpurdie 343
' Function:    setInManifest
344
' Description: Set the state of the InManifest flag
7395 dpurdie 345
'              Request Parameters
7468 dpurdie 346
'                   rtag_id
7395 dpurdie 347
'                   pv_id
7468 dpurdie 348
'                   mfState
7395 dpurdie 349
'
7468 dpurdie 350
Sub setInManifest
351
    OraDatabase.Parameters.Add "RTAG_ID",       QStrPar("rtag_id"), ORAPARM_INPUT, ORATYPE_NUMBER
352
    OraDatabase.Parameters.Add "PV_ID",         QStrPar("pv_id"), ORAPARM_INPUT, ORATYPE_NUMBER
353
    OraDatabase.Parameters.Add "MFSTATE",       QStrPar("mfState"), ORAPARM_INPUT, ORATYPE_CHAR
7395 dpurdie 354
 
355
        '   Set/Reset IS_DEPLOYABLE flag
356
        SqlQry = _
357
            "UPDATE RELEASE_CONTENT " &_
7468 dpurdie 358
            "  SET IN_MANIFEST = DECODE(:MFSTATE, 'Y', 'Y', NULL)" &_
7395 dpurdie 359
            "  WHERE PV_ID =  :PV_ID AND RTAG_ID = :RTAG_ID"
360
        objEH.ErrorRedirect = FALSE
361
        objEH.TryORA ( OraSession )
362
        On Error Resume Next
363
        OraDatabase.ExecuteSQL SqlQry
364
        objEH.CatchORA ( OraSession )
7417 dpurdie 365
 
366
        If NOT objEH.LastOraFailed Then
367
            objEH.TryORA ( OraSession )
368
            OraDatabase.ExecuteSQL ("BEGIN PK_RELEASE.SET_RELEASE_MODIFIED(:RTAG_ID); END; ")
369
            objEH.CatchORA ( OraSession )
7468 dpurdie 370
        End If
7417 dpurdie 371
 
7395 dpurdie 372
        On Error GoTo 0
373
        result = 0
374
 
375
    OraDatabase.Parameters.Remove "RTAG_ID"
376
    OraDatabase.Parameters.Remove "PV_ID"
7468 dpurdie 377
    OraDatabase.Parameters.Remove "MFSTATE"
7395 dpurdie 378
 
379
End Sub
380
 
381
'-------------------------------------------------
7468 dpurdie 382
' Function:    clearAllInManifest
383
' Description: Clear the InManifest flag on all packages in the Release
7395 dpurdie 384
'              Request Parameters
385
'                   rtag_id
386
'
7468 dpurdie 387
Sub clearAllInManifest
7395 dpurdie 388
    OraDatabase.Parameters.Add "RTAG_ID", QStrPar("rtag_id"), ORAPARM_INPUT, ORATYPE_NUMBER
389
 
7468 dpurdie 390
        '   Reset InManifest flag
7395 dpurdie 391
        SqlQry = _
392
            "update release_content rc " &_
7468 dpurdie 393
            " set rc.IN_MANIFEST = null" &_
7395 dpurdie 394
            " WHERE rc.rtag_id = :RTAG_ID" &_
7468 dpurdie 395
            "   AND rc.IN_MANIFEST is not null"
7395 dpurdie 396
 
397
        objEH.ErrorRedirect = FALSE
398
        objEH.TryORA ( OraSession )
399
        On Error Resume Next
400
        OraDatabase.ExecuteSQL SqlQry
401
        objEH.CatchORA ( OraSession )
7417 dpurdie 402
 
403
        If NOT objEH.LastOraFailed Then
404
            objEH.TryORA ( OraSession )
405
            OraDatabase.ExecuteSQL ("BEGIN PK_RELEASE.SET_RELEASE_MODIFIED(:RTAG_ID); END; ")
406
            objEH.CatchORA ( OraSession )
7468 dpurdie 407
        End If
7417 dpurdie 408
 
7395 dpurdie 409
        On Error GoTo 0
410
        result = 0
411
 
412
    OraDatabase.Parameters.Remove "RTAG_ID"
413
 
414
End Sub
415
 
4198 dpurdie 416
%>