Subversion Repositories DevTools

Rev

Rev 6123 | Rev 7395 | 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
 
6122 dpurdie 58
Else
59
    oJSON.data("error") = 1
60
    oJSON.data("emsgSummary") = "Unknown JSON Operation"
61
    oJSON.data("emsgDetails") = "The Requested JSON operation is not supported: " & parOpr
62
End If
63
 
64
' SQL error detection and reporting
65
If objEH.LastOraFailed Then
66
    oJSON.data("error") = 1
67
    result = -1
68
 
69
    oJSON.data("emsgSummary") = objEH.MessageSummary
70
    oJSON.data("emsgDetails") = objEH.MessageDetails
71
    oJSON.data("SqlQry") = SqlQry
72
'
73
'   Detect program errors
74
ElseIf Err.number <> 0 Then
75
    result = -3
76
    oJSON.data("error") = 2
77
    oJSON.data("errnum") = Err.number
78
    oJSON.data("errtxt") = Err.description
79
    oJSON.data("errsrc") = Err.source
80
    oJSON.data("emsgSummary") = "Internal VBScript Error:" & Err.number &  ":" & Err.description
81
End If
82
On error goto 0
83
'Write single value
84
oJSON.data("result") = result
85
 
86
'function Sleep(seconds)
87
'    dim oshell, cmd
88
'    set oShell = CreateObject("Wscript.Shell")
89
'    cmd = "cmd.exe /c timeout " & seconds & " /nobreak"
90
'    oShell.Run cmd,0,1
91
'End function
92
'
93
'Sleep(2)
94
 
95
' DEBUG: A Hash of the user provided requests
96
<!--oJSON.data("QueryString") = Request.QueryString       -->
97
<!--                                                      -->
98
<!--Dim requestSet : Set requestSet = oJSON.Collection()  -->
99
<!--Set oJSON.data("Request") = requestSet                -->
100
<!--Dim variableName                                      -->
101
<!--for each variableName in Request.QueryString          -->
102
<!--    requestSet.add variableName, Request(variableName)-->
103
<!--next                                                  -->
104
<!--for each variableName in Request.Form                 -->
105
<!--    requestSet.add variableName, Request(variableName)-->
106
<!--next                                                  -->
107
 
108
 
109
'Return the object
110
Response.Write oJSON.JSONoutput()
111
Set oJSON = Nothing
112
Call Destroy_All_Objects
113
%>
114
<%
6370 dpurdie 115
Sub ReportError (sSummary, sDetails)
116
    oJSON.data("error") = 1
117
    oJSON.data("emsgSummary") = sSummary
118
    oJSON.data("emsgDetails") = sDetails
119
End Sub
6122 dpurdie 120
'-------------------------------------------------
121
' Function:    updateVersion
122
' Description: Update version information
123
'
124
Sub updateVersion
6370 dpurdie 125
    Dim buildType, changeType, pvId, rtagId, version, vExt, errMessage, modeType, packageName
4198 dpurdie 126
    ' 
127
    ' Ensure we have all the required parameters
128
    '
129
    buildType = QStrPar("buildType")
130
    changeType = QStrPar("changeType")
131
    pvId = QStrPar("pvId")
132
    rtagId = QStrPar("rtagId")
133
    version = QStrPar("Version")
134
    vExt = QStrPar("vExt")
6370 dpurdie 135
    modeType = QStrPar("Mode")
136
    packageName = QStrPar("packageName")
4198 dpurdie 137
 
138
    '
139
    ' If Manual then force change type to 'F'
140
    ' If Auto then ensure that the version number is of the correct form
141
    if buildType = "M" then 
142
        changeType = "F"
143
    end if
144
 
4203 dpurdie 145
    If changeType <> "F" Then
146
        version=vExt
147
    End If
148
 
4198 dpurdie 149
    '
150
    '   Get existing data
151
    '       Test for package existence
152
    '       Check for changes
153
    '
6370 dpurdie 154
    SqlQry = "SELECT p.pkg_name, pv.pkg_id, pv.pv_id, pv.pkg_version, pv.v_ext, pv.change_type, pv.build_type"&_
155
             " FROM package_versions pv, packages p"&_
156
             " WHERE pv.pv_id = :NNpv_id" &_
157
             " AND p.pkg_id = pv.pkg_id"
4198 dpurdie 158
    OraDatabase.Parameters.Add "NNpv_id", pvId, ORAPARM_INPUT, ORATYPE_NUMBER
159
 
160
	objEH.ErrorRedirect = FALSE
161
    objEH.TryORA ( OraSession )
162
    On Error Resume Next
163
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
164
    objEH.CatchORA ( OraSession )
165
    errMessage = OraDatabase.Parameters("errMessage").Value
166
    OraDatabase.Parameters.Remove "NNpv_id"
167
    On Error GoTo 0
168
 
169
    If NOT objEH.LastOraFailed Then
4203 dpurdie 170
        Dim changed
4198 dpurdie 171
        changed = 0
172
 
173
        If ((rsQry.BOF) OR (rsQry.EOF)) Then
174
            oJSON.data("emsgDetails") = "Package not found"
175
            oJSON.data("error") = 1
176
        End If
177
 
178
        ' Detect changes
179
        '   version can only be tested if a Manually Versioned
180
        '
4203 dpurdie 181
        If changeType = "F" AND rsQry("pkg_version") <> version Then changed = 1
182
        If rsQry("build_type")  <> buildType Then changed = changed + 2
4198 dpurdie 183
        If rsQry("v_ext")       <> vExt Then changed = changed + 4
4203 dpurdie 184
        If rsQry("change_type") <> changeType Then changed = changed + 8
4198 dpurdie 185
 
186
        If changed Then
187
            '
188
            '   Setup for the database access
189
            OraDatabase.Parameters.Add "RTAG_ID", rtagId, ORAPARM_INPUT, ORATYPE_NUMBER
190
            OraDatabase.Parameters.Add "NNpv_id", pvId, ORAPARM_INPUT, ORATYPE_NUMBER
191
            OraDatabase.Parameters.Add "SSpkg_version",  version,      ORAPARM_INPUT, ORATYPE_VARCHAR2
192
            OraDatabase.Parameters.Add "BUILD_TYPE", buildType, ORAPARM_INPUT, ORATYPE_CHAR
4203 dpurdie 193
            OraDatabase.Parameters.Add "CHANGE_TYPE", changeType, ORAPARM_INPUT, ORATYPE_CHAR
4198 dpurdie 194
            OraDatabase.Parameters.Add "NNuser_id", objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBER
195
            OraDatabase.Parameters.Add "errMessage", 0, ORAPARM_OUTPUT, ORATYPE_VARCHAR2
196
 
4203 dpurdie 197
            SqlQry = "BEGIN Rename_Package_Version (:NNpv_id,:SSpkg_version,:BUILD_TYPE,:CHANGE_TYPE,:NNuser_id,:errMessage ); END;"
4198 dpurdie 198
            objEH.ErrorRedirect = FALSE
199
            objEH.TryORA ( OraSession )
200
            On Error Resume Next
201
            OraDatabase.ExecuteSQL SqlQry
202
            objEH.CatchORA ( OraSession )
203
            errMessage = OraDatabase.Parameters("errMessage").Value
204
            On Error GoTo 0
205
 
206
            OraDatabase.Parameters.Remove "RTAG_ID"
207
            OraDatabase.Parameters.Remove "NNpv_id"
208
            OraDatabase.Parameters.Remove "SSpkg_version"
209
            OraDatabase.Parameters.Remove "NNuser_id"
210
            OraDatabase.Parameters.Remove "errMessage"
211
            OraDatabase.Parameters.Remove "BUILD_TYPE"
4203 dpurdie 212
            OraDatabase.Parameters.Remove "CHANGE_TYPE"
4198 dpurdie 213
            result = 0
214
        End If
215
 
6370 dpurdie 216
        If modeType = 1 Then
217
            '   Rename the package - possibly
218
            If rsQry("pkg_name") <> packageName Then
219
                changed = changed + 16
220
                Dim rsQry1, count
221
 
222
                OraDatabase.Parameters.Add "PKG_ID", rsQry("pkg_id"), ORAPARM_INPUT, ORATYPE_NUMBER
223
                OraDatabase.Parameters.Add "PKG_NAME", packageName, ORAPARM_INPUT, ORATYPE_VARCHAR2
224
 
225
                SqlQry = "select count(*) as count from package_versions where pkg_id = :PKG_ID"
226
            	objEH.ErrorRedirect = FALSE
227
                objEH.TryORA ( OraSession )
228
                On Error Resume Next
229
                Set rsQry1 = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
230
                objEH.CatchORA ( OraSession )
231
                errMessage = OraDatabase.Parameters("errMessage").Value
232
                On Error GoTo 0
233
 
234
                If NOT objEH.LastOraFailed Then
235
 
236
                    If ((NOT rsQry1.BOF) AND (NOT rsQry1.EOF)) Then
237
                      count = rsQry1.Fields("count")
238
                    End If
239
                    rsQry1.Close
240
 
241
                    If count = 1 Then
242
                        SqlQry = "update packages set pkg_name = :PKG_NAME where pkg_id = :PKG_ID"
243
                    	objEH.ErrorRedirect = FALSE
244
                        objEH.TryORA ( OraSession )
245
                        On Error Resume Next
246
                        OraDatabase.ExecuteSQL SqlQry
247
                        objEH.CatchORA ( OraSession )
248
                        errMessage = OraDatabase.Parameters("errMessage").Value
249
                        On Error GoTo 0
250
 
251
                        If NOT objEH.LastOraFailed Then
252
                            result = 0
253
                        End If
254
                    Else
255
                        ReportError "Package name has been used","The Package name cannot be renamed as it is in use by multiple versions"
256
                    End If
257
                End If
258
 
259
                OraDatabase.Parameters.Remove "PKG_ID"
260
                OraDatabase.Parameters.Remove "PKG_NAME"
261
                rsQry1.Close
262
                Set rsQry1 = Nothing
263
            End If
264
        End If
265
 
266
        ' Report - no changes
267
        If changed = 0 Then
268
            ReportError "No change detected", "No changes detected"
269
        End If
270
 
4198 dpurdie 271
    rsQry.Close
272
    Set rsQry = Nothing
273
    End If
6122 dpurdie 274
End Sub
275
'-------------------------------------------------
276
' Function:    setDeployable
277
' Description: Set the state of the is_deployable flag
278
'              Request Parameters
279
'                   pv_id
280
'                   deployment_state
4198 dpurdie 281
'
6122 dpurdie 282
Sub setDeployable
283
    OraDatabase.Parameters.Add "PV_ID",     QStrPar("pv_id"), ORAPARM_INPUT, ORATYPE_NUMBER
284
    OraDatabase.Parameters.Add "DEPLOYABLE_STATE",  QStrPar("deployment_state"), ORAPARM_INPUT, ORATYPE_CHAR
4198 dpurdie 285
 
6122 dpurdie 286
        '   Set/Reset IS_DEPLOYABLE flag
287
        SqlQry = _
288
            "UPDATE PACKAGE_VERSIONS " &_
289
            "  SET IS_DEPLOYABLE = DECODE(:DEPLOYABLE_STATE, 'Y', 'Y', NULL)" &_
290
            "  WHERE PV_ID =  :PV_ID"
291
        objEH.ErrorRedirect = FALSE
292
        objEH.TryORA ( OraSession )
293
        On Error Resume Next
294
        OraDatabase.ExecuteSQL SqlQry
295
        objEH.CatchORA ( OraSession )
296
        On Error GoTo 0
297
        result = 0
4198 dpurdie 298
 
6122 dpurdie 299
    OraDatabase.Parameters.Remove "PV_ID"
300
    OraDatabase.Parameters.Remove "DEPLOYABLE_STATE"
4198 dpurdie 301
 
6122 dpurdie 302
End Sub
4198 dpurdie 303
 
6123 dpurdie 304
'-------------------------------------------------
305
' Function:    clearAllDeployable
306
' Description: Clear the is_deployable flag on all packages in the Release
307
'              Request Parameters
308
'                   rtag_id
309
'
310
Sub clearAllDeployable
311
    OraDatabase.Parameters.Add "RTAG_ID",     QStrPar("rtag_id"), ORAPARM_INPUT, ORATYPE_NUMBER
312
 
313
        '   Reset IS_DEPLOYABLE flag
314
        SqlQry = _
315
            "update package_versions pv " &_
316
            " set pv.IS_DEPLOYABLE = null" &_
317
            " Where pv.pv_id in ( SELECT pv.pv_id" &_
318
            " FROM package_versions pv," &_
319
            "      RELEASE_CONTENT rc" &_
320
            " WHERE rc.rtag_id = :RTAG_ID" &_
321
            "   AND rc.pv_id     = pv.pv_id" &_
322
            "   AND pv.IS_DEPLOYABLE is not null )"
323
 
324
        objEH.ErrorRedirect = FALSE
325
        objEH.TryORA ( OraSession )
326
        On Error Resume Next
327
        OraDatabase.ExecuteSQL SqlQry
328
        objEH.CatchORA ( OraSession )
329
        On Error GoTo 0
330
        result = 0
331
 
332
    OraDatabase.Parameters.Remove "RTAG_ID"
333
 
334
End Sub
335
 
4198 dpurdie 336
%>