Subversion Repositories DevTools

Rev

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

Rev Author Line No. Line
119 ghuddy 1
<%@LANGUAGE="VBSCRIPT"%>
2
<%
3
'=====================================================
123 ghuddy 4
'                  NEW VERSION
119 ghuddy 5
'               --- PROCESS FORM ---
6
'=====================================================
7
%>
8
<%
9
Option explicit
10
' Good idea to set when using redirect
123 ghuddy 11
Response.Expires = 0   ' always load the page, dont store
119 ghuddy 12
%>
13
 
14
<!--#include file="common/conf.asp"-->
15
<!--#include file="common/globals.asp"-->
16
<!--#include file="common/formating.asp"-->
17
<!--#include file="common/qstr.asp"-->
18
<!--#include file="common/common_subs.asp"-->
19
<!--#include file="common/common_dbedit.asp"-->
5169 dpurdie 20
<!--#include file="common/release_changed.asp"-->
119 ghuddy 21
<%
22
' Set rfile parameter. This is a return page after Login
23
Call objPMod.StoreParameter ( "rfile", "dependencies.asp" )
24
'------------ ACCESS CONTROL ------------------
25
%>
26
<!--#include file="_access_control_login.asp"-->
27
<!--#include file="_access_control_general.asp"-->
28
<!--#include file="_access_control_project.asp"-->
29
<%
30
'------------ Variable Definition -------------
31
Dim parOLDpv_id
32
Dim parFRnewver
33
Dim NEWpv_id
34
Dim parSetToPv_id
35
Dim parSync_rtags
36
Dim toTouch
3959 dpurdie 37
Dim parNewPackage
38
Dim parFRpkgName
39
Dim parChangeType
40
Dim parBase_view_id
41
Dim parPersonal_view_id
42
Dim parBuildType
5173 dpurdie 43
Dim bImode
3959 dpurdie 44
Dim newPkgPv_id
45
Dim errMessage
46
 
119 ghuddy 47
'------------ Constants Declaration -----------
48
'------------ Variable Init -------------------
49
parOLDpv_id = QStrPar("OLDpv_id")
50
parFRnewver = QStrPar("FRnewver")
51
parSetToPv_id = QStrPar("pv_id")
52
parSync_rtags = Request("sync_rtags")
151 ghuddy 53
 
3959 dpurdie 54
parNewPackage = Request("newPackage")
55
parFRpkgName = Request("FRpkgName")
56
parChangeType = Request("change_type")
57
parBase_view_id = Request("base_view_id")
58
parPersonal_view_id = Request("personal_view_id")
59
parBuildType = Request("build_type")
5173 dpurdie 60
bImode = (Request("iMode") = "pending")
3959 dpurdie 61
 
119 ghuddy 62
'----------------------------------------------
63
%>
64
<%
5169 dpurdie 65
'----------------------------------------------
66
'   Appears to be a 'Replace Version'
67
'   Args:   SSnewver            - New Version String (may be empty)
68
'           NNorig_pv_id        - original PVID
69
'           NNSetToPv_id        - New PVID
70
'           NNrtag_id           - Release Identifier
5173 dpurdie 71
'           bImode              - True: Insert into pending
5169 dpurdie 72
'           retNEWpv_id         - Return the PVID of the (replaced) package
73
'
74
 
5173 dpurdie 75
Sub New_Version ( SSnewver, NNorig_pv_id, NNSetToPv_id, NNrtag_id, bImode, retNEWpv_id )
5171 dpurdie 76
   Dim cAlterReleaseWhileRestrictive
4203 dpurdie 77
   Dim newPkgVersion
123 ghuddy 78
 
79
   On Error Resume Next
80
   objEH.ErrorRedirect = TRUE
81
 
4203 dpurdie 82
   ' Manually built package
83
   '    Force change type of 'Fixed'
84
   If parBuildType = "M" Then
85
      parChangeType = "F"
86
   End If
87
 
88
   ' If automatically assigned version number
89
   '    Reset the version string
90
   If parChangeType = "F" Then
91
      newPkgVersion = SSnewver
92
   Else
93
      newPkgVersion = Request("v_ext")
123 ghuddy 94
      SSnewver = ""
95
   End If
96
 
5061 dpurdie 97
   OraDatabase.Parameters.Add "ORIG_PV_ID",  NNorig_pv_id,  ORAPARM_INPUT, ORATYPE_NUMBER
4203 dpurdie 98
   OraDatabase.Parameters.Add "PKG_VERSION", newPkgVersion, ORAPARM_INPUT, ORATYPE_VARCHAR2
123 ghuddy 99
 
100
   ' Access Control - Allow release change while release is in restrictive mode
101
   cAlterReleaseWhileRestrictive = "N"
5061 dpurdie 102
   If canActionControlInProject("AlterReleaseContentsInRestrictiveMode") Then cAlterReleaseWhileRestrictive = "Y"
123 ghuddy 103
 
4203 dpurdie 104
   OraDatabase.Parameters.Add "BUILD_TYPE",                parBuildType,                  ORAPARM_INPUT, ORATYPE_CHAR
5061 dpurdie 105
   OraDatabase.Parameters.Add "CHANGE_TYPE",               parChangeType,                 ORAPARM_INPUT, ORATYPE_CHAR
123 ghuddy 106
   OraDatabase.Parameters.Add "ALTER_RELEASE",             cAlterReleaseWhileRestrictive, ORAPARM_INPUT, ORATYPE_CHAR
107
   OraDatabase.Parameters.Add "SET_TO_PV_ID",              NNSetToPv_id,                  ORAPARM_INPUT, ORATYPE_NUMBER
108
   OraDatabase.Parameters.Add "RTAG_ID",                   NNrtag_id,                     ORAPARM_INPUT, ORATYPE_NUMBER
109
   OraDatabase.Parameters.Add "USER_ID",                   objAccessControl.UserId,       ORAPARM_INPUT, ORATYPE_NUMBER
110
   OraDatabase.Parameters.Add "enumISSUES_STATE_IMPORTED", enumISSUES_STATE_IMPORTED,     ORAPARM_INPUT, ORATYPE_NUMBER
111
   OraDatabase.Parameters.Add "RETPV_ID",                  0,                             ORAPARM_OUTPUT,ORATYPE_NUMBER
112
 
113
   objEH.TryORA ( OraSession )
114
 
5171 dpurdie 115
    ' Create a new version of the package (if it does not exist)
116
    ' Check that we can update the release
117
    ' Replace package in the release
118
    '
5173 dpurdie 119
    if bImode Then
120
        OraDatabase.ExecuteSQL _
121
        "BEGIN "&_
122
        " PK_PACKAGE.NEW_VERSION ( :ORIG_PV_ID, "&_
123
                               " :PKG_VERSION,"&_
124
                               " :BUILD_TYPE,"&_
125
                               " :CHANGE_TYPE,"&_
126
                               " :SET_TO_PV_ID,"&_
127
                               " :RTAG_ID,"&_
128
                               " :USER_ID,"&_
129
                               " :enumISSUES_STATE_IMPORTED,"&_
130
                               " :RETPV_ID ); "&_
131
        " PK_RELEASE.CAN_USER_WRITE_TO_RELEASE ( :RTAG_ID, :RETPV_ID, :ALTER_RELEASE ); "&_
132
        " PK_PLANNED.MERGE_PACKAGE (:RETPV_ID, PK_ENVIRONMENT.GET_VIEW_LOCATION (:ORIG_PV_ID, :RTAG_ID), :RTAG_ID, :USER_ID, 'A'); "&_
133
        "END;"
134
    Else
135
        OraDatabase.ExecuteSQL _
136
        "BEGIN "&_
137
        " PK_PACKAGE.NEW_VERSION ( :ORIG_PV_ID, "&_
138
                               " :PKG_VERSION,"&_
139
                               " :BUILD_TYPE,"&_
140
                               " :CHANGE_TYPE,"&_
141
                               " :SET_TO_PV_ID,"&_
142
                               " :RTAG_ID,"&_
143
                               " :USER_ID,"&_
144
                               " :enumISSUES_STATE_IMPORTED,"&_
145
                               " :RETPV_ID ); "&_
146
        " PK_RELEASE.CAN_USER_WRITE_TO_RELEASE ( :RTAG_ID, :RETPV_ID, :ALTER_RELEASE ); "&_
147
        " PK_ENVIRONMENT.REPLACE_PACKAGE ( :RETPV_ID, :ORIG_PV_ID, :RTAG_ID, :USER_ID ); "&_
148
        "END;"
149
    End If
123 ghuddy 150
 
5171 dpurdie 151
    retNEWpv_id = OraDatabase.Parameters("RETPV_ID").Value
123 ghuddy 152
 
151 ghuddy 153
   objEH.CatchORA ( OraSession )
5173 dpurdie 154
   If objEH.LastOraFailed = FALSE and not bImode Then
3959 dpurdie 155
      Call UpdateChangeType (retNEWpv_id, parChangeType )
151 ghuddy 156
      Call UpdateReasonForVersion (retNEWpv_id, Request("FRreason"))
157
   End If
158
 
123 ghuddy 159
   OraDatabase.Parameters.Remove "ORIG_PV_ID"
160
   OraDatabase.Parameters.Remove "ALTER_RELEASE"
161
   OraDatabase.Parameters.Remove "PKG_VERSION"
4203 dpurdie 162
   OraDatabase.Parameters.Remove "CHANGE_TYPE"
123 ghuddy 163
   OraDatabase.Parameters.Remove "BUILD_TYPE"
164
   OraDatabase.Parameters.Remove "SET_TO_PV_ID"
165
   OraDatabase.Parameters.Remove "RTAG_ID"
166
   OraDatabase.Parameters.Remove "USER_ID"
167
   OraDatabase.Parameters.Remove "enumISSUES_STATE_IMPORTED"
168
   OraDatabase.Parameters.Remove "RETPV_ID"
119 ghuddy 169
End Sub
170
'---------------------------------------------------------------
171
Function SanityCheck ( newVersion )
172
 
123 ghuddy 173
   SanityCheck = False
119 ghuddy 174
 
123 ghuddy 175
   Dim objRegEx, objRegEx2
176
   Set objRegEx = New RegExp
177
   Set objRegEx2 = New RegExp
119 ghuddy 178
 
123 ghuddy 179
   objRegEx.IgnoreCase = True
180
   objRegEx.Pattern = "^[0-9]+\.[0-9]+\.[0-9]+\.[a-zA-Z0-9]+$"
3959 dpurdie 181
   objRegEx2.Pattern = "\.(cots)|(tool)$"
121 hknight 182
 
123 ghuddy 183
   If Len(newVersion) <= 50 Then
184
      If objRegEx.Test( newVersion ) OR objRegEx2.Test( newVersion ) Then
185
         SanityCheck = True
186
      End If
187
   End If
188
 
3959 dpurdie 189
   If parBuildType = "A" Then
123 ghuddy 190
      SanityCheck = True
191
   End If
192
 
193
   Set objRegEx = Nothing
194
   Set objRegEx2 = Nothing
121 hknight 195
End Function
161 iaugusti 196
 
197
'-----------------------------------------------------------------------------------
3959 dpurdie 198
'   Seed the Database
199
'   Create proto package-version to be used later
200
'
201
Sub Seed_DB ( retPV_ID )
202
   Dim QueryString
203
   On Error Resume Next
204
 
205
    OraDatabase.Parameters.Add "retPV_ID", 0, ORAPARM_OUTPUT, ORATYPE_NUMBER
206
    QueryString = "BEGIN Seed_Package_Names_Versions ("&_
207
                " '" & parFRpkgName & "'"&_
208
                ",'" & parFRnewver & "'" &_
209
                ",:USER_ID" &_
210
                ",:retPV_ID" &_
211
                ",NULL" &_
212
                ",'"& parBuildType & "'" &_
213
                ",'"& parChangeType & "'" &_
214
                "); END;"
215
    OraDatabase.ExecuteSQL QueryString
216
    retPV_ID = OraDatabase.Parameters("retPV_ID").Value
217
 
218
    OraDatabase.Parameters.Remove "retPV_ID"
219
End Sub
220
 
221
'-----------------------------------------------------------------------------------
222
' Add Package to a Release
223
Sub AddPackage ( sPvId )
224
 
225
   Dim rsQry, AssocMASS
226
 
227
   On Error Resume Next
228
   Set rsQry = OraDatabase.DbCreateDynaset( "SELECT * FROM RELEASE_TAGS RT, PACKAGE_VERSIONS PV WHERE RT.RTAG_ID ="&parRtag_id&" AND PV.PV_ID IN ("&sPvId&")", cint(0))
229
   AssocMASS = rsQry("ASSOC_MASS_REF")
230
 
231
   If ( IsNull(AssocMASS) ) OR (AssocMASS <> "" AND (rsQry("v_ext") <> ".cr" AND rsQry("v_ext") <> ".mas" )) Then
232
      OraDatabase.Parameters.Add "PV_ID_LIST", sPvId, ORAPARM_OUTPUT, ORATYPE_VARCHAR2
233
      OraDatabase.ExecuteSQL "BEGIN PK_ENVIRONMENT.ADD_PACKAGE ( :PV_ID_LIST, :BASE_VIEW_ID, :RTAG_ID, :USER_ID ); END;"
234
      OraDatabase.Parameters.Remove "PV_ID_LIST"
235
   Else
236
      Err.Raise 8, "Cannot ADD a CORE/MASS package into a MASS_REF Reference Release!"
237
   End If
238
 
239
End Sub
240
 
241
'-----------------------------------------------------------------------------------
242
Sub Add_Packages_To_View_Definition ( NNpkg_list )
243
   If OraDatabase.Parameters("PERSONAL_VIEW_ID").Value = "" Then Exit Sub
244
   OraDatabase.ExecuteSQL _
245
   " INSERT INTO view_def"&_
246
   "   SELECT TO_NUMBER( :PERSONAL_VIEW_ID ) AS view_id, pkg.pkg_id"&_
247
   "     FROM packages pkg"&_
248
   "    WHERE pkg.pkg_id IN ( "& NNpkg_list &" )"&_
249
   "   MINUS "&_
250
   "   SELECT vd.view_id, vd.pkg_id"&_
251
   "     FROM view_def vd"&_
252
   "    WHERE vd.view_id = :PERSONAL_VIEW_ID "
253
End Sub
254
'-----------------------------------------------------------------------------------
255
 
119 ghuddy 256
%>
257
<%
258
'-----------------------  MAIN LINE  ---------------------------
259
Dim rsQry, Query_String, Record_Count
123 ghuddy 260
Dim versionToSanityCheck
161 iaugusti 261
 
3959 dpurdie 262
'Response.Write "<pre>------------<br>"
263
'Dim Item
264
'For Each Item In Request.Form
265
'    Response.Write "User Data: " &Item & ": " & Request.Form(Item) & "<br>"
266
'Next
267
'Response.Write "------------<br></pre>"
5957 dpurdie 268
'Call Destroy_All_Objects
5169 dpurdie 269
'Response.End
3959 dpurdie 270
 
119 ghuddy 271
'--- Process submission ---
3959 dpurdie 272
If ((parNewPackage <> "") AND parNewPackage) Then
273
    '
274
    ' Creating a new package and its first version
275
    ' Appears to work for others too
276
    Dim reResult
277
    Dim pkgFound
278
 
279
    ' Ensure that the named package does not exist
280
    ' Can't create it if it already exists
281
    '
282
    pkgFound = ""
283
    Query_String = "SELECT pkg.*" &_
284
         "  FROM packages pkg"&_
285
         " WHERE pkg.pkg_id != 0"&_
286
         "   AND UPPER(pkg.pkg_name) = UPPER('"& Trim(parFRpkgName) & "')"
287
 
288
    Set rsQry = OraDatabase.DbCreateDynaset( Query_String, ORADYN_DEFAULT )
289
    If ((NOT rsQry.BOF) AND (NOT rsQry.EOF)) Then
290
        pkgFound = rsQry("pkg_id")
291
    End If
292
    rsQry.Close
293
    Set rsQry = Nothing
294
 
295
    '
296
    ' Don't need to create the package
297
    ' It will spring into existance if it does not exist
298
    '
299
 
300
    On Error Resume Next
301
    Dim bAdded: bAdded = False
302
 
303
    'Response.Write "<pre>------------<br>"
304
    'Dim Item
305
    'For Each Item In Request.Form
306
    '    Response.Write "User Data: " &Item & ": " & Request.Form(Item) & "<br>"
307
    'Next
308
    'Response.Write "------------<br></pre>"
309
 
310
    If ( parFRpkgName <> "" and parFRnewver  <> "") Then
311
 
312
        ' Determine the state of the Release
313
        ' Can only add packages to a release that is in Open Mode(N) or Restricted Mode(R)
314
        Set rsQry = OraDatabase.DbCreateDynaset( "SELECT OFFICIAL FROM RELEASE_TAGS WHERE RTAG_ID ="&parRtag_id, cint(0))
315
        objEH.Try
5179 dpurdie 316
        If releaseIsWritable(rsQry("official")) Then
3959 dpurdie 317
 
318
          OraSession.BeginTrans
319
 
320
          '---- SQL parameters ----
321
          OraDatabase.Parameters.Add "RTAG_ID", parRtag_id, ORAPARM_INPUT, ORATYPE_NUMBER
322
          OraDatabase.Parameters.Add "USER_ID", objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBER
323
          OraDatabase.Parameters.Add "BASE_VIEW_ID", parBase_view_id, ORAPARM_INPUT, ORATYPE_NUMBER
324
          OraDatabase.Parameters.Add "PERSONAL_VIEW_ID", parPersonal_view_id, ORAPARM_INPUT, ORATYPE_NUMBER
325
 
326
          '---- Create Version and Add to Release ----
327
          Call Seed_DB ( newPkgPv_id )
328
          If Err.Number = 0 Then
329
            Call AddPackage ( newPkgPv_id )
330
            If Err.Number = 0 Then
331
                If NOT IsNull(parPersonal_view_id) Then
332
                    Call Add_Packages_To_View_Definition ( newPkgPv_id )
333
                End If
334
            End If
335
          End If
336
 
337
          OraDatabase.Parameters.Remove "RTAG_ID"
338
          OraDatabase.Parameters.Remove "USER_ID"
339
          OraDatabase.Parameters.Remove "BASE_VIEW_ID"
340
          OraDatabase.Parameters.Remove "PERSONAL_VIEW_ID"
341
 
342
          '---- Insert additional information
343
          If Err.Number = 0 Then
344
            Call UpdateReasonForVersion (newPkgPv_id, Request("FRreason"))
345
          End If
346
 
5338 dpurdie 347
          '---- Insert Package Licence info
348
          If Err.Number = 0 Then
349
            Call UpdateLicenceInfo (newPkgPv_id, Request("licence_id"))
350
          End If
351
 
352
 
3959 dpurdie 353
          '---- Commit or Rollback the transaction
354
          If Err.number <> 0 Then
355
             OraSession.RollBack
356
             Call RaiseMsg ( enum_MSG_ERROR, Err.description )
357
          Else
358
            OraSession.CommitTrans
359
            bAdded = True
360
          End If
361
 
362
          '---- Run Release Changed scripts on archive server
363
          '---- This is a new package so it should not be needed
364
          '
365
          'If bAdded Then
366
          '  Dim objRC: Set objRC = New ReleaseChanged
367
          '  Call objRC.Run_ReleaseChanged_List(parRtag_id,newPkgPv_id,enumRELEASE_CHANGE_MODE_PKG_ADDED)
368
          '  Set objRC = Nothing
369
          'End If
370
 
371
          '--- Direct user the package-version that we have just added
372
          '--- Goto the page with the release notes as more info will need to be added
5957 dpurdie 373
          Call Destroy_All_Objects
3959 dpurdie 374
          Response.Redirect("fixed_issues.asp?rtag_id="& parRtag_id & "&pv_id=" & newPkgPv_id )
375
 
376
        Else
377
          Err.Raise 8, "Cannot ADD a package in a CLOSED or CCB Release Mode"
378
        End If
379
        rsQry.Close
380
        Set rsQry = nothing
381
        objEH.Catch
382
    Else
383
       Response.write "Some mandatory parameters are missing!. Need parNewPackage and parFRnewver" & "<br>" 'TODO
4955 dpurdie 384
       Response.write QSTR_FullQuery
3959 dpurdie 385
    End If
386
 
387
' Not Creating a new package
388
ElseIf (parOLDpv_id <> "") AND ( (parFRnewver <> "") OR (parSetToPv_id <> "") ) AND (parRtag_id <> "") Then
123 ghuddy 389
      ' All mandatory parameters FOUND
390
      If ( (parSetToPv_id <> "") OR SanityCheck(parFRnewver) ) Then
119 ghuddy 391
 
131 ghuddy 392
         Record_Count = 0
393
 
3959 dpurdie 394
         If parBuildType = "M" Then
123 ghuddy 395
            Query_string = " SELECT pv.pv_id, pv.is_patch, pv.dlocked"&_
396
                           " FROM package_versions pv"&_
397
                           " WHERE pv.pkg_version = '"& parFRnewver &"'"&_
398
                           " AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id"&_
399
                           "  FROM package_versions origpv"&_
400
                           " WHERE origpv.pv_id = "& parOLDpv_id &")"
401
 
402
            Set rsQry = OraDatabase.DbCreateDynaset(Query_String, cint(0))
403
            Record_Count = rsQry.RecordCount
404
            rsQry.Close()
405
            Set rsQry = Nothing
406
         End If
407
 
3959 dpurdie 408
         If Record_Count > 0 And parBuildType = "M" Then
123 ghuddy 409
            Call RaiseMsg ( enum_MSG_PACKAGE_VERSION_EXISTS&"?rtag_id="& parRtag_id &"&pv_id="& parOLDpv_id &"", parFRnewver )
410
         Else
5173 dpurdie 411
            Call New_Version ( parFRnewver, parOLDpv_id, parSetToPv_id, parRtag_id, bImode, NEWpv_id )
412
            If not bImode Then
6924 dpurdie 413
                '
5173 dpurdie 414
                ' Direct insert ( not pending )
415
                ' Report change to Release archive server so that it can be synced
6924 dpurdie 416
                '   But only if the package has been added to the release and not simply created as a WIP
417
                '
418
                '   Could do this better, but then this entire page would need to be split into 
419
                '       One for a New package-versions
420
                '       One for Replacing a package in a release
421
                '       One for adding a package to a release
422
                '
423
                Dim newDlockState
424
                Query_string = " SELECT pv.dlocked"&_
425
                               " FROM package_versions pv"&_
426
                               " WHERE pv.pv_id = "& NEWpv_id
427
 
428
                Set rsQry = OraDatabase.DbCreateDynaset(Query_String, cint(0))
429
                newDlockState = rsQry("dlocked") 
430
                Record_Count = rsQry.RecordCount
431
                rsQry.Close()
432
                Set rsQry = Nothing
433
                If newDlockState = "Y" Then
434
                    Dim objRC: Set objRC = New ReleaseChanged
435
                    Call objRC.Run_ReleaseChanged(parRtag_id,NEWpv_id,enumRELEASE_CHANGE_MODE_PKG_ADDED, true)
436
                    Call objRC.Run_ReleaseChanged(parRtag_id,parOLDpv_id,enumRELEASE_CHANGE_MODE_PKG_REMOVED, true)
437
                    Set objRC = Nothing
438
                End If
5173 dpurdie 439
            End If
5169 dpurdie 440
 
123 ghuddy 441
            If objEH.Finally Then
5957 dpurdie 442
               Call Destroy_All_Objects
5396 dpurdie 443
               Response.Redirect("fixed_issues.asp?rtag_id="& parRtag_id &"&pv_id="& NEWpv_id )
123 ghuddy 444
            End If
445
         End If
446
      Else
447
         Call RaiseMsg( enum_MSG_PACKAGE_VERSION_INVALID&"?rtag_id="& parRtag_id &"&pv_id="& parOLDpv_id &"", parFRnewver )
448
      End If
449
 
3959 dpurdie 450
Else
451
    Response.write "Some mandatory parameters are missing!" & "<br>" 'TODO
4955 dpurdie 452
    Response.write QSTR_FullQuery
3959 dpurdie 453
End If ' If (parOLDpv_id <> "") AND ( (parFRnewver <> "") OR (parSetToPv_id <> "") ) AND (parRtag_id <> "") Then
119 ghuddy 454
%>
455
<!-- DESTRUCTOR ------->
123 ghuddy 456
<!--#include file="common/destructor.asp"-->