Subversion Repositories DevTools

Rev

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

Rev Author Line No. Line
6952 dpurdie 1
<%@LANGUAGE="VBSCRIPT"%>
2
<%
3
'=====================================================
4
'   rep_new_versions_json.asp
5
'   Ajax support for various operations
6
'       getData
7
'
8
'=====================================================
9
%>
10
<%
11
Option explicit
12
' Essential to get UTF through all the hoops. ie: VÄSTTRAFIK (VTK)
13
Response.ContentType = "text/html"
14
Response.AddHeader "Content-Type", "text/html;charset=UTF-8"
15
Response.CodePage = 65001
16
Response.CharSet = "UTF-8"
17
%>
18
<!--#include file="common/conf.asp"-->
19
<!--#include file="common/globals.asp"-->
20
<!--#include file="common/qstr.asp"-->
21
<!--#include file="common/common_subs.asp"-->
22
<!--#include file="_access_control_general.asp"-->
23
<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="class/classaspJSON.vbs"></SCRIPT> 
24
<%
25
'------------ Variable Definition -------------
26
Dim parOpr, parRtagId
27
Dim result
28
Dim SqlQry
29
Dim rsQry
30
 
31
parOpr = QStrPar("action")
32
parRtagId = QStrPar("rtag_id")
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
'   
43
'   Perform the body of the operations within a Sub and use
44
'   On Error Resule Next to catch errors that accur in the code
45
'
46
On Error Resume Next
47
If (parOpr = "getData") Then
48
    getData
6953 dpurdie 49
ElseIf (parOpr = "mergeVersion") Then
50
    mergeVersion
6971 dpurdie 51
ElseIf (parOpr = "getPackageInfo") Then
52
    getPackageInfo
6952 dpurdie 53
 
54
Else
55
    oJSON.data("error") = 1
56
    oJSON.data("emsgSummary") = "Unknown JSON Operation"
57
    oJSON.data("emsgDetails") = "The Requested JSON operation is not supported: " & parOpr
58
End If
59
 
60
 
61
' SQL error detection and reporting
62
If objEH.LastOraFailed Then
63
    oJSON.data("error") = 1
64
    result = -1
65
 
66
    oJSON.data("emsgSummary") = objEH.MessageSummary
67
    oJSON.data("emsgDetails") = objEH.MessageDetails
68
    oJSON.data("SqlQry") = SqlQry
69
'
70
'   Detect program errors
71
ElseIf Err.number <> 0 Then
72
    result = -3
73
    oJSON.data("error") = 2
74
    oJSON.data("errnum") = Err.number
75
    oJSON.data("errtxt") = Err.description
76
    oJSON.data("errsrc") = Err.source
77
    oJSON.data("emsgSummary") = "Internal VBScript Error:" & Err.number &  ":" & Err.description
78
End If
79
On error goto 0
80
'Write single value
81
oJSON.data("result") = result
82
 
83
'function Sleep(seconds)
84
'    dim oshell, cmd
85
'    set oShell = CreateObject("Wscript.Shell")
86
'    cmd = "cmd.exe /c timeout " & seconds & " /nobreak"
87
'    oShell.Run cmd,0,1
88
'End function
89
'
90
'Sleep(2)
91
 
92
 
93
' DEBUG: A Hash of the user provided requests
94
<!--oJSON.data("QueryString") = Request.QueryString       -->
95
<!--                                                      -->
96
<!--Dim requestSet : Set requestSet = oJSON.Collection()  -->
97
<!--Set oJSON.data("Request") = requestSet                -->
98
<!--Dim variableName                                      -->
99
<!--for each variableName in Request.QueryString          -->
100
<!--    requestSet.add variableName, Request(variableName)-->
101
<!--next                                                  -->
102
<!--for each variableName in Request.Form                 -->
103
<!--    requestSet.add variableName, Request(variableName)-->
104
<!--next                                                  -->
105
 
106
'Return the object
107
Response.Write oJSON.JSONoutput()
108
Set oJSON = Nothing
109
Call Destroy_All_Objects
110
%>
111
<%
112
'-------------------------------------------------
6953 dpurdie 113
' Function:    mergeVersion
114
' Description: Merge the selected version into the Release
115
'              rtag_id - The release to process
116
'              pv_id - Current PVID
117
'              npv_id - New PVID
118
'              mode - A (Add), R (Remove)
119
'
120
Sub mergeVersion
121
    Dim OraParameter
122
    Dim mode : mode =  QStrPar("mode")
123
 
6971 dpurdie 124
    If NOT releaseIsMergable(releaseInfoHash("official")) Then
125
        result = -4
126
        If NOT objAccessControl.UserLogedIn Then
127
            oJSON.data("emsgSummary") = "User not logged in"
128
        Else
129
            oJSON.data("emsgSummary") = "Access not allowed"
130
        End If
131
        Exit Sub
132
    End If
133
 
6953 dpurdie 134
    OraDatabase.Parameters.Add "RTAG_ID", parRtagId, ORAPARM_INPUT, ORATYPE_NUMBER
135
    OraDatabase.Parameters.Add "NPV_ID",   QStrPar("npv_id"), ORAPARM_INPUT, ORATYPE_NUMBER
136
    OraDatabase.Parameters.Add "PV_ID",   QStrPar("pv_id"), ORAPARM_INPUT, ORATYPE_NUMBER
137
    OraDatabase.Parameters.Add "VIEW_ID",  NULL, ORAPARM_BOTH, ORATYPE_NUMBER
138
    OraDatabase.Parameters.Add "USER_ID",  objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBER
139
    OraDatabase.Parameters.Add "OPERATION",NULL, ORAPARM_INPUT, ORATYPE_CHAR
140
    Set OraParameter = OraDatabase.Parameters
141
 
142
    On Error Resume Next
143
    objEH.TryORA ( OraSession )
144
 
145
    If mode = "A" Then
146
        OraParameter("OPERATION").Value = "A"
147
        OraDatabase.ExecuteSQL _
148
        "BEGIN  "&_
149
        "  :VIEW_ID := PK_RELEASE.GET_PACKAGE_VIEW ( :PV_ID, :RTAG_ID ); "&_
150
        "  PK_PLANNED.MERGE_PACKAGE ( :NPV_ID, :VIEW_ID, :RTAG_ID, :USER_ID, :OPERATION );  "&_
151
        "END;"
152
 
153
    ElseIf mode = "R" Then
154
        OraDatabase.ExecuteSQL "BEGIN PK_ENVIRONMENT.MAKE_REJECT ( :NPV_ID, :RTAG_ID, :USER_ID ); END; "
155
 
156
    Else
157
        result = -1
158
        oJSON.data("emsgSummary") = "Internal: mergeVersion. Unknown mode"
159
        Exit Sub
160
    End If
161
 
162
    objEH.CatchORA ( OraSession )
163
    On Error GoTo 0
164
 
165
    If Err.Number = 0 Then
166
        result = 0
167
    End If
168
 
169
	OraDatabase.Parameters.Remove "OPERATION"
170
	OraDatabase.Parameters.Remove "USER_ID"
171
	OraDatabase.Parameters.Remove "VIEW_ID"
172
	OraDatabase.Parameters.Remove "PV_ID"
173
	OraDatabase.Parameters.Remove "NPV_ID"
174
	OraDatabase.Parameters.Remove "RTAG_ID"
175
 
176
End Sub
177
'-------------------------------------------------
6952 dpurdie 178
' Function:    getData
179
' Description: Get the data for the page - as jason
180
'              Not used directly by datatables
181
'              The format is special. Its not a direct result of the sql query
182
'              Group multiple version-information as an array
183
'              ie: [ a,b,c,d,e,f, [[ a,b,c],[a,b,c]]
184
'
185
Sub getData
186
 
187
    OraDatabase.Parameters.Add "RTAG_ID", parRtagId, ORAPARM_INPUT, ORATYPE_NUMBER
188
 
189
    SqlQry = GetQuery("rep_new_versions.sql")
190
    objEH.ErrorRedirect = FALSE
191
    objEH.TryORA ( OraSession )
192
    On Error Resume Next
193
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
194
    objEH.CatchORA ( OraSession )
195
    On Error GoTo 0
196
 
197
	OraDatabase.Parameters.Remove "RTAG_ID"
198
 
199
    ' Things for oJSON object
200
    '   Set someVar  = oJSON.Collection()       (Will create an empty collection)
201
    '   obj(field) = data                       (Will create a hash entry)
202
    '   newObj = oJSON.AddToCollection( obj )   (Will create an array)
203
 
204
    Dim lastPvid : lastPvid = 0
6970 dpurdie 205
    Dim pvid, lastItem
206
    Dim childCount, pType
6952 dpurdie 207
    Set oJSON.data("aaData") = oJSON.Collection()
6970 dpurdie 208
    lastItem = null
6952 dpurdie 209
 
210
    While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
211
        pvid = rsQry("PV_ID") 
212
 
6970 dpurdie 213
        If lastPvid <> pvid Then
214
            childCount = 0
215
            pType = 0
216
        Else 
217
            childCount = childCount + 1
218
            pType = 2
219
        End If
6952 dpurdie 220
 
6970 dpurdie 221
        Set newitem = oJSON.AddToCollection(oJSON.data("aaData"))
222
        newitem(0)= rsQry("PV_ID") 
223
        newitem(1)= rsQry("VIEW_NAME")
224
        newitem(2)= rsQry("PKG_ID")
225
        newitem(3)= rsQry("PKG_NAME")
226
        newitem(4)= rsQry("PKG_VERSION") 
227
        newitem(5)= rsQry("V_EXT")
228
        newitem(6)= rsQry("CREATED_STAMP") 
229
        newitem(7)= rsQry("NEW_PV_ID")
230
        newitem(8)= rsQry("NEW_PKG_VERSION")
231
        newitem(9)= rsQry("NEW_CREATED_STAMP")
232
        newitem(10)= pType
233
        newitem(11)= rsQry("NEW_AGE")
234
        newitem(12)= rsQry("ETYPE")
235
 
236
        ' Is the last item a parent (Has children)
237
        '   entry(10)
238
        '       0 - Is a parent without children
239
        '       1 - Is a parent with children
240
        '       2 - Is a child
241
        '
242
        If childCount = 1 AND NOT isNULL(lastItem)  Then
243
            lastItem(10)= 1
6952 dpurdie 244
        End If
245
 
6970 dpurdie 246
        ' If this is an entry of ETYPE of A, then we skip the next entry.
247
        ' It will be repeat
248
        If rsQry("ETYPE") = "A" Then
249
            rsQry.MoveNext
250
        End If
251
 
252
 
253
       lastPvid = pvid
254
       Set lastItem = newitem
6952 dpurdie 255
       rsQry.MoveNext
256
    Wend
257
 
258
End Sub
259
 
6971 dpurdie 260
'-------------------------------------------------
261
' Function:    getPackageInfo
262
' Description: Get basic Package info
263
'              Requires pvid
264
'
265
' Returns:      pkgName
266
'               pkgVersion
267
'              
268
'
269
Sub getPackageInfo
270
    Dim entry
271
    OraDatabase.Parameters.Add "PV_ID", QStrPar("pv_id"), ORAPARM_INPUT, ORATYPE_NUMBER
272
 
273
    SqlQry = "select p.pkg_name, pv.pkg_version from  packages p, package_versions pv where pv.pv_id = :PV_ID and pv.pkg_id = p.pkg_id"
274
    objEH.ErrorRedirect = FALSE
275
    objEH.TryORA ( OraSession )
276
    On Error Resume Next
277
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
278
    objEH.CatchORA ( OraSession )
279
    On Error GoTo 0
280
    If Err.Number = 0 Then
281
        result = 0
282
    End If
283
 
284
    Set entry  = oJSON.Collection()
285
    Set oJSON.data("aaData") = entry
286
    entry("pkg_name")= rsQry("PKG_NAME") 
287
    entry("pkg_version")= rsQry("PKG_VERSION")
288
 
289
	OraDatabase.Parameters.Remove "PV_ID"
290
End Sub
6952 dpurdie 291
%>