Subversion Repositories DevTools

Rev

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