Subversion Repositories DevTools

Rev

Rev 6122 | Rev 6370 | 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
<%
115
'-------------------------------------------------
116
' Function:    updateVersion
117
' Description: Update version information
118
'
119
Sub updateVersion
4198 dpurdie 120
    Dim buildType, changeType, pvId, rtagId, version, vExt, errMessage
121
    ' 
122
    ' Ensure we have all the required parameters
123
    '
124
    buildType = QStrPar("buildType")
125
    changeType = QStrPar("changeType")
126
    pvId = QStrPar("pvId")
127
    rtagId = QStrPar("rtagId")
128
    version = QStrPar("Version")
129
    vExt = QStrPar("vExt")
130
 
131
    '
132
    ' If Manual then force change type to 'F'
133
    ' If Auto then ensure that the version number is of the correct form
134
    if buildType = "M" then 
135
        changeType = "F"
136
    end if
137
 
4203 dpurdie 138
    If changeType <> "F" Then
139
        version=vExt
140
    End If
141
 
4198 dpurdie 142
    '
143
    '   Get existing data
144
    '       Test for package existence
145
    '       Check for changes
146
    '
147
    SqlQry = "SELECT pv.pv_id, pv.pkg_version, pv.v_ext, pv.change_type, pv.build_type"&_
148
             " FROM package_versions pv"&_
149
             " WHERE pv.pv_id = :NNpv_id"
150
    OraDatabase.Parameters.Add "NNpv_id", pvId, ORAPARM_INPUT, ORATYPE_NUMBER
151
 
152
	objEH.ErrorRedirect = FALSE
153
    objEH.TryORA ( OraSession )
154
    On Error Resume Next
155
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
156
    objEH.CatchORA ( OraSession )
157
    errMessage = OraDatabase.Parameters("errMessage").Value
158
    OraDatabase.Parameters.Remove "NNpv_id"
159
    On Error GoTo 0
160
 
161
    If NOT objEH.LastOraFailed Then
4203 dpurdie 162
        Dim changed
4198 dpurdie 163
        changed = 0
164
 
165
        If ((rsQry.BOF) OR (rsQry.EOF)) Then
166
            oJSON.data("emsgDetails") = "Package not found"
167
            oJSON.data("error") = 1
168
        End If
169
 
170
        ' Detect changes
171
        '   version can only be tested if a Manually Versioned
172
        '
4203 dpurdie 173
        If changeType = "F" AND rsQry("pkg_version") <> version Then changed = 1
174
        If rsQry("build_type")  <> buildType Then changed = changed + 2
4198 dpurdie 175
        If rsQry("v_ext")       <> vExt Then changed = changed + 4
4203 dpurdie 176
        If rsQry("change_type") <> changeType Then changed = changed + 8
4198 dpurdie 177
 
178
        If changed Then
179
            '
180
            '   Setup for the database access
181
            OraDatabase.Parameters.Add "RTAG_ID", rtagId, ORAPARM_INPUT, ORATYPE_NUMBER
182
            OraDatabase.Parameters.Add "NNpv_id", pvId, ORAPARM_INPUT, ORATYPE_NUMBER
183
            OraDatabase.Parameters.Add "SSpkg_version",  version,      ORAPARM_INPUT, ORATYPE_VARCHAR2
184
            OraDatabase.Parameters.Add "BUILD_TYPE", buildType, ORAPARM_INPUT, ORATYPE_CHAR
4203 dpurdie 185
            OraDatabase.Parameters.Add "CHANGE_TYPE", changeType, ORAPARM_INPUT, ORATYPE_CHAR
4198 dpurdie 186
            OraDatabase.Parameters.Add "NNuser_id", objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBER
187
            OraDatabase.Parameters.Add "errMessage", 0, ORAPARM_OUTPUT, ORATYPE_VARCHAR2
188
 
4203 dpurdie 189
            SqlQry = "BEGIN Rename_Package_Version (:NNpv_id,:SSpkg_version,:BUILD_TYPE,:CHANGE_TYPE,:NNuser_id,:errMessage ); END;"
4198 dpurdie 190
            objEH.ErrorRedirect = FALSE
191
            objEH.TryORA ( OraSession )
192
            On Error Resume Next
193
            OraDatabase.ExecuteSQL SqlQry
194
            objEH.CatchORA ( OraSession )
195
            errMessage = OraDatabase.Parameters("errMessage").Value
196
            On Error GoTo 0
197
 
198
            OraDatabase.Parameters.Remove "RTAG_ID"
199
            OraDatabase.Parameters.Remove "NNpv_id"
200
            OraDatabase.Parameters.Remove "SSpkg_version"
201
            OraDatabase.Parameters.Remove "NNuser_id"
202
            OraDatabase.Parameters.Remove "errMessage"
203
            OraDatabase.Parameters.Remove "BUILD_TYPE"
4203 dpurdie 204
            OraDatabase.Parameters.Remove "CHANGE_TYPE"
4198 dpurdie 205
            result = 0
206
        End If
207
 
208
    rsQry.Close
209
    Set rsQry = Nothing
210
    End If
6122 dpurdie 211
End Sub
212
'-------------------------------------------------
213
' Function:    setDeployable
214
' Description: Set the state of the is_deployable flag
215
'              Request Parameters
216
'                   pv_id
217
'                   deployment_state
4198 dpurdie 218
'
6122 dpurdie 219
Sub setDeployable
220
    OraDatabase.Parameters.Add "PV_ID",     QStrPar("pv_id"), ORAPARM_INPUT, ORATYPE_NUMBER
221
    OraDatabase.Parameters.Add "DEPLOYABLE_STATE",  QStrPar("deployment_state"), ORAPARM_INPUT, ORATYPE_CHAR
4198 dpurdie 222
 
6122 dpurdie 223
        '   Set/Reset IS_DEPLOYABLE flag
224
        SqlQry = _
225
            "UPDATE PACKAGE_VERSIONS " &_
226
            "  SET IS_DEPLOYABLE = DECODE(:DEPLOYABLE_STATE, 'Y', 'Y', NULL)" &_
227
            "  WHERE PV_ID =  :PV_ID"
228
        objEH.ErrorRedirect = FALSE
229
        objEH.TryORA ( OraSession )
230
        On Error Resume Next
231
        OraDatabase.ExecuteSQL SqlQry
232
        objEH.CatchORA ( OraSession )
233
        On Error GoTo 0
234
        result = 0
4198 dpurdie 235
 
6122 dpurdie 236
    OraDatabase.Parameters.Remove "PV_ID"
237
    OraDatabase.Parameters.Remove "DEPLOYABLE_STATE"
4198 dpurdie 238
 
6122 dpurdie 239
End Sub
4198 dpurdie 240
 
6123 dpurdie 241
'-------------------------------------------------
242
' Function:    clearAllDeployable
243
' Description: Clear the is_deployable flag on all packages in the Release
244
'              Request Parameters
245
'                   rtag_id
246
'
247
Sub clearAllDeployable
248
    OraDatabase.Parameters.Add "RTAG_ID",     QStrPar("rtag_id"), ORAPARM_INPUT, ORATYPE_NUMBER
249
 
250
        '   Reset IS_DEPLOYABLE flag
251
        SqlQry = _
252
            "update package_versions pv " &_
253
            " set pv.IS_DEPLOYABLE = null" &_
254
            " Where pv.pv_id in ( SELECT pv.pv_id" &_
255
            " FROM package_versions pv," &_
256
            "      RELEASE_CONTENT rc" &_
257
            " WHERE rc.rtag_id = :RTAG_ID" &_
258
            "   AND rc.pv_id     = pv.pv_id" &_
259
            "   AND pv.IS_DEPLOYABLE is not null )"
260
 
261
        objEH.ErrorRedirect = FALSE
262
        objEH.TryORA ( OraSession )
263
        On Error Resume Next
264
        OraDatabase.ExecuteSQL SqlQry
265
        objEH.CatchORA ( OraSession )
266
        On Error GoTo 0
267
        result = 0
268
 
269
    OraDatabase.Parameters.Remove "RTAG_ID"
270
 
271
End Sub
272
 
4198 dpurdie 273
%>