Subversion Repositories DevTools

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
119 ghuddy 1
<%
2
'=====================================================
129 ghuddy 3
'                COMMON SUBs Part 1
119 ghuddy 4
'=====================================================
5098 dpurdie 5
Const haveCommonSubs = 1
119 ghuddy 6
%>
7
<%
8
'-----------------------------------------------------------------------------------------------------------------------------
9
Sub CloseWindow
10
%>
11
<SCRIPT language="JavaScript" type="text/javascript">
12
<!--
13
self.close();
14
//-->
15
</SCRIPT>
16
<%
17
End Sub
18
'-----------------------------------------------------------------------------------------------------------------------------
19
Sub OpenChildWindow ( SStitle, SSurl, SSH, SSW, BBscroll )
129 ghuddy 20
   Dim scrlBar
21
   If BBscroll Then
22
      scrlBar = "yes"
23
   Else
24
      scrlBar = "no"
25
   End If
119 ghuddy 26
%>
129 ghuddy 27
   <script language="JavaScript" type="text/javascript">
28
   <!--
29
   window.open('<%=SSurl%>','<%=SStitle%>','scrollbars=<%=scrlBar%>,resizable=yes,width=<%=SSW%>,height=<%=SSH%>')
30
   //-->
31
   </script>
119 ghuddy 32
<%
33
End Sub
34
'-----------------------------------------------------------------------------------------------------------------------------
35
Sub OpenInParentWindow ( SSurl )
36
%>
129 ghuddy 37
   <script language="JavaScript" type="text/javascript">
38
   <!--
39
   window.opener.document.location='<%=SSurl%>';
40
   //-->
41
   </script>
119 ghuddy 42
<%
43
End Sub
44
'-----------------------------------------------------------------------------------------------------------------------------
45
Sub OpenInWindow ( SSurl )
129 ghuddy 46
   Response.Redirect ( SSurl )
119 ghuddy 47
End Sub
48
'-----------------------------------------------------------------------------------------------------------------------------
49
Function GetQuery ( sQryName )
129 ghuddy 50
   GetQuery = ReadFile( QUERIES_PATH &"\"& sQryName )
119 ghuddy 51
End Function
52
'-----------------------------------------------------------------------------------------------------------------------------
53
Sub RaiseMsg ( SSerrFile, SSerrDesc )
129 ghuddy 54
   ' Usage: enumERROR, parval1 &"|"& parval2 &"|"& parval3 ...
55
   Session( enum_RELMGR_ERRDESCRIPTION ) = SSerrDesc
56
   Response.Redirect ("messages/"& SSerrFile )
119 ghuddy 57
End Sub
58
'-----------------------------------------------------------------------------------------------------------------------------
59
Sub RaiseMsgInParent ( SSerrFile, SSerrDesc )
129 ghuddy 60
   Session( enum_RELMGR_ERRDESCRIPTION ) = SSerrDesc
61
   Call OpenInParentWindow ("messages/"& SSerrFile )
119 ghuddy 62
End Sub
63
'-----------------------------------------------------------------------------------------------------------------------------
64
Function ReadFile( SSpath )
129 ghuddy 65
   Dim filesys, rfile
66
   Set filesys = CreateObject("Scripting.FileSystemObject")
67
   Set rfile = filesys.OpenTextFile( SSpath, 1, false)
68
   ReadFile = rfile.ReadAll
69
   rfile.close
70
   Set filesys = nothing
119 ghuddy 71
End Function
72
'-----------------------------------------------------------------------------------------------------------------------------
73
Function HighlightSubstring ( SSstr, SSsubstr )
129 ghuddy 74
   Dim leftSTR, startPos
75
   startPos = InStr( 1, SSstr, SSsubstr, 1 )
119 ghuddy 76
 
129 ghuddy 77
   If startPos > 0 Then
78
      leftSTR = Left ( SSstr, startPos - 1 )
79
      HighlightSubstring = leftSTR &"<SPAN style='background:#ffff99;'>"& Mid( SSstr, startPos, Len(SSsubstr) ) &"</SPAN>"&  Right ( SSstr, Len(SSstr) - Len(leftSTR) - Len(SSsubstr)  )
80
   Else
81
      ' Subtring not found
82
      HighlightSubstring = SSstr
83
   End If
119 ghuddy 84
 
85
End Function
86
'-----------------------------------------------------------------------------------------------------------------------------
87
Sub DeleteFile( SSpath )
129 ghuddy 88
   Dim filesys
89
   Set filesys = CreateObject("Scripting.FileSystemObject")
90
   If filesys.FileExists(SSpath) Then
91
         filesys.DeleteFile SSpath, TRUE
92
   End If
93
   Set filesys = nothing
119 ghuddy 94
End Sub
95
'-----------------------------------------------------------------------------------------------------------------------------
96
Sub DeleteFolder( SSpath )
129 ghuddy 97
   Dim  filesys
98
   Set filesys = CreateObject ("Scripting.FileSystemObject")
99
   If filesys.FolderExists( SSpath ) Then
100
      'Set oFolder = filesys.GetFolder( SSpath )
101
      filesys.DeleteFolder SSpath ,TRUE
102
   End If
119 ghuddy 103
End Sub
104
'-----------------------------------------------------------------------------------------------------------------------------
105
Sub Create_Folder ( sCreateIn, sFolderName )
129 ghuddy 106
   Dim filesys, currfolder, folcoll, subfol
107
   Set filesys = CreateObject("Scripting.FileSystemObject")
108
   If filesys.FolderExists( sCreateIn ) Then
109
      Set currfolder = filesys.GetFolder( sCreateIn )
110
      Set folcoll = currfolder.SubFolders
111
      If NOT filesys.FolderExists( sCreateIn &"\"& sFolderName ) Then
112
         folcoll.Add( sFolderName )
113
      End If
114
   End If
119 ghuddy 115
End Sub
116
'-----------------------------------------------------------------------------------------------------------------------------
117
Function Folder_Is_Empty ( sPath )
129 ghuddy 118
   Dim filesys, oFolder
119
   Set filesys = CreateObject("Scripting.FileSystemObject")
119 ghuddy 120
 
129 ghuddy 121
   If filesys.FolderExists( sPath ) Then
122
      Set oFolder = filesys.GetFolder( sPath )
123
      If ( oFolder.Files.Count + oFolder.SubFolders.Count ) > 0 Then
124
         Folder_Is_Empty = FALSE
125
      Else
126
         Folder_Is_Empty = TRUE
127
      End If
128
   Else
129
      Folder_Is_Empty = TRUE
130
   End If
119 ghuddy 131
 
132
End Function
133
'-----------------------------------------------------------------------------------------------------------------------------
134
Sub Destroy_All_Objects
129 ghuddy 135
   On Error Resume Next
136
   set brokenReadyHash = nothing
137
   set brokenHash = nothing
138
   set pkgInfoHash = nothing
139
   set OraDatabase = nothing
140
   set OraSession = nothing
119 ghuddy 141
End Sub
142
'-----------------------------------------------------------------------------------------------------------------------------
143
Function InStrPipes ( SSstr, SSsubstr )
129 ghuddy 144
   If InStr( SSstr, "|"& SSsubstr &"|") > 0 Then
145
      InStrPipes = true
146
   Else
147
      InStrPipes = false
148
   End If
119 ghuddy 149
End Function
150
'-----------------------------------------------------------------------------------------------------------------------------
151
Function RemoveFromStrPipes ( SSstr, SSsubstr )
129 ghuddy 152
   RemoveFromStrPipes = Replace( SSstr, "|"& SSsubstr &"|", "" )
119 ghuddy 153
End Function
154
'-----------------------------------------------------------------------------------------------------------------------------
155
Function View_Name_Exists ( SSviewname, NNused_id )
129 ghuddy 156
   Dim rsTemp, Query_String
157
   Query_String = _
158
   " SELECT view_name"&_
159
   "  FROM views"&_
160
   " WHERE UPPER(view_name) = UPPER('"& UCase(SSviewname) &"') AND owner_id = "& NNused_id
161
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
162
   If rsTemp.RecordCount > 0 Then
163
      View_Name_Exists = TRUE
164
   Else
165
      View_Name_Exists = FALSE
166
   End If
167
   rsTemp.Close
168
   Set rsTemp = nothing
119 ghuddy 169
End Function
170
'-----------------------------------------------------------------------------------------------------------------------------
171
Function User_Name_Exists ( SSusername )
129 ghuddy 172
   Dim rsTemp, Query_String
173
   Query_String = _
174
   " SELECT user_name"&_
175
   "  FROM users"&_
176
   " WHERE user_name = '"& SSusername &"'"
177
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
178
   If rsTemp.RecordCount > 0 Then
179
      User_Name_Exists = TRUE
180
   Else
181
      User_Name_Exists = FALSE
182
   End If
183
   rsTemp.Close
184
   Set rsTemp = nothing
119 ghuddy 185
End Function
186
'-----------------------------------------------------------------------------------------------------------------------------
187
Function This_View_Owner( NNview_id, NNuser_id )
129 ghuddy 188
   Dim rsTemp, Query_String
189
   Query_String = _
190
   " SELECT owner_id"&_
191
   "  FROM views"&_
192
   " WHERE view_id = "& NNview_id
193
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
194
   If rsTemp.RecordCount > 0 Then
195
      If CInt(rsTemp.Fields("owner_id")) = CInt(NNuser_id) Then
196
         This_View_Owner = TRUE
197
      Else
198
         This_View_Owner = FALSE
199
      End If
200
   Else
201
      ' view not found
202
      Session("AdditionalParams") = "$ADMINEMAIL$,"& adminEmail
203
      Response.Redirect("message.asp?msg=400-2")
204
   End If
205
   rsTemp.Close
206
   Set rsTemp = nothing
119 ghuddy 207
End Function
208
'-----------------------------------------------------------------------------------------------------------------------------
209
Function GetReleaseMode ( NNrtag_id )
129 ghuddy 210
   Dim rsTemp, Query_String
211
   If NNrtag_id = "" Then NNrtag_id = "-1"
119 ghuddy 212
 
129 ghuddy 213
   Query_String = _
214
   " SELECT official FROM release_tags WHERE rtag_id = "& NNrtag_id
119 ghuddy 215
 
129 ghuddy 216
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
217
   'Response.write "DB"& NNrtag_id
218
   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
219
      GetReleaseMode = rsTemp.Fields("official")
119 ghuddy 220
 
129 ghuddy 221
   End If
119 ghuddy 222
 
129 ghuddy 223
   rsTemp.Close
224
   Set rsTemp = nothing
119 ghuddy 225
End Function
226
'-----------------------------------------------------------------------------------------------------------------------------
5020 dpurdie 227
Function Get_Devl_Environment
228
   If Request.Cookies(COOKIE_RELEASEMANAGER_MEMORY)("devl_environment") <> "" Then
229
      If Request.Cookies(COOKIE_RELEASEMANAGER_MEMORY)("devl_environment") = "clearcase" Then
230
         Get_Devl_Environment = "jats"      'clear case does not have import
129 ghuddy 231
      Else
5020 dpurdie 232
         Get_Devl_Environment = Request.Cookies(COOKIE_RELEASEMANAGER_MEMORY)("devl_environment")
129 ghuddy 233
      End If
234
   Else
5020 dpurdie 235
      Get_Devl_Environment = "jats"      'JATS devl enviroment is set by default
129 ghuddy 236
   End If
119 ghuddy 237
End Function
238
'-----------------------------------------------------------------------------------------------------------------------------
239
Function Get_From_DUAL ( SSclm )
129 ghuddy 240
   Dim rsTemp, Query_String, OraSession2, OraDatabase2
241
   Set OraSession2 = CreateObject("OracleInProcServer.XOraSession")
242
   Set OraDatabase2 = OraSession2.OpenDatabase( TNS_NAME, DB_AUTHENTICATION, Cint(0))
119 ghuddy 243
 
129 ghuddy 244
   Query_String = _
245
   " SELECT "& SSclm &" AS result FROM DUAL"
246
   Set rsTemp = OraDatabase2.DbCreateDynaset( Query_String, cint(0))
119 ghuddy 247
 
129 ghuddy 248
   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
249
      Get_From_DUAL = (rsTemp.Fields("result"))
250
   End If
119 ghuddy 251
 
129 ghuddy 252
   rsTemp.Close
253
   Set rsTemp = nothing
254
   Set OraDatabase2 = nothing
255
   Set OraSession2 = nothing
119 ghuddy 256
End Function
257
'-----------------------------------------------------------------------------------------------------------------------------
258
Function Get_Pkg_Base_View ( NNpv_id, NNrtag_id )
129 ghuddy 259
   Dim rsTemp, Query_String
119 ghuddy 260
 
129 ghuddy 261
   If NNrtag_id = "" Then
262
      Get_Pkg_Base_View = "N/A"
263
      Exit Function
264
   End If
119 ghuddy 265
 
129 ghuddy 266
   Query_String = _
267
   " SELECT vi.view_name"&_
268
   "  FROM release_content rc,"&_
269
   "       views vi"&_
270
   " WHERE vi.view_id = rc.base_view_id"&_
271
   "   AND rc.rtag_id = "& NNrtag_id &_
272
   "   AND rc.pv_id = "& NNpv_id
119 ghuddy 273
 
129 ghuddy 274
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
119 ghuddy 275
 
129 ghuddy 276
   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
277
      Get_Pkg_Base_View = UCase(rsTemp.Fields("view_name"))
278
   Else
279
      Get_Pkg_Base_View = "N/A"
280
   End If
119 ghuddy 281
 
129 ghuddy 282
   rsTemp.Close
283
   Set rsTemp = nothing
119 ghuddy 284
End Function
285
'-----------------------------------------------------------------------------------------------------------------------------
286
Function Get_Proj_ID ( SSrtag_id )
129 ghuddy 287
   Dim rsTemp, Query_String
119 ghuddy 288
 
129 ghuddy 289
   Query_String = _
290
   " SELECT projects.proj_id"&_
291
   "   FROM projects projects, release_tags rel"&_
292
   "  WHERE projects.proj_id = rel.proj_id"&_
293
   "    AND rel.rtag_id = "& SSrtag_id
119 ghuddy 294
 
129 ghuddy 295
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
119 ghuddy 296
 
129 ghuddy 297
   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
298
      Get_Proj_ID = (rsTemp.Fields("proj_id"))
299
   End If
119 ghuddy 300
 
129 ghuddy 301
   rsTemp.Close
302
   Set rsTemp = nothing
119 ghuddy 303
End Function
304
'-----------------------------------------------------------------------------------------------------------------------------
305
Function Get_Proj_Name ( NNproj_id )
129 ghuddy 306
   Dim rsTemp, Query_String
119 ghuddy 307
 
159 ghuddy 308
   Get_Proj_Name = ""
309
 
129 ghuddy 310
   Query_String = _
311
   " SELECT proj_name "&_
312
   "   FROM projects pr "&_
119 ghuddy 313
  "  WHERE pr.proj_id = "& NNproj_id
314
 
129 ghuddy 315
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
119 ghuddy 316
 
129 ghuddy 317
   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
318
      Get_Proj_Name = (rsTemp.Fields("proj_name"))
319
   End If
119 ghuddy 320
 
129 ghuddy 321
   rsTemp.Close
322
   Set rsTemp = nothing
119 ghuddy 323
End Function
324
'-----------------------------------------------------------------------------------------------------------------------------
159 ghuddy 325
Function Get_Release_Name ( NNrtag_id )
326
   Dim rsTemp, Query_String
327
 
328
   Get_Release_Name = ""
329
 
330
   Query_String = _
331
   " SELECT rtag_name "&_
332
   "   FROM release_tags rt "&_
333
  "  WHERE rt.rtag_id = "& NNrtag_id
334
 
335
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
336
 
337
   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
338
      Get_Release_Name = (rsTemp.Fields("rtag_name"))
339
   End If
340
 
341
   rsTemp.Close
342
   Set rsTemp = nothing
343
End Function
344
'-----------------------------------------------------------------------------------------------------------------------------
119 ghuddy 345
Function Get_Base_URL ( NNproj_id )
129 ghuddy 346
   Dim rsTemp, Query_String
119 ghuddy 347
 
129 ghuddy 348
   Query_String = _
349
   " SELECT base_url "&_
350
   "   FROM projects pr "&_
119 ghuddy 351
  "  WHERE pr.proj_id = "& NNproj_id
352
 
129 ghuddy 353
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
119 ghuddy 354
 
129 ghuddy 355
   Get_Base_URL = rsTemp("base_url")
119 ghuddy 356
 
129 ghuddy 357
   rsTemp.Close()
358
   Set rsTemp = nothing
119 ghuddy 359
End Function
360
'-----------------------------------------------------------------------------------------------------------------------------
361
Function Get_Categories ( NNrtag_id )
129 ghuddy 362
   Get_Categories = _
363
   " SELECT vi.view_id, vi.view_name"&_
364
   "  FROM release_content rel,"&_
365
   "       views vi"&_
366
   " WHERE rel.base_view_id = vi.view_id"&_
367
   "   AND rtag_id = "& NNrtag_id &_
368
   " GROUP BY vi.view_id, vi.view_name   "&_
369
   " ORDER BY vi.view_name ASC "
119 ghuddy 370
End Function
371
'-----------------------------------------------------------------------------------------------------------------------------
372
Function Get_PV_IDs_In_Release ( NNrtag_id )
373
    Dim rsTemp, Query_String, tempSTR
129 ghuddy 374
   tempSTR = "-1"
375
   Query_String = _
376
   "SELECT pv_id FROM release_content WHERE rtag_id = "& NNrtag_id
119 ghuddy 377
 
129 ghuddy 378
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
119 ghuddy 379
 
129 ghuddy 380
   While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))
381
      tempSTR = tempSTR &","& rsTemp.Fields("pv_id")
382
      rsTemp.MoveNext
383
   WEnd
384
   Get_PV_IDs_In_Release = tempSTR
385
   rsTemp.Close
386
   Set rsTemp = nothing
119 ghuddy 387
End Function
388
'-----------------------------------------------------------------------------------------------------------------------------
389
Sub Get_Pkg_Info ( SSpv_id, NNrtag )
4687 dpurdie 390
   Dim rsTemp, Query_String, isaRelease
391
   isaRelease = NOT ((NNrtag = "") or (IsNull(NNrtag)))
392
 
393
   OraDatabase.Parameters.Add "PV_ID",         SSpv_id,   ORAPARM_INPUT, ORATYPE_NUMBER
394
   OraDatabase.Parameters.Add "RTAG_ID",       NNrtag,    ORAPARM_INPUT, ORATYPE_NUMBER
183 brianf 395
   OraDatabase.Parameters.Add "RETURN_NUMBER", NULL,      ORAPARM_OUTPUT, ORATYPE_NUMBER   
119 ghuddy 396
 
4767 dpurdie 397
   '-- can_unofficial
398
   '   Limits the ability to unrelease a package version
129 ghuddy 399
   pkgInfoHash.Item ("can_unofficial") = "false"
119 ghuddy 400
 
4767 dpurdie 401
   '--  can_edit_in_project
402
   '    Property of the release, the user and the package
403
   '    Limits the ability to add a package to a release
404
   '        
405
   pkgInfoHash.Item ("can_edit_in_project") = "0"
406
 
4687 dpurdie 407
   '-- Get Package Details
129 ghuddy 408
   Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery("PackageDetails.sql"), cint(0))
119 ghuddy 409
 
129 ghuddy 410
   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
411
      pkgInfoHash.Add "pv_id", (rsTemp.Fields("pv_id"))
412
      pkgInfoHash.Add "pkg_id", (rsTemp.Fields("pkg_id"))
413
      pkgInfoHash.Add "pkg_name", (rsTemp.Fields("pkg_name"))
414
      pkgInfoHash.Add "pkg_version", (rsTemp.Fields("pkg_version"))
415
      pkgInfoHash.Add "v_ext", (rsTemp.Fields("v_ext"))
416
      pkgInfoHash.Add "comments", (rsTemp.Fields("comments"))
119 ghuddy 417
 
129 ghuddy 418
      pkgInfoHash.Add "modified_stamp", (rsTemp.Fields("modified_stamp"))
419
      pkgInfoHash.Add "modifier", (rsTemp.Fields("modifier"))
420
      pkgInfoHash.Add "modifier_id", (rsTemp.Fields("modifier_id"))
421
      pkgInfoHash.Add "modifier_email", (rsTemp.Fields("modifier_email"))
119 ghuddy 422
 
129 ghuddy 423
      pkgInfoHash.Add "created_stamp", (rsTemp.Fields("created_stamp"))
424
      pkgInfoHash.Add "creator", (rsTemp.Fields("creator"))
425
      pkgInfoHash.Add "creator_email", (rsTemp.Fields("creator_email"))
119 ghuddy 426
 
129 ghuddy 427
      pkgInfoHash.Add "owner", (rsTemp.Fields("owner"))
428
      pkgInfoHash.Add "owner_email", (rsTemp.Fields("owner_email"))
119 ghuddy 429
 
129 ghuddy 430
      pkgInfoHash.Add "dlocked", (rsTemp.Fields("dlocked"))
4687 dpurdie 431
 
129 ghuddy 432
      pkgInfoHash.Add "pkg_label", (rsTemp.Fields("pkg_label"))
433
      pkgInfoHash.Add "src_path", (rsTemp.Fields("src_path"))
434
      pkgInfoHash.Add "pv_description", (rsTemp.Fields("pv_description"))
435
      pkgInfoHash.Add "last_pv_id", (rsTemp.Fields("last_pv_id"))
436
      pkgInfoHash.Add "previous_version", (rsTemp.Fields("previous_version"))
437
      pkgInfoHash.Add "release_notes_info", (rsTemp.Fields("release_notes_info"))
119 ghuddy 438
 
129 ghuddy 439
      pkgInfoHash.Add "is_patch", (rsTemp.Fields("is_patch"))
440
      pkgInfoHash.Add "is_obsolete", (rsTemp.Fields("is_obsolete"))
441
      pkgInfoHash.Add "obsolete_comments", (rsTemp.Fields("obsolete_comments"))
119 ghuddy 442
 
129 ghuddy 443
      pkgInfoHash.Add "build_type", (rsTemp.Fields("build_type"))
444
      pkgInfoHash.Add "change_type", (rsTemp.Fields("change_type"))
445
      pkgInfoHash.Add "bs_id", (rsTemp.Fields("bs_id"))
446
      pkgInfoHash.Add "is_deployable", (rsTemp.Fields("is_deployable"))
447
      pkgInfoHash.Add "sbom_priority", (rsTemp.Fields("sbom_priority"))
448
      pkgInfoHash.Add "ripple_field", (rsTemp.Fields("ripple_field"))
449
   End If
119 ghuddy 450
 
4687 dpurdie 451
   If isaRelease Then
452
      '-- Find if package is editable in this project
4767 dpurdie 453
      '   Not editable if
454
      '     Imported via a Reference Package
5080 dpurdie 455
      '     Imported via an SDK
4767 dpurdie 456
      '     Release is not in Open or Restricted Mode
457
      '     Project extenstion is project specific - and not within the allowed project
458
      '     
4687 dpurdie 459
      OraDatabase.ExecuteSQL "BEGIN  :RETURN_NUMBER := CAN_EDIT_PKG_IN_PROJECT( :PV_ID, :RTAG_ID );  END;"
4767 dpurdie 460
      pkgInfoHash.Item ("can_edit_in_project") = CStr( OraDatabase.Parameters("RETURN_NUMBER").Value )
119 ghuddy 461
 
4687 dpurdie 462
       '-- Get Package Release Details
463
       Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery("PackageReleaseDetails.sql"), cint(0))
119 ghuddy 464
 
4687 dpurdie 465
       If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
466
          pkgInfoHash.Add "insert_stamp", (rsTemp.Fields("insert_stamp"))
467
          pkgInfoHash.Add "insertor", (rsTemp.Fields("insertor"))
468
          pkgInfoHash.Add "insertor_email", (rsTemp.Fields("insertor_email"))
469
          pkgInfoHash.Add "used_count", (rsTemp.Fields("used_count"))
119 ghuddy 470
 
4687 dpurdie 471
          pkgInfoHash.Item ("base_view_id") = (rsTemp.Fields("base_view_id"))
472
          pkgInfoHash.Item ("pkg_state") = (rsTemp.Fields("pkg_state"))
473
          pkgInfoHash.Item ("deprecated_state") = (rsTemp.Fields("deprecated_state"))
474
          pkgInfoHash.Item ("product_state") = (rsTemp.Fields("product_state"))
119 ghuddy 475
 
4687 dpurdie 476
          pkgInfoHash.Add "proj_id", (rsTemp.Fields("proj_id"))
477
          pkgInfoHash.Add "rtag_id", (rsTemp.Fields("rtag_id"))
478
          pkgInfoHash.Add "rtag_name", (rsTemp.Fields("rtag_name"))
479
          pkgInfoHash.Add "product_state_used", (rsTemp.Fields("product_state_used"))
5080 dpurdie 480
          pkgInfoHash.Add "sdktag_id", (rsTemp.Fields("sdktag_id"))
481
          pkgInfoHash.Add "is_sdkpkg", (NOT IsNull(rsTemp.Fields("sdktag_id")))
5098 dpurdie 482
          pkgInfoHash.Add "is_pegged", (rsTemp.Fields("pegged") <> 0)
5080 dpurdie 483
 
4764 dpurdie 484
       Else
4767 dpurdie 485
          ' -- Package Version is not a member of the specified release
486
          '    Get Basic Release and Project Details
487
          Query_String = " select pj.PROJ_ID, rt.RTAG_ID,rt.rtag_name " &_
488
                         " from projects pj, release_tags rt" &_
489
                         " where rt.rtag_id=:RTAG_ID" &_
490
                         " and rt.PROJ_ID = pj.PROJ_ID"
491
 
492
          Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
493
 
494
          If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
495
              pkgInfoHash.Add "proj_id",   (rsTemp.Fields("proj_id"))
496
          	  pkgInfoHash.Add "rtag_id",   (rsTemp.Fields("rtag_id"))
497
          	  pkgInfoHash.Add "rtag_name", (rsTemp.Fields("rtag_name"))
498
          End If
4764 dpurdie 499
 
4767 dpurdie 500
          ' -- Determine if package is a member of this release
501
          '    Mark as Not in Release
502
          Query_String = "select pv_id from work_in_progress where rtag_id=:RTAG_ID and pv_id=:PV_ID" &_
503
                          " union" &_
504
                          " select pv_id from planned where rtag_id=:RTAG_ID and pv_id=:PV_ID" &_
505
                          " union" &_
506
                          " select pv_id from RELEASE_CONTENT where rtag_id=:RTAG_ID and pv_id=:PV_ID"
507
          Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
508
          If rsTemp.RecordCount < 1 Then
509
               pkgInfoHash.Item ("notInRelease") = true
510
          End If
4764 dpurdie 511
 
4687 dpurdie 512
       End If
119 ghuddy 513
 
4767 dpurdie 514
       If     (pkgInfoHash.Item ("dlocked") = "Y") _
129 ghuddy 515
         AND  (pkgInfoHash.Item ("build_type") = "M") _
516
         AND  (CDate( FormatDateTime(pkgInfoHash.Item ("modified_stamp"), 2) ) = Date) _
517
         AND  (pkgInfoHash.Item("can_edit_in_project") = "1" ) _
518
      Then
519
         pkgInfoHash.Item ("can_unofficial") = "true"
520
      End If
119 ghuddy 521
 
129 ghuddy 522
   Else
119 ghuddy 523
 
129 ghuddy 524
      If (CDate( FormatDateTime(pkgInfoHash.Item ("modified_stamp"), 2) ) = Date) Then
525
         ' Must be not older then a day
526
         If (pkgInfoHash.Item ("dlocked") = "A")  OR   NOT IsNull(pkgInfoHash.Item("is_patch")) Then
527
            pkgInfoHash.Item ("can_unofficial") = "true"
528
         End If
529
      End If
119 ghuddy 530
 
129 ghuddy 531
   End If
119 ghuddy 532
 
4687 dpurdie 533
   '-- Get Patch Parent
129 ghuddy 534
   If pkgInfoHash.Item ("is_patch") = "Y" Then
535
      Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery("PatchParent.sql"), cint(0))
119 ghuddy 536
 
129 ghuddy 537
      If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
538
         pkgInfoHash.Add "patch_parent_id", (rsTemp.Fields("pv_id"))
539
      End If
540
   End If
119 ghuddy 541
 
129 ghuddy 542
   ' DEVI-45275 - Check if version is in the planned table and if so get its planned operation type
543
   ' which denotes whether it is an existing version being added to a release, an existing version
544
   ' being removed from a release, or a new version being prepared for a release.
545
   Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery("PlannedPackageVersionDetails.sql"), cint(0))
119 ghuddy 546
 
129 ghuddy 547
   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
548
      pkgInfoHash.Add "planned_operation", (rsTemp.Fields("operation"))
549
   Else
550
      pkgInfoHash.Add "planned_operation", " "
551
   End If
119 ghuddy 552
 
129 ghuddy 553
   OraDatabase.Parameters.Remove "PV_ID"
554
   OraDatabase.Parameters.Remove "RTAG_ID"
555
   OraDatabase.Parameters.Remove "RETURN_NUMBER"
119 ghuddy 556
 
557
 
1376 dpurdie 558
   On Error Resume Next
183 brianf 559
   ' check if package is released
185 brianf 560
   If (NNrtag = "") or (IsNull(NNrtag)) Then
183 brianf 561
     pkgInfoHash.Add "is_released", False
562
   Else
563
     Set rsTemp = OraDatabase.DbCreateDynaset( "SELECT rc.pv_id FROM release_content rc WHERE rc.rtag_id = " & NNrtag & " AND rc.pv_id = " & SSpv_id, cint(0))
564
     pkgInfoHash.Add "is_released", rsTemp.RecordCount <> 0
565
   End If
566
 
567
   pkgInfoHash.Add "is_excluded", False
568
   pkgInfoHash.Add "has_build_failure", False
4687 dpurdie 569
 
183 brianf 570
   ' check if package is excluded from build
185 brianf 571
   If Not ((NNrtag = "") or (IsNull(NNrtag))) Then
183 brianf 572
     Set rsTemp = OraDatabase.DbCreateDynaset( "SELECT dnr.pv_id,dnr.root_file FROM do_not_ripple dnr WHERE dnr.rtag_id = " & NNrtag & " AND dnr.pv_id = " & SSpv_id, cint(0))
573
     If rsTemp.RecordCount <> 0 Then
574
       pkgInfoHash("is_excluded") = True
575
       pkgInfoHash("has_build_failure") = Not IsNull(rsTemp("root_file"))
576
     End If
577
   End If
578
 
129 ghuddy 579
   rsTemp.Close
580
   Set rsTemp = nothing
183 brianf 581
 
119 ghuddy 582
End Sub
583
'-----------------------------------------------------------------------------------------------------------------------------
4703 dpurdie 584
' Get Package Info - when we don't have a package
585
Sub Get_NoPkg_Info(NNrtag)
586
	Dim rsTemp, Query_String
587
	OraDatabase.Parameters.Add "RTAG_ID", 		NNrtag,		ORAPARM_INPUT, ORATYPE_NUMBER
588
 
589
	pkgInfoHash.Item ("can_unofficial") = "false"
590
	pkgInfoHash.Item ("noPackage") = true
591
 
592
	'/* Get Basic Details */
593
    Query_String = " select pj.PROJ_ID, rt.RTAG_ID,rt.rtag_name " &_
594
                   " from projects pj, release_tags rt" &_
595
                   " where rt.rtag_id=:RTAG_ID" &_
596
                   " and rt.PROJ_ID = pj.PROJ_ID"
597
 
598
	Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
599
 
600
	If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
601
		pkgInfoHash.Add "proj_id", (rsTemp.Fields("proj_id"))
602
		pkgInfoHash.Add "rtag_id", (rsTemp.Fields("rtag_id"))
603
		pkgInfoHash.Add "rtag_name", (rsTemp.Fields("rtag_name"))
604
	End If
605
 
606
   OraDatabase.Parameters.Remove "RTAG_ID"
607
End Sub
608
 
609
'-----------------------------------------------------------------------------------------------------------------------------
119 ghuddy 610
Sub Get_Pkg_Short_Info( SSparPv_id, SSpkgID, SSpkgName, SSpkgVersion, SSsrc_path, SSpkgDesc, BBdlocked )
129 ghuddy 611
   Dim rsTemp, Query_String
612
   If IsEmpty(SSparPv_id) Then Exit Sub
119 ghuddy 613
 
129 ghuddy 614
   Query_String = _
615
   " SELECT pkg.pkg_id, pkg.pkg_name, pv.pkg_version, pv.src_path, pv.pv_description, pv.dlocked"&_
616
   "  FROM packages pkg, package_versions pv"&_
617
   " WHERE pkg.pkg_id = pv.pkg_id  AND pv.pv_id ="& SSparPv_id
119 ghuddy 618
 
129 ghuddy 619
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
119 ghuddy 620
 
129 ghuddy 621
   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
622
      SSpkgID = rsTemp.Fields("pkg_id")
623
      SSpkgName = rsTemp.Fields("pkg_name")
624
      SSpkgVersion = rsTemp.Fields("pkg_version")
625
      SSsrc_path = rsTemp.Fields("src_path")
626
      SSpkgDesc = rsTemp.Fields("pv_description")
627
      BBdlocked = rsTemp.Fields("dlocked")
628
   End If
119 ghuddy 629
 
129 ghuddy 630
   rsTemp.Close
631
   Set rsTemp = nothing
119 ghuddy 632
End Sub
633
'-----------------------------------------------------------------------------------------------------------------------------
634
Private Function IsDomainAuthOK( SSusername, SSpassword, SSdomainName )
129 ghuddy 635
   Dim objLoginAuth, return, tempSTR
636
   'Set objWSH = Server.CreateObject("WScript.Shell")
637
   'On Error Resume Next
638
   'return = -1
639
   'return = objWSH.Run("cmd.exe /c perl "& rootPath &"\common\domainauth.pl """&_
640
   '               SSdomainName &""" """& SSusername &""" """& SSpassword &""" "&_
641
   '               "> "& rootPath &"\temp\"& SSusername &".txt", 0, true)
119 ghuddy 642
 
129 ghuddy 643
   Set objLoginAuth = Server.CreateObject("LoginAdmin.ImpersonateUser")
119 ghuddy 644
 
129 ghuddy 645
   return = -1
646
   return = objLoginAuth.AuthenticateUser ( SSusername, SSpassword, SSdomainName )
119 ghuddy 647
 
129 ghuddy 648
   'Response.write "LOGIN"& SSusername &"-"& SSpassword &"-"& SSdomainName &"-"& return
119 ghuddy 649
 
129 ghuddy 650
   If (return = 0) OR (return = 1385) Then
651
      ' From MSDN System Error Codes
652
      ' 0 - The operation completed successfully.
653
      ' 1326 - Logon failure: unknown user name or bad password.
654
      ' 1385 - Logon failure: the user has not been granted the requested logon type at this computer.
655
      ' 1909 - The referenced account is currently locked out and may not be used to log on.
119 ghuddy 656
 
129 ghuddy 657
      'Login ok
658
      IsDomainAuthOK = True
659
   Else
660
      IsDomainAuthOK = False
661
   End If
119 ghuddy 662
 
129 ghuddy 663
   Set objLoginAuth = Nothing
119 ghuddy 664
End Function
665
'-----------------------------------------------------------------------------------------------------------------------------
666
Function ReadUserPreferences ( SSitem )
129 ghuddy 667
   'ReadUserPreferences = Request.Cookies("RELEASEMANAGER_USER_PREFERENCES")( SSitem )
668
   ReadUserPreferences = "0"
119 ghuddy 669
End Function
670
'-----------------------------------------------------------------------------------------------------------------------------
671
Function Requred_Parameters_String ( SScurrent, SSstr )
129 ghuddy 672
   'returns "&par1=val1&&parn=valn&"            must use & as it will not be used on parameter name or value
673
   Dim tempARR, parameter, tempSTR
674
   tempARR = Split( SSstr, "," )
675
   tempSTR = SScurrent
119 ghuddy 676
 
129 ghuddy 677
   For Each parameter In tempARR
678
      tempSTR = tempSTR &"&"& parameter &"="& QStrPar( parameter ) &"&"
679
   Next
119 ghuddy 680
 
129 ghuddy 681
   Requred_Parameters_String = tempSTR
119 ghuddy 682
End Function
683
'-----------------------------------------------------------------------------------------------------------------------------
684
Function Quick_Help ( SStipname )
129 ghuddy 685
   Quick_Help = "<a href='javascript:;' onMouseOver=""formTips.show('"& SStipname &"')"" onMouseOut=""formTips.hide()""><img src='images/i_help.gif' width='12' height='12' hspace='2' align='absmiddle' border='0' ></a>"
119 ghuddy 686
End Function
687
'-----------------------------------------------------------------------------------------------------------------------------
688
Function LogError ( SSlog, SSstr )
129 ghuddy 689
   '|errstr1||errstr2||errstr3|...
690
   LogError = SSlog &"|"& SSstr &"|"
119 ghuddy 691
End Function
692
'-----------------------------------------------------------------------------------------------------------------------------
5168 dpurdie 693
'   Send an email
694
'   Args:   SSfromName      - Text Name of sender
695
'           SSfrom          - email address of sender
696
'           SSto            - email address of receipient. May be comma sep list or a soem type of object
697
'           SSsubject       - email subject
698
'           SSbody          - Body of the email. Email is sent as html.
699
'           oAttachments    - email attachments. May be empty, a file or a HashRef of files
700
'
119 ghuddy 701
Sub Send_Email ( SSfromName, SSfrom, SSto, SSsubject, SSbody, oAttachments )
129 ghuddy 702
   Dim Mail, Keys, Key, canSend
4028 dpurdie 703
'Response.write "<pre>Send_Email:SSfromName:" & SSfromName
704
'Response.write "<br>Send_Email:SSfrom:" & SSfrom
705
'Response.write "<br>Send_Email:SSto:" & SSto
706
'Response.write "<br>Send_Email:SSsubject:" & SSsubject
707
'Response.write "<br>Send_Email:SSbody:" & SSbody
119 ghuddy 708
 
129 ghuddy 709
   canSend = FALSE
710
   Set Mail = Server.CreateObject("Persits.MailSender")
3959 dpurdie 711
   Mail.Host = MAIL_SERVER
129 ghuddy 712
   Mail.From = SSfrom
713
   Mail.FromName = SSfromName
119 ghuddy 714
 
129 ghuddy 715
   ' Send TO:
4028 dpurdie 716
   ' Handle a Dictionary of names
717
   If IsObject(SSto) AND (TypeName(SSto) <> "IOraField") Then
129 ghuddy 718
      Keys = SSto.Keys
719
      For Each Key In Keys
720
         Mail.AddAddress Key, SSto.Item( Key )
721
      Next
119 ghuddy 722
 
129 ghuddy 723
      If SSto.Count > 0 Then canSend = TRUE
724
   Else
119 ghuddy 725
 
129 ghuddy 726
      Mail.AddAddress SSto
727
      If SSto <> "" Then canSend = TRUE
728
   End If
119 ghuddy 729
 
129 ghuddy 730
   Mail.Subject = SSsubject
731
   Mail.IsHTML = True
732
   Mail.Body = SSbody
119 ghuddy 733
 
4028 dpurdie 734
   If NOT IsEmpty(oAttachments) AND NOT IsNull(oAttachments) Then
735
       ' Add Attachments     DDDDDDD  Sash,
736
       ' It appears as if AddEmbededImage is premium functionality that costs money, can we just do a normal add attachment?
737
       If IsObject( oAttachments ) Then
738
          Keys = oAttachments.Keys
739
          For Each Key In Keys
740
       '      Mail.AddEmbeddedImage rootPath & Key, oAttachments.Item( Key )
741
              Mail.AddAttachment oAttachments.Item( Key )
742
          Next
743
        Else
744
              Mail.AddAttachment oAttachments
745
       End If
746
    End If
119 ghuddy 747
 
129 ghuddy 748
   On Error Resume Next
749
   If canSend Then   Mail.Send   ' send message
119 ghuddy 750
 
751
End Sub
5168 dpurdie 752
 
753
'-----------------------------------------------------------------------------------------------------------------
754
'   Record and Report a Release Manager event
755
'       Record in the machines Event Log
756
'       Report via email
757
'   Used to report error conditions that need to be bought to the attention of some sys admin
758
'   Args:   eventType       - one of enumEVENT_* ( ie:enumEVENT_ERROR)
759
'           SSlocation      - Indication of location/operation
760
'           SSvalues        - Values. Will be added into the message
761
'           SSerror_message - Error message
762
'
763
Sub Report_Event ( eventType, SSlocation, SSvalues, SSerror_message  )
764
    On Error Resume Next
765
    Dim WshNetwork, SSmsg
766
    Set WshNetwork = Server.CreateObject("WScript.Network")
767
 
768
   ' Compose Message
769
   SSmsg = _
770
   "-- User Info  --"& VBNewLine &_
771
   "Logged In: " & objAccessControl.UserLogedIn & VBNewLine &_
772
   "Domain: " & objAccessControl.Domain & VBNewLine &_
773
   "UserName: " & objAccessControl.UserName & VBNewLine &_
774
   "FullName: " & objAccessControl.FullName & VBNewLine &_
775
   "UserEmail: " & objAccessControl.UserEmail & VBNewLine &_
776
   "UserId: " & objAccessControl.UserId & VBNewLine &_
777
   VBNewLine &_
778
   "-- Script Info  --"& VBNewLine &_
779
   "Host Name: "& Request.ServerVariables("SERVER_NAME") & ":" & Request.ServerVariables("SERVER_PORT") & VBNewLine &_
780
   "Script Name: "& Request.ServerVariables("SCRIPT_NAME") & VBNewLine &_
781
   VBNewLine &_
782
   "-- Error Location --"& VBNewLine &_
783
   SSlocation & VBNewLine &_
784
   VBNewLine &_
785
   "-- Values --"& VBNewLine &_
786
   SSvalues & VBNewLine &_
787
   VBNewLine &_
788
   "-- Error Message --"& VBNewLine &_
789
   SSerror_message & VBNewLine
790
 
791
    '-- Raise this message at these places...
792
    '-- Create an event in the system event log
793
    '-- Send out an email
794
    Call Send_Event( eventType, SSmsg )
795
    Call Send_Email ( "Release Manager Notification", _
796
                       adminEmail, _
797
                       FAULT_EMAIL_LIST, _
798
                       "Release Manager Error", _
799
                       Replace(SSmsg,VBNewLine, "<br>"), _
800
                       null )
801
 
802
    '----------------------------------------
803
   Set WshNetwork = Nothing
804
End Sub
805
 
119 ghuddy 806
'-----------------------------------------------------------------------------------------------------------------------------
5168 dpurdie 807
'   Record Event in OS log
808
'   Create an event in the system event log
809
'
810
'   Args:   eventType       - one of enumEVENT_* ( ie:enumEVENT_ERROR)
811
'           SSmsg           - Message Body
812
Sub Send_Event( eventType, SSmsg )
813
    On Error Resume Next
814
    Dim WshShell
815
    Set WshShell = Server.CreateObject("WScript.Shell")
816
    WshShell.LogEvent eventType, SSmsg
817
    Set WshShell = Nothing
818
End Sub
819
 
820
'-----------------------------------------------------------------------------------------------------------------------------
119 ghuddy 821
Sub Iterate_UP_the_tree ( NNrtag_id, HHstart_with, HHresult )
129 ghuddy 822
   Dim rsTemp, Query_String
823
   Dim seekPKGs, seekNOTpkgs
119 ghuddy 824
 
129 ghuddy 825
   seekPKGs = Join(HHstart_with.Keys, ",")
826
   If seekPKGs = "" Then seekPKGs = "-1"
827
   seekNOTpkgs = "-1"
119 ghuddy 828
 
129 ghuddy 829
   Do While seekPKGs <> "-1"
830
      Query_String = _
831
      " SELECT DISTINCT dep.pkg_id"&_
832
      "    FROM package_dependencies dep, release_content rel"&_
833
      "   WHERE rel.pv_id = dep.pv_id"&_
834
      "     AND rel.rtag_id = "& NNrtag_id &_
835
      "     AND dpkg_id IN ( "& seekPKGs &" ) "&_
836
      "     AND pkg_id NOT IN ( "& seekNOTpkgs &" )"
837
      '"     AND dep.dpv_id NOT IN ( SELECT iw.iw_id FROM ignore_warnings iw WHERE iw.rtag_id = "& NNrtag_id &" )"
838
      Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
119 ghuddy 839
 
129 ghuddy 840
      If rsTemp.RecordCount < 1 Then Exit Do
119 ghuddy 841
 
129 ghuddy 842
      seekPKGs = "-1"
843
      While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))
844
         If NOT HHresult.Exists(Cstr(rsTemp.Fields("pkg_id"))) Then HHresult.Add Cstr(rsTemp.Fields("pkg_id")), ""
845
         seekPKGs = seekPKGs &","& rsTemp.Fields("pkg_id")
846
         rsTemp.MoveNext
847
      WEnd
119 ghuddy 848
 
129 ghuddy 849
      seekNOTpkgs = seekNOTpkgs &","& seekPKGs
850
   Loop
119 ghuddy 851
 
852
End Sub
853
'-----------------------------------------------------------------------------------------------------------------------------
129 ghuddy 854
Sub Iterate_DOWN_the_tree (   NNrtag_id, HHstart_with, HHresult )
855
   Dim rsTemp, Query_String
856
   Dim seekPKGs, seekNOTpkgs
119 ghuddy 857
 
129 ghuddy 858
   seekPKGs = Join(HHstart_with.Keys, ",")
859
   If seekPKGs = "" Then seekPKGs = "-1"
860
   seekNOTpkgs = "-1"
119 ghuddy 861
 
129 ghuddy 862
   Do While seekPKGs <> "-1"
863
      Query_String = _
864
      " SELECT DISTINCT dep.dpkg_id"&_
865
      "    FROM package_dependencies dep, release_content rel"&_
866
      "   WHERE rel.pv_id = dep.pv_id"&_
867
      "     AND rel.rtag_id = "& NNrtag_id &_
868
      "     AND pkg_id IN ( "& seekPKGs &" ) "&_
869
      "     AND dpkg_id NOT IN ( "& seekNOTpkgs &" )"
870
      Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
119 ghuddy 871
 
129 ghuddy 872
      If rsTemp.RecordCount < 1 Then Exit Do
119 ghuddy 873
 
129 ghuddy 874
      seekPKGs = "-1"
875
      While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))
876
         If NOT HHresult.Exists(Cstr(rsTemp.Fields("dpkg_id"))) Then HHresult.Add Cstr(rsTemp.Fields("dpkg_id")), ""
877
         seekPKGs = seekPKGs &","& rsTemp.Fields("dpkg_id")
878
         rsTemp.MoveNext
879
      WEnd
119 ghuddy 880
 
129 ghuddy 881
      seekNOTpkgs = seekNOTpkgs &","& seekPKGs
882
   Loop
119 ghuddy 883
 
884
End Sub
885
'-----------------------------------------------------------------------------------------------------------------------------
886
Class TempSession
129 ghuddy 887
   Function Value ()
888
      Value = Session("RELEASEMANAGER_temp")
889
   End Function
119 ghuddy 890
 
129 ghuddy 891
   Sub Add ( SSstr )
892
      Session("RELEASEMANAGER_temp") = Session("RELEASEMANAGER_temp") & SSstr
893
   End Sub
119 ghuddy 894
 
129 ghuddy 895
   Sub Clean ()
896
      Session("RELEASEMANAGER_temp") = NULL
897
   End Sub
119 ghuddy 898
End Class
899
'-----------------------------------------------------------------------------------------------------------------------------
900
Sub DisplayInfo ( SSmsg, SSwidth )
129 ghuddy 901
   Dim msg
902
   If SSmsg = "" Then Exit Sub
119 ghuddy 903
 
129 ghuddy 904
   Select Case UCase( SSmsg )
905
   Case "ISSUES_IMPORTED"
906
      msg = "Import is complete. <br>Click on Close button if you are finished."
907
   Case "MAKE_OFFICIAL_WARNING"
908
      msg = "Note that making a package official will prevent any further change to it."
909
   Case "APPLY_LABEL_TO_ALL_WARNING"
910
      msg = "This will overwrite any existing labels on selected packages."
911
   Case "BLANK_LABEL_WARNING"
912
      msg = "Some dependencies in the export list above, do not have a label!"
913
   Case "PERSONAL_VIEW_NOT_SETUP"
914
      msg = "<span class='err_alert'><b>Your View is not setup!</b></span><span class='sublbox_txt'><br><br>Either set your view using My&nbsp;Account&nbsp;&gt;&nbsp;Views menu<br><br>OR<br><br>switch to Base view (Full view) by clicking on <img src='images/abtn_personal_view.gif' width='25' height='25' border='0'> icon above.</span>"
915
   Case "EMPTY_RELEASE_CONTENTS"
916
      msg = "<span class='err_alert'><b>Release content is empty!</b></span><span class='sublbox_txt'><br><br>Use + button to add packages to a release.</span>"
917
   Case "PKG_NAME_REQUIRED"
918
      msg = "<span class='err_alert'><b>Package Name required!</b></span><span class='sublbox_txt'><br>You are required to select at least one package name.</span>"
919
   Case "ADD_PATCH_WARNING"
920
      msg = "Note that patches cannot be used in your build dependencies."
921
   Case "NEW_PATCH_AVAILABLE"
922
      msg = "<b>New Patch is Required</b><br>One or more Build Dependencies have been patched.<br>Please click Add button to create patch for this package."
119 ghuddy 923
 
129 ghuddy 924
   Case "NOT_FOUND_IN_PKG_ARCHIVE_RELEASE_NOTES"
5142 dpurdie 925
      msg = "<b>Regenerating release notes...</b><br>It may take a minute. Please try refreshing this page a bit later."
129 ghuddy 926
   Case "FAILED_GENERATING_RELEASE_NOTES"
927
      msg = "<span class='err_alert'><b>Failed generating release notes!</b></span><br>Please contact the <a href='mailto:"& adminEmail&"' class='txt_linked'>Administrator</a>"
928
   Case "GENERATING_RELEASE_NOTES"
929
      msg = "<b>Generating release notes...</b><br>It may take a minute. Please try refreshing this page a bit later."
930
   Case "NO_PREVIOUS_VERSION_RELEASE_NOTES"
931
       msg = "<b>Previous Version is Unknown</b>!<br>Please specify previous version by clicking on 'Show Details...' above.<br>Release notes are not generated."
4705 dpurdie 932
   Case "RELEASE_NOTES_PLACEHOLDER_PACKAGE"
933
       msg = "<b>Place Holing Package</b>!<br>This package is manually built, does not have a build standard and does not exist in dpkg_archive. It is used as a placeholder.<br>Release notes are not generated."
119 ghuddy 934
 
129 ghuddy 935
   Case "PACKAGE_FOUND_IN_OTHER_LOCATIONS"
936
      msg = "This package is also found in other locations."
937
   Case "DOC_NUMBER_NOTFOUND"
938
      msg = "<span class='err_alert'>Document number "& Request("doc_num") &" does not correspond to any document!</span>"
939
   Case "DOC_NUMBER_FOUND"
940
      msg = "Document found. Click &quot;Import&quot; to link the document."
941
   Case "UNIT_TEST_NOT_DONE"
942
      msg = "<b>Unit test is Not Done!</b><br><a href='javascript:;' onClick=""MM_openBrWindow('_wform_reason_for_unit_test_not_done.asp?pv_id="& Request("pv_id") &"&rtag_id="& Request("rtag_id") &"','ReasonForNotDone','resizable=yes,width=400,height=250')"" class='txt_linked'>Click here</a> to supply/edit reason."
943
   Case "PACKAGE_NOT_PART_OF_RELEASE"
944
      msg = "<b>Package is Not Part of This Release Anymore!</b><br>This package cannot be found in the list on the left-hand side.<br>You can use 'lookup:' on the left-hand side to find the package inside this release. "
119 ghuddy 945
 
129 ghuddy 946
   Case "NOT_FOUND_IN_PKG_ARCHIVE_FILE_GENERATE"
5172 dpurdie 947
      msg = "<b>This package is not found in dpkg_archive!</b><br>Files and folders are not captured."
129 ghuddy 948
   Case "NO_PRODUCT_FILES_CAPTURED"
949
      msg = "<b>Files and Folders not found for this product!</b><br>Capture of product components can only be done during the build time."
119 ghuddy 950
 
129 ghuddy 951
   Case "MASS REF REFERENCE"
952
      msg = "<span class='err_alert'><b>New Version can only be created in the Release's associated MASS REF: <a href=""dependencies.asp?pv_id="& pkgInfoHash.Item("pv_id") &"&rtag_id="& AssocMASSREFValue &""">"& pkgInfoHash.Item("pkg_name") &" "& pkgInfoHash.Item("pkg_version") &"</a></b></span>"
119 ghuddy 953
 
129 ghuddy 954
   Case "REPEAT_SCHEDULE_NOT_SELECTED"
955
      msg = "<span class='err_alert'><b>YOU MUST SELECT A VALUE FOR REPEAT SCHEDULED DOWNTIME</b></span>"
119 ghuddy 956
 
129 ghuddy 957
   Case "PKG_NAME_INVALID"
958
      msg = "<span class='err_alert'><b>Package Name Invalid!</b></span><span class='sublbox_txt'><br>This package name is invalid. Package names must only consist of alpha-numeric characters, underscores and dashes (A-Z 0-9 _ -), and cannot include spaces or any other symbols.</span>"
119 ghuddy 959
 
129 ghuddy 960
   Case "PKG_NAME_EXISTS"
961
      msg = "<span class='err_alert'><b>Package Name Already Exists!</b></span><span class='sublbox_txt'><br>This package name already exists, please try again.</span>"
119 ghuddy 962
 
129 ghuddy 963
   End Select
119 ghuddy 964
%>
965
<table width="<%=SSwidth%>" border="0" cellspacing="0" cellpadding="1">
966
  <tr>
967
    <td background="images/bg_bage_dark.gif">
129 ghuddy 968
     <table width="100%" border="0" cellspacing="0" cellpadding="3">
119 ghuddy 969
        <tr>
970
          <td width="1%" valign="top" background="images/bg_help.gif"><img src="images/i_qhelp.gif" width="16" height="16"></td>
971
          <td width="100%" background="images/bg_help.gif" class="form_txt"><%=msg%></td>
972
        </tr>
973
      </table></td>
974
  </tr>
975
</table>
976
<br>
977
<%
978
 
979
End Sub
980
'-----------------------------------------------------------------------------------------------------------------------------
981
Sub Messenger ( sMessage, nMessageType, sWidth )
129 ghuddy 982
   Dim msgTemplate, Img
119 ghuddy 983
 
129 ghuddy 984
   If (sMessage = "") OR IsNull(sMessage) Then Exit Sub
119 ghuddy 985
 
129 ghuddy 986
   Select Case CStr(nMessageType)
987
      Case "1"
988
         Img = "s_critical.gif"
989
      Case "2"
990
         Img = "s_warning.gif"
991
      Case "3"
992
         Img = "s_note.gif"
993
      Case Else
994
         Img = nMessageType
995
   End Select
119 ghuddy 996
 
997
 
129 ghuddy 998
   msgTemplate = ReadFile( APP_ROOT &"\scripts\message_style.html" )
999
   msgTemplate = Replace( msgTemplate, "%WIDTH%", sWidth )
1000
   msgTemplate = Replace( msgTemplate, "%IMAGE%", Img )
1001
   msgTemplate = Replace( msgTemplate, "%MESSAGE%", sMessage )
119 ghuddy 1002
 
129 ghuddy 1003
   Response.write msgTemplate
119 ghuddy 1004
End Sub
1005
'-----------------------------------------------------------------------------------------------------------------------------
4203 dpurdie 1006
Function Default_Label ( SSpv_id, SSbuild_type, SSchange_type, SSpkg_name, SSpkg_version, SSv_ext )
3959 dpurdie 1007
    If SSbuild_type = "A" Then
4203 dpurdie 1008
        If  SSchange_type = "F" Then
1009
            Default_Label = SSpkg_name & "_" & SSpkg_version & ".WIP"
1010
        else
1011
            Default_Label = UCase(SSpkg_name & "." & SSpv_id & SSv_ext) & ".WIP"
1012
        End If
3959 dpurdie 1013
    Else
4203 dpurdie 1014
        Default_Label = SSpkg_name & "_" & SSpkg_version
3959 dpurdie 1015
    End If
119 ghuddy 1016
End Function
1017
'-----------------------------------------------------------------------------------------------------------------------------
1018
Function Format_Version ( SSpkg_version, SSv_ext )
129 ghuddy 1019
   Dim tempArr, tempVersion, patchArr, seg, myVersion
1020
   myVersion = SSpkg_version
119 ghuddy 1021
 
129 ghuddy 1022
   If NOT IsNull(SSv_ext) Then
1023
      myVersion = Left ( myVersion, Len(myVersion) - Len(SSv_ext) )
1024
   End If
119 ghuddy 1025
 
129 ghuddy 1026
   tempArr = Split (myVersion, ".")
1027
   For Each seg In tempArr
1028
      If Len(seg) < 2 Then
1029
         ' single digit number
1030
         tempVersion = tempVersion &"0"& seg
119 ghuddy 1031
 
129 ghuddy 1032
      Else
1033
         seg = Replace(seg, "_", "-")   ' make sure that there is no _ in segment
1034
         If InStr( seg, "-" ) > 0 Then
1035
            ' patch version supplied
1036
            patchArr = Split(seg, "-")
1037
            If Len(patchArr(0)) < 2 Then
1038
               ' single digit number
1039
               tempVersion = tempVersion &"0"& patchArr(0) &"_0"& patchArr(1)
1040
            Else
1041
               ' double digit number
1042
               tempVersion = tempVersion & patchArr(0) &"_0"& patchArr(1)
1043
            End If
119 ghuddy 1044
 
129 ghuddy 1045
         Else
1046
            ' double digit no patch
1047
            tempVersion = tempVersion & seg
1048
         End If
119 ghuddy 1049
 
129 ghuddy 1050
      End If
119 ghuddy 1051
 
129 ghuddy 1052
   Next
119 ghuddy 1053
 
129 ghuddy 1054
   Format_Version = tempVersion
119 ghuddy 1055
End Function
1056
'-----------------------------------------------------------------------------------------------------------------------------
1057
Function DefineStateIcon ( NNpkg_state, CCdlocked, sIgnoreWarnings, cIsPatchIgnore, cBuildType, bForEnvironment )
1058
 
129 ghuddy 1059
   If NOT IsNull(sIgnoreWarnings) Then
1060
      '-- Ignore Warning is on
1061
      If IsNull(cIsPatchIgnore) Then
1062
         DefineStateIcon = enum_imgIgnoring
1063
      Else
1064
         DefineStateIcon = enum_imgPatchIgnoring
1065
      End If
119 ghuddy 1066
 
129 ghuddy 1067
   Else
1068
      Select Case CInt( NNpkg_state )
1069
         Case enumPKG_STATE_OK
183 brianf 1070
            If (CCdlocked = "N") OR (CCdlocked = "R") Then
129 ghuddy 1071
               DefineStateIcon = enum_imgBuilding
183 brianf 1072
            ElseIf (CCdlocked = "P") Then
1073
               DefineStateIcon = enum_imgPending
129 ghuddy 1074
            Else
1075
               DefineStateIcon = enum_imgBlank
1076
            End If
119 ghuddy 1077
 
129 ghuddy 1078
         Case enumPKG_STATE_MAJOR
1079
            DefineStateIcon = enum_imgCritical
119 ghuddy 1080
 
129 ghuddy 1081
         Case enumPKG_STATE_MINOR
1082
            DefineStateIcon = enum_imgWarning
119 ghuddy 1083
 
129 ghuddy 1084
         Case enumPKG_STATE_MAJOR_READY
1085
            DefineStateIcon = enum_imgCReady
119 ghuddy 1086
 
129 ghuddy 1087
         Case enumPKG_STATE_MINOR_READY
1088
            DefineStateIcon = enum_imgWReady
119 ghuddy 1089
 
129 ghuddy 1090
         Case enumPKG_NOT_FOUND
1091
            DefineStateIcon = enum_imgNotFound
119 ghuddy 1092
 
129 ghuddy 1093
         Case enumPKG_STATE_NEW_PATCH
1094
            DefineStateIcon = enum_imgPatchAvailable
119 ghuddy 1095
 
129 ghuddy 1096
         Case enumPKG_STATE_DEPRECATED
1097
            DefineStateIcon = enum_imgDeprecated
119 ghuddy 1098
 
129 ghuddy 1099
         Case enumPKG_STATE_DEPRECATED_DEPENDENT
1100
            DefineStateIcon = enum_imgDeprecatedDependent
119 ghuddy 1101
 
129 ghuddy 1102
         Case enumPKG_ADVISORY_RIPPLE
1103
            DefineStateIcon = enum_imgAR
119 ghuddy 1104
 
129 ghuddy 1105
         Case enumPKG_ADVISORY_RIPPLE_DEPENDENT
1106
            DefineStateIcon = enum_imgARD
119 ghuddy 1107
 
131 ghuddy 1108
         Case enumPKG_PEGGED_VERSION
1109
            DefineStateIcon = enum_imgGreenPin
5080 dpurdie 1110
 
1111
         Case enumPKG_SDK_IMPORT
1112
            DefineStateIcon = enum_imgSdkImport
1113
 
1114
         Case enumPKG_SDK_DEPENDENCY
1115
            DefineStateIcon = enum_imgSdkDep
1116
 
129 ghuddy 1117
      End Select
119 ghuddy 1118
 
129 ghuddy 1119
      If (NOT bForEnvironment) AND _
1120
         (cBuildType = "A") AND _
1121
         (CCdlocked <> "Y") AND _
1122
         (DefineStateIcon <> enum_imgBlank) AND _
1123
         (DefineStateIcon <> enum_imgBuilding)  AND  _
1124
         (DefineStateIcon <> enum_imgNotFound) OR _
1125
         ( Request("rtag_id") = ""  AND  Request("FRrtag_id") = "")  _
1126
         Then
119 ghuddy 1127
 
129 ghuddy 1128
         DefineStateIcon = ""
119 ghuddy 1129
 
129 ghuddy 1130
       End If
4390 dpurdie 1131
   End If
1132
End Function
1133
'-----------------------------------------------------------------------------------------------------------------------------
1134
Function DefineStateIconSimple ( NNpkg_state, CCdlocked)
119 ghuddy 1135
 
4390 dpurdie 1136
      DefineStateIconSimple = ""
1137
      Select Case CInt( NNpkg_state )
1138
         Case enumPKG_STATE_OK
1139
            If (CCdlocked = "R") OR (CCdlocked = "A") Then
1140
               DefineStateIconSimple = enum_imgBuilding
1141
            ElseIf (CCdlocked = "P") Then
1142
               DefineStateIconSimple = enum_imgPending
1143
            ElseIf (CCdlocked = "Y") Then
1144
               DefineStateIconSimple = enum_imgReleasedLocked
1145
            ElseIf (CCdlocked = "N") Then
1146
               DefineStateIconSimple = enum_imgReleasedUnlocked
1147
            Else
1148
               DefineStateIconSimple = enum_imgBlank
1149
            End If
119 ghuddy 1150
 
4390 dpurdie 1151
         Case enumPKG_STATE_MAJOR
1152
            DefineStateIconSimple = enum_imgCritical
119 ghuddy 1153
 
4390 dpurdie 1154
         Case enumPKG_STATE_MINOR
1155
            DefineStateIconSimple = enum_imgWarning
119 ghuddy 1156
 
4390 dpurdie 1157
         Case enumPKG_STATE_MAJOR_READY
1158
            DefineStateIconSimple = enum_imgCReady
1159
 
1160
         Case enumPKG_STATE_MINOR_READY
1161
            DefineStateIconSimple = enum_imgWReady
1162
 
1163
         Case enumPKG_NOT_FOUND
1164
            DefineStateIconSimple = enum_imgNotFound
1165
 
1166
         Case enumPKG_STATE_NEW_PATCH
1167
            DefineStateIconSimple = enum_imgPatchAvailable
1168
 
1169
         Case enumPKG_STATE_DEPRECATED
1170
            DefineStateIconSimple = enum_imgDeprecated
1171
 
1172
         Case enumPKG_STATE_DEPRECATED_DEPENDENT
1173
            DefineStateIconSimple = enum_imgDeprecatedDependent
1174
 
1175
         Case enumPKG_ADVISORY_RIPPLE
1176
            DefineStateIconSimple = enum_imgAR
1177
 
1178
         Case enumPKG_ADVISORY_RIPPLE_DEPENDENT
1179
            DefineStateIconSimple = enum_imgARD
1180
 
1181
         Case enumPKG_PEGGED_VERSION
1182
            DefineStateIconSimple = enum_imgGreenPin
5080 dpurdie 1183
 
1184
         Case enumPKG_SDK_IMPORT
5085 dpurdie 1185
            DefineStateIconSimple = enum_imgSdkImport
5080 dpurdie 1186
 
1187
         Case enumPKG_SDK_DEPENDENCY
5085 dpurdie 1188
            DefineStateIconSimple = enum_imgSdkDep
5080 dpurdie 1189
 
4390 dpurdie 1190
      End Select
119 ghuddy 1191
End Function
1192
'-----------------------------------------------------------------------------------------------------------------------------
1193
Function DefineStateSmallIcon ( NNpkg_state, CCdlocked )
129 ghuddy 1194
   Select Case CInt( NNpkg_state )
1195
   Case enumPKG_STATE_OK
1196
      If CCdlocked = "N" Then
1197
         DefineStateSmallIcon = enum_SMALL_imgBuilding
1198
      Else
1199
         DefineStateSmallIcon = enum_SMALL_imgOK
1200
      End If
119 ghuddy 1201
 
129 ghuddy 1202
   Case enumPKG_STATE_MAJOR
1203
      DefineStateSmallIcon = enum_SMALL_imgCritical
119 ghuddy 1204
 
129 ghuddy 1205
   Case enumPKG_STATE_MINOR
1206
      DefineStateSmallIcon = enum_SMALL_imgWarning
119 ghuddy 1207
 
129 ghuddy 1208
   Case enumPKG_STATE_MAJOR_READY
1209
      DefineStateSmallIcon = enum_SMALL_imgCReady
119 ghuddy 1210
 
129 ghuddy 1211
   Case enumPKG_STATE_MINOR_READY
1212
      DefineStateSmallIcon = enum_SMALL_imgWReady
119 ghuddy 1213
 
129 ghuddy 1214
   End Select
119 ghuddy 1215
End Function
1216
'-----------------------------------------------------------------------------------------------------------------------------
1217
Function PatchIcon ( cIsPatch, cIsPatchObsolete )
129 ghuddy 1218
   If IsNull(cIsPatch) Then
1219
      PatchIcon = "<img src='images/rex_images/ext_blank.gif' width='16' height='16' border='0' align='absmiddle'>"
1220
   Else
1221
      If IsNull(cIsPatchObsolete) Then
1222
         PatchIcon = "<img src='images/i_patch_small.gif' width='16' height='16' border='0' align='absmiddle' >"
1223
      Else
1224
         PatchIcon = "<img src='images/i_patch_small_obsolete.gif' width='16' height='16' border='0' align='absmiddle' title='Patch is obsolete'>"
1225
      End If
1226
   End If
119 ghuddy 1227
End Function
1228
'-----------------------------------------------------------------------------------------------------------------------------
1229
' Function that returns true of false if the item exists in the array
1230
'-----------------------------------------------------------------------------------------------------------------------------
1231
Function inArray(item, aItems)
129 ghuddy 1232
   Dim element
1233
   inArray = false
1234
   for each element in aItems
1235
      If element = item Then
1236
         inArray=true
1237
      End If
1238
   next
119 ghuddy 1239
End Function
1240
'-----------------------------------------------------------------------------------------------------------------------------
1241
Function ProgressBar ()
129 ghuddy 1242
   ProgressBar = "<DIV name='divProgressBar' id='divProgressBar' style='visibility:hidden;'><img src='icons/i_processing.gif' width='79' height='14'></DIV>"
119 ghuddy 1243
End Function
1244
'-----------------------------------------------------------------------------------------------------------------------------
1245
Function GetCurrentParameters( nProjId, nRtagId, nPvId )
129 ghuddy 1246
   Dim rsQry,query
119 ghuddy 1247
 
129 ghuddy 1248
   ' Set defaults
1249
   nProjId    = -1
1250
   nRtagId    = -1
1251
   nPvId       = -1
119 ghuddy 1252
 
129 ghuddy 1253
   ' Get parameters from database
5102 dpurdie 1254
   OraDatabase.Parameters.Add "ProjId",        Request("proj_id"),   ORAPARM_INPUT, ORATYPE_VARCHAR2
129 ghuddy 1255
   OraDatabase.Parameters.Add "Rtag_id",       Request("rtag_id"),   ORAPARM_INPUT, ORATYPE_VARCHAR2
1256
   OraDatabase.Parameters.Add "results",       NULL, ORAPARM_OUTPUT, ORATYPE_CURSOR
119 ghuddy 1257
 
129 ghuddy 1258
   OraDatabase.ExecuteSQL " BEGIN  PK_APP_UTILS.GET_CURRENT_PARAMETERS ( :ProjId, :Rtag_id, :results ); END;"
119 ghuddy 1259
 
129 ghuddy 1260
   Set rsQry = OraDatabase.Parameters("results").Value
119 ghuddy 1261
 
129 ghuddy 1262
   OraDatabase.Parameters.Remove "ProjId"
1263
   OraDatabase.Parameters.Remove "Rtag_id"
1264
   OraDatabase.Parameters.Remove "results"
119 ghuddy 1265
 
1266
 
129 ghuddy 1267
   If rsQry.RecordCount > 0 Then
1268
      nProjId    = CDbl(rsQry("PROJ_ID"))
1269
      nRtagId    = CDbl(rsQry("RTAG_ID"))
119 ghuddy 1270
 
129 ghuddy 1271
   End If
119 ghuddy 1272
 
129 ghuddy 1273
   rsQry.Close()
1274
   Set rsQry = nothing
119 ghuddy 1275
 
1276
 
129 ghuddy 1277
   ' Set pv_id parameter
1278
   If Request("pv_id") <> "" Then nPvId = CDbl(Request("pv_id"))
119 ghuddy 1279
 
1280
 
1281
End Function
1282
'-----------------------------------------------------------------------------------------------------------------------------
1283
Function GetEnvName ( nEnvTab )
129 ghuddy 1284
   Select Case CInt( nEnvTab )
1285
      Case enumENVTAB_WORK_IN_PROGRESS
1286
         GetEnvName = "Work In Progress"
119 ghuddy 1287
 
129 ghuddy 1288
      Case enumENVTAB_PLANNED
1289
         GetEnvName = "Pending"
119 ghuddy 1290
 
129 ghuddy 1291
      Case enumENVTAB_RELEASED
1292
         GetEnvName = "Released"
119 ghuddy 1293
 
129 ghuddy 1294
   End Select
119 ghuddy 1295
 
1296
End Function
1297
'-----------------------------------------------------------------------------------------------------------------------------
1298
Function Title (rtagId)
1299
 
129 ghuddy 1300
   If rtagId = "" Then
1301
      Title = "Release Manager"
1302
   Else
1303
      Set rsQry = OraDatabase.DbCreateDynaset( "SELECT RT.RTAG_NAME, P.PROJ_NAME FROM PROJECTS P, RELEASE_TAGS RT WHERE RT.PROJ_ID = P.PROJ_ID AND RT.RTAG_ID="& rtagId, ORADYN_DEFAULT )
1304
      Title = rsQry("proj_name")&">"&rsQry("rtag_name")
1305
      rsQry.Close()
1306
      Set rsQry = Nothing
1307
   End If
119 ghuddy 1308
 
1309
End Function
1310
'-------------------------------------------------------------------------------------
1311
Function Check_Package_WIP_Already_Exists(NNrtag_id, NNpv_id)
129 ghuddy 1312
   Dim Query_String, rsQry
119 ghuddy 1313
 
129 ghuddy 1314
   Query_String = _
1315
   "   SELECT * "&_
1316
   "   FROM planned pl, package_versions pv "&_
1317
   "   WHERE pl.rtag_id = "& NNrtag_id &_
1318
   "   AND pv.pv_id = pl.pv_id "&_
1319
   "   AND pv.dlocked = 'A' "&_
1320
   "   AND pv.pkg_id = (SELECT pkg_id "&_
1321
       "                  FROM package_versions "&_
1322
       "                 WHERE pv_id = "& NNpv_id &") "&_
1323
   "   AND pv.v_ext = (SELECT v_ext "&_
1324
   "                  FROM package_versions "&_
1325
       "                 WHERE pv_id = "& NNpv_id &")"
119 ghuddy 1326
 
1327
 
129 ghuddy 1328
   Set rsQry = OraDatabase.DbCreateDynaset( Query_String , cint(0) )
119 ghuddy 1329
 
129 ghuddy 1330
   Check_Package_WIP_Already_Exists = rsQry.RecordCount
119 ghuddy 1331
 
129 ghuddy 1332
   rsQry.Close()
1333
   Set rsQry = Nothing
119 ghuddy 1334
End Function
1335
'-----------------------------------------------------------------------------------------------------------------------------
1336
Function ValidateCodeReviewURL ( sCodeReviewURL )
1337
  Dim isValid
1338
  Dim sTempBaseURL
1339
  Dim httpRegEx
129 ghuddy 1340
   Set httpRegEx = new RegExp
119 ghuddy 1341
 
129 ghuddy 1342
   httpRegEx.Pattern = "^https?:\/\/"
119 ghuddy 1343
 
129 ghuddy 1344
   ' Removes ending slash from project's base URL for ease of comparison.
1345
   sTempBaseURL = Left(baseURL, Len(baseURL)-1)
1346
   ' Removes the project's base URL from the URL specified (if it's present).
1347
   codeReviewURL = Replace(sCodeReviewURL, sTempBaseURL, "")
1348
   ' Removes the slash from the beginning of the resulting URL (if it's present).
1349
   If InStr(codeReviewURL, "/") = 1 Then
1350
     codeReviewURL = Replace(codeReviewURL, "/", "", 1, 1)
1351
   End If
119 ghuddy 1352
 
129 ghuddy 1353
   ' If the URL doesn't contain the http:// prefix, assume that it's correct.
1354
   If NOT httpRegEx.Test(codeReviewURL) AND Len(codeReviewURL) > 0 Then
1355
     isValid = True
1356
   Else
1357
     ' If the URL still contains the http:// prefix and is longer than the base
1358
     ' URL, assume that it is an invalid URL because of a differing base URL.
1359
     If Len(sCodeReviewURL) > Len(baseURL) Then
1360
       Response.Write("<script type='text/javascript'>alert('Incorrect Base URL\n\nMust start with project\'s base url (" & baseURL &") if full URL specified.')</script>")
1361
     Else
1362
     ' If the URL still contains the http:// prefix and is shorter than the base
1363
     ' URL, assume that it is incomplete.
1364
       Response.Write("<script type='text/javascript'>alert('Incomplete Code Review URL')</script>")
1365
     End If
1366
     ' Otherwise, the URL matches the base URL exactly, which is also invalid.
1367
     codeReviewURL = sCodeReviewURL
1368
     isValid = False
1369
   End If
1370
   ValidateCodeReviewURL = isValid
119 ghuddy 1371
End Function
1372
'----------------------------------------------------------------------------------------------------------------------------------------
1373
Function Is_Page_Editable ( cDlocked )
129 ghuddy 1374
   ' Editable if (   (unlocked OR rejected)
1375
   '              OR ( NOT released/locked AND EditReleaseNotesInPending allowed)
1376
   '              OR (released/locked AND EditNonCriticalInfoForLockedPackage allowed)
1377
   '             )
1378
   '             AND user logged in
5061 dpurdie 1379
   If (((cDlocked = "N") OR (cDlocked = "R")) OR ((cDlocked <> "Y") AND (canActionControlInProject("EditReleaseNotesInPending"))) OR ((cDlocked = "Y") AND (canActionControlInProject("EditNonCriticalInfoForLockedPackage")))) AND objAccessControl.UserLogedIn Then
129 ghuddy 1380
      Is_Page_Editable = TRUE
1381
   Else
1382
      Is_Page_Editable = FALSE
1383
   End If
119 ghuddy 1384
End Function
1385
'----------------------------------------------------------------------------------------------------------------------------------------
1386
Function Is_Section_Editable ( )
129 ghuddy 1387
   If scriptName = "fixed_issues.asp" AND objAccessControl.UserLogedIn Then
1388
      Is_Section_Editable = TRUE
1389
   Else
1390
      Is_Section_Editable = FALSE
1391
   End If
119 ghuddy 1392
End Function
1393
'----------------------------------------------------------------------------------------------------------------------------------------
1394
Function Is_Critical_Section_Editable ( cDlocked )
129 ghuddy 1395
   ' Editable if (   (unlocked OR rejected)
1396
   '              OR ( NOT released/locked AND EditReleaseNotesInPending allowed)
1397
   '              OR (released/locked AND EditCriticalInfoForLockedPackage allowed)
1398
   '             )
1399
   '             AND user logged in
5061 dpurdie 1400
   If (((cDlocked = "N") OR (cDlocked = "R")) OR ((cDlocked <> "Y") AND (canActionControlInProject("EditReleaseNotesInPending"))) OR ((cDlocked = "Y") AND (canActionControlInProject("EditCriticalInfoForLockedPackage")))) AND objAccessControl.UserLogedIn Then
129 ghuddy 1401
      Is_Critical_Section_Editable = TRUE
1402
   Else
1403
      Is_Critical_Section_Editable = FALSE
1404
   End If
119 ghuddy 1405
End Function
1406
 
1407
'---------------------------------------------------------------
1408
' Function: Codestriker_Command
1409
'
1410
' Purpose:   Forms a codestriker differencing command for use when
1411
'            preparing codestriker reviews. This will be used mainly
1412
'            on release notes pages.
1413
'
1414
' Arguments: old_label   : The previous or older label
1415
'            new_label   : The current or newer label
1416
'
1417
Function Codestriker_Command (oldLabel, new_label)
1418
 
129 ghuddy 1419
   If ( IsNull(new_label) ) Then
1420
      Codestriker_Command = "Label not defined"
1421
   ElseIf (IsNull(oldLabel) OR oldLabel = "" ) Then
1422
      Codestriker_Command = "jats CCdiff -new=" & new_label
1423
   Else
1424
      Codestriker_Command = "jats CCdiff -old=" & oldLabel & " -new=" & new_label
1425
   End If
119 ghuddy 1426
End Function
1427
 
1428
'---------------------------------------------------------------
1429
' Function: getLastNonRippleVersionPVID
1430
'
1431
' Purpose: returns the last non-ripple version of the package
1432
'
1433
' Arguments: this_pv_id : string
1434
'
1435
' Notes: In the past, users used to manually perform ripple builds.
1436
'        This function does not detect those as ripples. It could be
1437
'        made to do so but it would not be reliable. For example, it
1438
'        could check to see if the word "ripple" appears in the
1439
'        comments field of the record set of the SWL query.  That
1440
'        might catch some of those records, but assumes the user
1441
'        wrote the wor ripple into the comments (reason for version).
1442
'
1443
Function getLastNonRippleVersionPVID( this_pv_id )
129 ghuddy 1444
   Dim queryResult
1445
   Dim queryString
1446
   Dim finalPVID
1447
   Dim lastPVID
119 ghuddy 1448
 
129 ghuddy 1449
   ' default return value in case we never get into the loop
1450
   finalPVID = this_pv_id
119 ghuddy 1451
 
129 ghuddy 1452
   ' Get record for this PVID
157 ghuddy 1453
   queryString = "SELECT build_type, last_pv_id FROM package_versions WHERE pv_id = " & this_pv_id
119 ghuddy 1454
 
129 ghuddy 1455
   Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))
119 ghuddy 1456
 
129 ghuddy 1457
    If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then
119 ghuddy 1458
 
129 ghuddy 1459
      ' If this version is a ripple built version, begin the process of finding its ancestral non-ripple built version
1460
      If (queryResult("build_type") = "Y") Then
119 ghuddy 1461
 
129 ghuddy 1462
         lastPVID = queryResult("last_pv_id")
119 ghuddy 1463
 
129 ghuddy 1464
         ' We know we have some ripple built versions now, so arm the finalPVID for loop control
1465
         finalPVID = ""
119 ghuddy 1466
 
129 ghuddy 1467
         ' Work back through the version history until we hit a record that is not a ripple build version
1468
         Do While ((NOT queryResult.BOF) AND (NOT queryResult.EOF) AND (NOT IsNull(lastPVID)) AND (finalPVID = ""))
119 ghuddy 1469
 
157 ghuddy 1470
            queryString = "SELECT build_type, last_pv_id FROM package_versions WHERE pv_id = " & lastPVID
119 ghuddy 1471
 
129 ghuddy 1472
            Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))
119 ghuddy 1473
 
129 ghuddy 1474
            ' if the package version is a ripple built one, go round the loop again, else trigger a loop exit
1475
            If ((NOT queryResult.BOF) AND (NOT queryResult.EOF) AND ( queryResult("build_type") = "Y")) Then
1476
               lastPVID  = queryResult("last_pv_id")
1477
            Else
1478
               finalPVID = lastPVID
1479
            End If
1480
         Loop
1481
      End If
1482
   End If
119 ghuddy 1483
 
129 ghuddy 1484
   queryResult.Close()
1485
   Set queryResult = nothing
119 ghuddy 1486
 
129 ghuddy 1487
   getLastNonRippleVersionPVID = finalPVID
119 ghuddy 1488
End Function
1489
 
159 ghuddy 1490
Function getLastNonRippleVersionPVIDLimitedByDate( this_pv_id, limitDate )
1491
   Dim queryResult
1492
   Dim queryString
1493
   Dim finalPVID
1494
   Dim lastPVID
1495
 
1496
   ' default return value in case we never get into the loop
1497
   finalPVID = this_pv_id
1498
 
1499
   ' Get record for this PVID
1500
   queryString = "SELECT build_type, last_pv_id FROM package_versions WHERE pv_id = " & this_pv_id
1501
 
1502
   Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))
1503
 
1504
   If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then
1505
 
1506
      ' If this version is a ripple built version, begin the process of finding its ancestral non-ripple built version
1507
      If (queryResult("build_type") = "Y") Then
1508
 
1509
         lastPVID = queryResult("last_pv_id")
1510
 
1511
         ' We know we have some ripple built versions now, so arm the finalPVID for loop control
1512
         finalPVID = ""
1513
 
1514
         ' Work back through the version history until we hit a record that is not a ripple build version
1515
         Do While ((NOT queryResult.BOF) AND (NOT queryResult.EOF) AND (NOT IsNull(lastPVID)) AND (finalPVID = ""))
1516
 
1517
            queryString = "SELECT build_type, last_pv_id FROM package_versions "&_
1518
                          " WHERE pv_id = " & lastPVID &_
1519
                          "   AND MODIFIED_STAMP >= TO_DATE('" & limitDate & "','DD/MM/YYYY')"
1520
 
1521
            Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))
1522
 
1523
            ' if the package version is a ripple built one, go round the loop again, else trigger a loop exit
1524
            If ((NOT queryResult.BOF) AND (NOT queryResult.EOF) AND ( queryResult("build_type") = "Y")) Then
1525
               lastPVID  = queryResult("last_pv_id")
1526
            Else
1527
               finalPVID = lastPVID
1528
            End If
1529
         Loop
1530
      End If
1531
   End If
1532
 
1533
   queryResult.Close()
1534
   Set queryResult = nothing
1535
 
1536
   getLastNonRippleVersionPVIDLimitedByDate = finalPVID
1537
End Function
1538
 
1539
 
119 ghuddy 1540
'---------------------------------------------------------------
1541
' Function: getPreviousVersionPVID
1542
'
1543
' Purpose: returns the immediate predecssor version of the given
1544
'          package version
1545
'
1546
' Arguments: this_pv_id : string
1547
'
1548
' Notes:
1549
'
1550
Function getPreviousVersionPVID( this_pv_id )
129 ghuddy 1551
   Dim queryResult
1552
   Dim queryString
119 ghuddy 1553
 
129 ghuddy 1554
   getPreviousVersionPVID = ""
119 ghuddy 1555
 
157 ghuddy 1556
   queryString = "SELECT last_pv_id FROM package_versions WHERE pv_id = " & this_pv_id
119 ghuddy 1557
 
129 ghuddy 1558
   Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))
119 ghuddy 1559
 
129 ghuddy 1560
    If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then
1561
      getPreviousVersionPVID = queryResult("last_pv_id")
1562
   End If
119 ghuddy 1563
 
129 ghuddy 1564
   queryResult.Close()
1565
   Set queryResult = nothing
119 ghuddy 1566
 
1567
End Function
1568
 
1569
'---------------------------------------------------------------
129 ghuddy 1570
' Function: getLastSignificantPVID
1571
'
1572
' Purpose: Returns the last significant (man-made) version (PV_ID) that
1573
'          is a predecessor to the specified pv_id
1574
'
1575
' Arguments: pv_id       : Uniquely identifies this package version
1576
'            last_pv_id  : Uniquely identifies the predecssor of this package version
1577
' Notes:
1578
'
1579
Function getLastSignificantPVID (pv_id, last_pv_id)
1580
 
1581
   getLastSignificantPVID = ""
1582
 
1583
   If( (NOT IsNull(last_pv_id)) AND (last_pv_id <> pv_id) ) Then
1584
 
1585
      ' Get the pv_id for the current version, and if necessary, work back through any ripple versions as necessary
1586
      ' to get a non-ripple version ancestor
1587
        pv_id = getLastNonRippleVersionPVID( pv_id )
1588
      If (pv_id <> "") Then
1589
         ' get the pv_id of the previous version to the non-ripple version ancestor we just found.
1590
         ' It does not matter if we get a ripple version here. It is good enough to serve the purpose of version diff'ing
1591
         pv_id = getPreviousVersionPVID( pv_id )
1592
         If (pv_id <> "") Then
1593
            getLastSignificantPVID = pv_id
1594
         End If
1595
      End If
1596
 
1597
   End If
1598
 
1599
End Function
1600
'---------------------------------------------------------------
1601
' Function: get_Pkg_Label
1602
'
1603
' Purpose: Returns the package label for the specified pv_id
1604
'
1605
' Arguments: pv_id       : Uniquely identifies this package version
1606
'
1607
Function get_Pkg_Label (pv_id)
1608
   Dim queryResult
1609
   Dim queryString
1610
 
1611
   get_Pkg_Label = ""
1612
 
1613
   ' Get the package label from the package versions table
1614
   queryString = "SELECT pkg_label FROM package_versions WHERE pv_id = " & pv_id
1615
   Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))
1616
   If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then
1617
      get_Pkg_Label = queryResult("pkg_label")
1618
   End If
1619
   queryResult.Close()
1620
   Set queryResult = nothing
1621
End Function
1622
'---------------------------------------------------------------
1623
' Function: get_Src_Path
1624
'
1625
' Purpose: Returns the source path for the specified pv_id
1626
'
1627
' Arguments: pv_id       : Uniquely identifies this package version
1628
'
1629
Function get_Src_Path (pv_id)
1630
   Dim queryResult
1631
   Dim queryString
1632
 
1633
   get_Src_Path = ""
1634
 
1635
   ' Get the source path from package versions table
1636
   queryString = "SELECT src_path FROM package_versions WHERE pv_id = " & pv_id
1637
   Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))
1638
   If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then
1639
      get_Src_Path = queryResult("src_path")
1640
   End If
1641
   queryResult.Close()
1642
   Set queryResult = nothing
1643
End Function
1644
 
1645
'---------------------------------------------------------------
119 ghuddy 1646
' Function: getOldLabel
1647
'
1648
' Purpose: Returns the previous label; if none then returns empty string
1649
'
1650
'          Since this operation is designed to fulfil the generation of
1651
'          diff commands, there is no point in considering ripple
1652
'          versions, since the only differences we find there are in
1653
'          the build.pl files (for example). So, this function uses
1654
'          some underlying methods that ignore ripple built versions
1655
'          therefore concentrating on versions that someone has manually
1656
'          gone and labelled, presumably because they changed some
1657
'          source file other than build.pl.
1658
'
1659
' Arguments: pv_id       : Uniquely identifies this package version
1660
'            last_pv_id  : Uniquely identifies the predecssor of this package version
1661
' Notes:
1662
'
1663
Function getOldLabel (pv_id, last_pv_id)
129 ghuddy 1664
   Dim lastSignificantPVID
119 ghuddy 1665
 
129 ghuddy 1666
   getOldLabel = ""
119 ghuddy 1667
 
129 ghuddy 1668
   lastSignificantPVID = getLastSignificantPVID(pv_id, last_pv_id)
1669
   If (lastSignificantPVID <> "") Then
1670
      getOldLabel = get_Pkg_Label(lastSignificantPVID)
1671
   End If
1672
End Function
1673
'---------------------------------------------------------------
1674
' Function: getOldSrcPath
1675
'
1676
' Purpose: Returns the previous src path; if none then returns empty string
1677
'
1678
'          Since this operation is designed to fulfil the generation of
1679
'          diff commands, there is no point in considering ripple
1680
'          versions, since the only differences we find there are in
1681
'          the build.pl files (for example). So, this function uses
1682
'          some underlying methods that ignore ripple built versions
1683
'          therefore concentrating on versions that someone has manually
1684
'          gone and labelled, presumably because they changed some
1685
'          source file other than build.pl.
1686
'
1687
'          NOTE: With SubVersion, the src_path column in the package_versions
1688
'                table will be used to hold the Subversion tag. This function
1689
'                will therefore be used mostly when a package version is
1690
'                controlled under subversion.
1691
'
1692
' Arguments: pv_id       : Uniquely identifies this package version
1693
'            last_pv_id  : Uniquely identifies the predecssor of this package version
1694
' Notes:
1695
'
1696
Function getOldSrcPath (pv_id, last_pv_id)
1697
   Dim lastSignificantPVID
119 ghuddy 1698
 
129 ghuddy 1699
   getOldSrcPath = ""
119 ghuddy 1700
 
129 ghuddy 1701
   lastSignificantPVID = getLastSignificantPVID(pv_id, last_pv_id)
1702
   If (lastSignificantPVID <> "") Then
1703
      getOldSrcPath = get_Src_Path(lastSignificantPVID)
1704
   End If
1705
End Function
1706
'----------------------------------------------------------------------------------------------------------------------
1707
Sub vcs_info_from_vcs_tag( nVcs_tag, ByRef objDetails )
1708
   Dim rsTemp, Query_String
119 ghuddy 1709
 
129 ghuddy 1710
   Query_String = " SELECT * FROM vcs_type WHERE tag = '"& nVcs_tag &"'"
1711
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
1712
   If (NOT rsTemp.BOF ) AND (NOT rsTemp.EOF) Then
1713
      objDetails.Item("vcs_type_id") = rsTemp("vcs_type_id")
1714
      objDetails.Item("vcs_name") = rsTemp("name")
1715
      objDetails.Item("vcs_tag") = rsTemp("tag")
1716
   Else
141 ghuddy 1717
      Call RaiseMsg(enum_MSG_ERROR, "Database does not contain a record of the VCS tag : " & nVcs_tag )
129 ghuddy 1718
   End If
1719
   rsTemp.Close()
1720
   set rsTemp = nothing
1721
End Sub
1722
'----------------------------------------------------------------------------------------------------------------------
1723
Sub vcs_info_from_vcs_type_id( nVcs_type_id, ByRef objDetails )
1724
   Dim rsTemp, Query_String
1725
 
1726
   If NOT IsNull(nVcs_type_id) Then
1727
      Query_String = " SELECT * FROM vcs_type WHERE vcs_type_id = "& nVcs_type_id
1728
      Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
1729
      If (NOT rsTemp.BOF ) AND (NOT rsTemp.EOF) Then
1730
         objDetails.Item("vcs_type_id") = rsTemp("vcs_type_id")
1731
         objDetails.Item("vcs_name") = rsTemp("name")
1732
         objDetails.Item("vcs_tag") = rsTemp("tag")
1733
      Else
141 ghuddy 1734
         Call RaiseMsg(enum_MSG_ERROR, "Database does not contain a record of the VCS type ID : " & nVcs_type_id )
129 ghuddy 1735
      End If
1736
      rsTemp.Close()
1737
      set rsTemp = nothing
1738
   Else
3616 dpurdie 1739
      ' default to returning Subversion info, assuming it exists in the data
1740
      Call vcs_info_from_vcs_tag( enum_VCS_SUBVERSION_TAG, objDetails )
129 ghuddy 1741
   End If
1742
End Sub
1743
'----------------------------------------------------------------------------------------------------------------------
137 ghuddy 1744
Sub get_vcs_info_for_package( nPkgLabel, nBuildType, nVcsTypeId, nDLocked, ByRef objDetails )
129 ghuddy 1745
   ' lots of patch versions exist with N/A as their pkg_label and null as vcs_type_id. These are all uncontrolled
1746
   ' packages published directly into dpkg_archive with no controlled source under clearcase, so we want to treat
1747
   ' them as uncontrolled if possible.
137 ghuddy 1748
   If nDLocked = "Y" AND ((nPkgLabel = "N/A") OR IsNull(nPkgLabel)) AND nBuildType = "M" AND IsNull(nVcsTypeId) Then
129 ghuddy 1749
      Call vcs_info_from_vcs_tag( enum_VCS_UNCONTROLLED_TAG, objDetails )
1750
   Else
1751
      ' Otherwise, try and decode the VCS from the package's vcs_type_id entry from the package version table
1752
      ' NOTE: A null vcs_type_id entry will default to ClearCase. That is all we have been using up til now so
1753
      ' it should be safe.
1754
      Call vcs_info_from_vcs_type_id( nVcsTypeId, objDetails )
1755
   End If
1756
End Sub
1757
'----------------------------------------------------------------------------------------------------------------------
1758
Sub get_vcs_info_for_pv_id( nPv_id, ByRef objDetails )
1759
   Dim rsTemp, Query_String
1760
 
1761
   Query_String = _
137 ghuddy 1762
   " SELECT pv.pkg_label, pv.build_type, pv.vcs_type_id, pv.dlocked "&_
129 ghuddy 1763
   "   FROM PACKAGE_VERSIONS pv"&_
1764
   "  WHERE pv.pv_id = "& nPv_id
1765
 
1766
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
1767
   If (NOT rsTemp.BOF ) AND (NOT rsTemp.EOF) Then
137 ghuddy 1768
      Call get_vcs_info_for_package( rsTemp("pkg_label"), rsTemp("build_type"), rsTemp("vcs_type_id"), rsTemp("dlocked"), objDetails )
129 ghuddy 1769
   Else
1770
      Call RaiseMsg(enum_MSG_ERROR, "PV_ID (" & nPv_id & ") Not Found")
1771
   End If
1772
   rsTemp.Close()
1773
   set rsTemp = nothing
1774
End Sub
1775
'----------------------------------------------------------------------------------------------------------------------
1776
Function get_vcs_tag( nPv_id )
1777
   Dim tempVcsInfoCollector
1778
   Set tempVcsInfoCollector = CreateObject("Scripting.Dictionary")
1779
 
1780
   Call get_vcs_info_for_pv_id( nPv_id, tempVcsInfoCollector )
1781
   get_vcs_tag = tempVcsInfoCollector.Item("vcs_tag")
1782
 
1783
   Set tempVcsInfoCollector = nothing
119 ghuddy 1784
End Function
129 ghuddy 1785
'----------------------------------------------------------------------------------------------------------------------
143 ghuddy 1786
Function isInDoNotRippleTable( NNrtag_id, NNpv_id )
1787
   Dim rsTemp, Query_String
119 ghuddy 1788
 
143 ghuddy 1789
   isInDoNotRippleTable = FALSE
1790
 
1791
   If NNrtag_id <> "" AND NNpv_id <> "" Then
1792
      Query_String = " SELECT dnr.pv_id FROM DO_NOT_RIPPLE dnr WHERE dnr.RTAG_ID ="& NNrtag_id &" AND dnr.PV_ID ="& NNpv_id
1793
 
1794
      Set rsTemp = OraDatabase.DbCreateDynaset(Query_String, cint(0))
1795
      If rsTemp.RecordCount <> 0  Then
1796
         isInDoNotRippleTable = TRUE
1797
      End If
1798
      rsTemp.Close()
1799
      set rsTemp = nothing
1800
   End If
1801
End Function
145 ghuddy 1802
'----------------------------------------------------------------------------------------------------------------------
1803
Function pv_id_exists( nPv_id )
1804
   Dim rsTemp, Query_String
143 ghuddy 1805
 
145 ghuddy 1806
   If NOT IsNull( nPv_id ) AND nPv_id <> "" Then
1807
      Query_String = _
1808
      " SELECT pv.pv_id "&_
1809
      "   FROM PACKAGE_VERSIONS pv"&_
1810
      "  WHERE pv.pv_id = "& nPv_id
1811
      Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
1812
      If (NOT rsTemp.BOF ) AND (NOT rsTemp.EOF) Then
1813
         pv_id_exists = TRUE
1814
      Else
1815
         pv_id_exists = FALSE
1816
      End If
1817
      rsTemp.Close()
1818
      set rsTemp = nothing
1819
   Else
1820
      pv_id_exists = FALSE
1821
   End If
1822
End Function
1823
'----------------------------------------------------------------------------------------------------------------------
1824
Function is_daemon_enabled_release( NNrtag_id, defaultReturnValue )
1825
   Dim rsTemp, Query_String
143 ghuddy 1826
 
145 ghuddy 1827
   If NOT IsNull( NNrtag_id ) AND NNrtag_id <> "" Then
143 ghuddy 1828
 
145 ghuddy 1829
      Query_String = _
4293 dpurdie 1830
      " SELECT rc.bmcon_id "&_
145 ghuddy 1831
      "   FROM RELEASE_CONFIG rc"&_
1832
      "  WHERE rc.rtag_id = "& NNrtag_id
1833
      Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
1834
 
1835
      is_daemon_enabled_release = FALSE
1836
      While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF) AND (is_daemon_enabled_release = FALSE))
4293 dpurdie 1837
         If (NOT IsNull(rsTemp("bmcon_id"))) AND (rsTemp("bmcon_id") <> "") Then
145 ghuddy 1838
            is_daemon_enabled_release = TRUE
1839
         End If
1840
         rsTemp.MoveNext
1841
      WEnd
1842
 
1843
      rsTemp.Close()
1844
      set rsTemp = nothing
1845
   Else
1846
      is_daemon_enabled_release = defaultReturnValue
1847
   End If
1848
End Function
147 ghuddy 1849
'--------------------------------------------------------------------------------------------------------------------------
1850
' Convert release state into a meaningful string
1851
Function Get_Official( nOfficial )
1852
   If nOfficial = "N" Then
1853
      Get_Official = "Open"
1854
   ElseIf nOfficial = "A" Then
1855
      Get_Official = "Archive"
1856
   ElseIf nOfficial = "C" Then
1857
      Get_Official = "CCB"
1858
   ElseIf nOfficial = "R" Then
1859
      Get_Official = "Restricted"
1860
   ElseIf nOfficial = "Y" Then
1861
      Get_Official = "Closed"
1862
   Else
1863
      Get_Official = "?"
1864
   End If
1865
End Function
151 ghuddy 1866
'-----------------------------------------------------------------------------------------------------------------------------
1867
Function Get_Pkg_Id_For_Pv_Id ( NNpv_id )
1868
   Dim rsTemp, Query_String
145 ghuddy 1869
 
151 ghuddy 1870
   Get_Pkg_Id_For_Pv_Id = ""
145 ghuddy 1871
 
151 ghuddy 1872
   If NOT IsNull(NNpv_id) AND NNpv_id <> "" Then
1873
      Query_String = _
1874
      "SELECT pkg_id FROM package_versions WHERE pv_id = "& NNpv_id
1875
 
1876
      Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
1877
 
1878
      If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
1879
         Get_Pkg_Id_For_Pv_Id = rsTemp("pkg_id")
1880
      End If
1881
      rsTemp.Close
1882
      Set rsTemp = nothing
1883
   End If
1884
 
1885
End Function
1886
 
171 brianf 1887
'-----------------------------------------------------------------------------------------------------------------------------
161 iaugusti 1888
Function iif(bFlag, sTrueStr, sFalseStr)
1889
  if bFlag then
1890
    iif = sTrueStr
1891
  else 
1892
    iif = sFalseStr
1893
  end if
1894
End Function
151 ghuddy 1895
 
171 brianf 1896
'--------------------------------------------------------------------------------------------------------------------------
1897
' Sets the state of all build daemons of the specified release
1898
Sub SetDaemonStates (artag_id,astate)
1899
	On Error Resume Next
1900
	OraDatabase.Parameters.Add "RTAG_ID", 			artag_id, 	ORAPARM_INPUT, ORATYPE_NUMBER 
1901
	OraDatabase.Parameters.Add "NSTATE", 			astate, 	ORAPARM_INPUT, ORATYPE_NUMBER 
1902
 
1903
	objEH.TryORA ( OraSession )
1904
 
1905
	OraDatabase.ExecuteSQL _
1906
        "BEGIN PK_BUILDAPI.SET_DAEMON_STATES(:RTAG_ID,:NSTATE);   END;"
1907
 
1908
	objEH.CatchORA ( OraSession )
1909
 
1910
	OraDatabase.Parameters.Remove "RTAG_Id"
1911
	OraDatabase.Parameters.Remove "NSTATE"	
1912
End Sub
1913
 
183 brianf 1914
'----------------------------------------------
1915
'Returns true if the specified package version exists in the specified table
1916
Function PackageExists(RtagId, pvId, stable)
1917
  Dim rsTemp
1918
  Dim sqry
185 brianf 1919
  If RtagId = "" Then
1920
    PackageExists = False
1921
  Else
1922
    sqry = "SELECT * FROM " & stable & " WHERE rtag_id = " & RtagId & " AND pv_id = " & pvId
1923
    Set rsTemp = OraDatabase.DbCreateDynaset(sqry,CInt(0))
1924
    PackageExists = rsTemp.RecordCount > 0  
1925
    rsTemp.Close()
1926
    Set rsTemp = Nothing
1927
  End If
183 brianf 1928
End Function
1929
 
4710 dpurdie 1930
'----------------------------------------------
1931
' Test that specified package/version exists in dpkg_archive
1932
' Can also test prsense of the archive
1933
'   Use http interface as it does not require authetication
1934
Function testArchiveAccessPkg(pkgName, pkgVersion)
1935
  Dim oXMLHTTP
1936
  Dim testUrl
1937
 
1938
  testArchiveAccessPkg = False
1939
  testUrl = dpkg_archiveURL
1940
  If pkgName <> "" Then
1941
      testUrl = testUrl & pkgName & "/" & pkgVersion
1942
  End If
1943
  Set oXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP.3.0")
1944
 
4756 dpurdie 1945
  ' Use error handling in case dpkg_archive is not available
4710 dpurdie 1946
  ' Use HEAD to test existence
4756 dpurdie 1947
  Err.Clear
1948
  On Error Resume Next
4710 dpurdie 1949
  oXMLHTTP.Open "HEAD", testUrl, False
1950
  oXMLHTTP.Send
1951
 
4756 dpurdie 1952
  ' Do not combine the next two If statments - it will not work
1953
  If Err.Number = 0  Then
1954
    If oXMLHTTP.Status = 200 Then 
1955
        testArchiveAccessPkg = True
1956
    End If
4710 dpurdie 1957
  End If
4756 dpurdie 1958
  On Error Goto 0
4710 dpurdie 1959
End Function
5008 dpurdie 1960
 
1961
'--------------------------------------------------------------------------------------------------------------------------
1962
' Like Cint, but handles NULL by replacing it with a default value
1963
Function NiceInt( val, def)
5045 dpurdie 1964
   If val <> ""  AND IsNumeric(val) Then
5008 dpurdie 1965
       NiceInt = CInt(val)
1966
   Else
1967
       NiceInt = def
1968
   End If
1969
End Function
5143 dpurdie 1970
 
1971
'--------------------------------------------------------------------------------------------------------------------------
1972
'   Test if package can be added to a release
1973
'       Really tests if a a package of this packages alias can be
1974
'       manipulated in this release
1975
'   True: Package alias can be added/replaced in release
1976
Function canAddToRelease ( nRtagId, nPvId )
5156 dpurdie 1977
 
1978
    ' If we don't enough parameters then assume we can add package
1979
    If nRtagId = "" OR nPvId = "" Then
1980
        canAddToRelease = TRUE
1981
        Exit Function
1982
    End If
1983
 
5143 dpurdie 1984
	On Error Resume Next
1985
	OraDatabase.Parameters.Add "RTAG_ID", 			nRtagId, 	ORAPARM_INPUT, ORATYPE_NUMBER 
1986
	OraDatabase.Parameters.Add "PV_ID", 			nPvId, 	    ORAPARM_INPUT, ORATYPE_NUMBER 
1987
	OraDatabase.Parameters.Add "RETURN_CODE", 		null, 	    ORAPARM_OUTPUT, ORATYPE_NUMBER 
1988
 
1989
	objEH.TryORA ( OraSession )
1990
 
1991
	OraDatabase.ExecuteSQL _
1992
        "BEGIN :RETURN_CODE := PK_RELEASE.CAN_ADD_PKG_TO_RELEASE(:RTAG_ID,:PV_ID);   END;"
1993
 
1994
    If CInt(OraDatabase.Parameters("RETURN_CODE").Value) = 0 Then
1995
        canAddToRelease = FALSE
1996
    Else
1997
        canAddToRelease = TRUE
1998
    End If
1999
 
2000
	objEH.CatchORA ( OraSession )
2001
 
2002
	OraDatabase.Parameters.Remove "RETURN_CODE"
2003
	OraDatabase.Parameters.Remove "RTAG_ID"
2004
	OraDatabase.Parameters.Remove "PV_ID"	
2005
 
2006
End Function
119 ghuddy 2007
%>