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
'=====================================================
5
%>
6
<%
7
'-----------------------------------------------------------------------------------------------------------------------------
8
Sub CloseWindow
9
%>
10
<SCRIPT language="JavaScript" type="text/javascript">
11
<!--
12
self.close();
13
//-->
14
</SCRIPT>
15
<%
16
End Sub
17
'-----------------------------------------------------------------------------------------------------------------------------
18
Sub OpenChildWindow ( SStitle, SSurl, SSH, SSW, BBscroll )
129 ghuddy 19
   Dim scrlBar
20
   If BBscroll Then
21
      scrlBar = "yes"
22
   Else
23
      scrlBar = "no"
24
   End If
119 ghuddy 25
%>
129 ghuddy 26
   <script language="JavaScript" type="text/javascript">
27
   <!--
28
   window.open('<%=SSurl%>','<%=SStitle%>','scrollbars=<%=scrlBar%>,resizable=yes,width=<%=SSW%>,height=<%=SSH%>')
29
   //-->
30
   </script>
119 ghuddy 31
<%
32
End Sub
33
'-----------------------------------------------------------------------------------------------------------------------------
34
Sub OpenInParentWindow ( SSurl )
35
%>
129 ghuddy 36
   <script language="JavaScript" type="text/javascript">
37
   <!--
38
   window.opener.document.location='<%=SSurl%>';
39
   //-->
40
   </script>
119 ghuddy 41
<%
42
End Sub
43
'-----------------------------------------------------------------------------------------------------------------------------
44
Sub OpenInWindow ( SSurl )
129 ghuddy 45
   Response.Redirect ( SSurl )
119 ghuddy 46
End Sub
47
'-----------------------------------------------------------------------------------------------------------------------------
48
Function GetQuery ( sQryName )
129 ghuddy 49
   GetQuery = ReadFile( QUERIES_PATH &"\"& sQryName )
119 ghuddy 50
End Function
51
'-----------------------------------------------------------------------------------------------------------------------------
52
Sub RaiseMsg ( SSerrFile, SSerrDesc )
129 ghuddy 53
   ' Usage: enumERROR, parval1 &"|"& parval2 &"|"& parval3 ...
54
   Session( enum_RELMGR_ERRDESCRIPTION ) = SSerrDesc
55
   Response.Redirect ("messages/"& SSerrFile )
119 ghuddy 56
End Sub
57
'-----------------------------------------------------------------------------------------------------------------------------
58
Sub RaiseMsgInParent ( SSerrFile, SSerrDesc )
129 ghuddy 59
   Session( enum_RELMGR_ERRDESCRIPTION ) = SSerrDesc
60
   Call OpenInParentWindow ("messages/"& SSerrFile )
119 ghuddy 61
End Sub
62
'-----------------------------------------------------------------------------------------------------------------------------
63
Function ReadFile( SSpath )
129 ghuddy 64
   Dim filesys, rfile
65
   Set filesys = CreateObject("Scripting.FileSystemObject")
66
   Set rfile = filesys.OpenTextFile( SSpath, 1, false)
67
   ReadFile = rfile.ReadAll
68
   rfile.close
69
   Set filesys = nothing
119 ghuddy 70
End Function
71
'-----------------------------------------------------------------------------------------------------------------------------
72
Function HighlightSubstring ( SSstr, SSsubstr )
129 ghuddy 73
   Dim leftSTR, startPos
74
   startPos = InStr( 1, SSstr, SSsubstr, 1 )
119 ghuddy 75
 
129 ghuddy 76
   If startPos > 0 Then
77
      leftSTR = Left ( SSstr, startPos - 1 )
78
      HighlightSubstring = leftSTR &"<SPAN style='background:#ffff99;'>"& Mid( SSstr, startPos, Len(SSsubstr) ) &"</SPAN>"&  Right ( SSstr, Len(SSstr) - Len(leftSTR) - Len(SSsubstr)  )
79
   Else
80
      ' Subtring not found
81
      HighlightSubstring = SSstr
82
   End If
119 ghuddy 83
 
84
End Function
85
'-----------------------------------------------------------------------------------------------------------------------------
86
Sub DeleteFile( SSpath )
129 ghuddy 87
   Dim filesys
88
   Set filesys = CreateObject("Scripting.FileSystemObject")
89
   If filesys.FileExists(SSpath) Then
90
         filesys.DeleteFile SSpath, TRUE
91
   End If
92
   Set filesys = nothing
119 ghuddy 93
End Sub
94
'-----------------------------------------------------------------------------------------------------------------------------
95
Sub DeleteFolder( SSpath )
129 ghuddy 96
   Dim  filesys
97
   Set filesys = CreateObject ("Scripting.FileSystemObject")
98
   If filesys.FolderExists( SSpath ) Then
99
      'Set oFolder = filesys.GetFolder( SSpath )
100
      filesys.DeleteFolder SSpath ,TRUE
101
   End If
119 ghuddy 102
End Sub
103
'-----------------------------------------------------------------------------------------------------------------------------
104
Sub Create_Folder ( sCreateIn, sFolderName )
129 ghuddy 105
   Dim filesys, currfolder, folcoll, subfol
106
   Set filesys = CreateObject("Scripting.FileSystemObject")
107
   If filesys.FolderExists( sCreateIn ) Then
108
      Set currfolder = filesys.GetFolder( sCreateIn )
109
      Set folcoll = currfolder.SubFolders
110
      If NOT filesys.FolderExists( sCreateIn &"\"& sFolderName ) Then
111
         folcoll.Add( sFolderName )
112
      End If
113
   End If
119 ghuddy 114
End Sub
115
'-----------------------------------------------------------------------------------------------------------------------------
116
Function Folder_Is_Empty ( sPath )
129 ghuddy 117
   Dim filesys, oFolder
118
   Set filesys = CreateObject("Scripting.FileSystemObject")
119 ghuddy 119
 
129 ghuddy 120
   If filesys.FolderExists( sPath ) Then
121
      Set oFolder = filesys.GetFolder( sPath )
122
      If ( oFolder.Files.Count + oFolder.SubFolders.Count ) > 0 Then
123
         Folder_Is_Empty = FALSE
124
      Else
125
         Folder_Is_Empty = TRUE
126
      End If
127
   Else
128
      Folder_Is_Empty = TRUE
129
   End If
119 ghuddy 130
 
131
End Function
132
'-----------------------------------------------------------------------------------------------------------------------------
133
Sub Destroy_All_Objects
129 ghuddy 134
   On Error Resume Next
135
   set brokenReadyHash = nothing
136
   set brokenHash = nothing
137
   set pkgInfoHash = nothing
138
   set OraDatabase = nothing
139
   set OraSession = nothing
140
   set userdetailsHash = 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
'-----------------------------------------------------------------------------------------------------------------------------
227
Function Get_Devl_Envorinment
129 ghuddy 228
   If Request.Cookies("RELEASEMANAGER_MEMORY")("devl_environment") <> "" Then
229
      If Request.Cookies("RELEASEMANAGER_MEMORY")("devl_environment") = "clearcase" Then
230
         Get_Devl_Envorinment = "jats"      'clear case does not have import
231
      Else
232
         Get_Devl_Envorinment = Request.Cookies("RELEASEMANAGER_MEMORY")("devl_environment")
233
      End If
234
   Else
235
      Get_Devl_Envorinment = "jats"      'JATS devl environment is set by default
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 )
129 ghuddy 390
   Dim rsTemp, Query_String
391
   OraDatabase.Parameters.Add "PV_ID",       SSpv_id,   ORAPARM_INPUT, ORATYPE_NUMBER
392
   OraDatabase.Parameters.Add "RTAG_ID",       NNrtag,      ORAPARM_INPUT, ORATYPE_NUMBER
183 brianf 393
   OraDatabase.Parameters.Add "RETURN_NUMBER", NULL,      ORAPARM_OUTPUT, ORATYPE_NUMBER   
119 ghuddy 394
 
129 ghuddy 395
   pkgInfoHash.Item ("can_unofficial") = "false"
119 ghuddy 396
 
129 ghuddy 397
   '/* Get Package Details */
398
   Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery("PackageDetails.sql"), cint(0))
119 ghuddy 399
 
129 ghuddy 400
   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
401
      pkgInfoHash.Add "pv_id", (rsTemp.Fields("pv_id"))
402
      pkgInfoHash.Add "pkg_id", (rsTemp.Fields("pkg_id"))
403
      pkgInfoHash.Add "pkg_name", (rsTemp.Fields("pkg_name"))
404
      pkgInfoHash.Add "pkg_version", (rsTemp.Fields("pkg_version"))
405
      pkgInfoHash.Add "v_ext", (rsTemp.Fields("v_ext"))
406
      pkgInfoHash.Add "comments", (rsTemp.Fields("comments"))
119 ghuddy 407
 
129 ghuddy 408
      pkgInfoHash.Add "modified_stamp", (rsTemp.Fields("modified_stamp"))
409
      pkgInfoHash.Add "modifier", (rsTemp.Fields("modifier"))
410
      pkgInfoHash.Add "modifier_id", (rsTemp.Fields("modifier_id"))
411
      pkgInfoHash.Add "modifier_email", (rsTemp.Fields("modifier_email"))
119 ghuddy 412
 
129 ghuddy 413
      pkgInfoHash.Add "created_stamp", (rsTemp.Fields("created_stamp"))
414
      pkgInfoHash.Add "creator", (rsTemp.Fields("creator"))
415
      pkgInfoHash.Add "creator_email", (rsTemp.Fields("creator_email"))
119 ghuddy 416
 
129 ghuddy 417
      pkgInfoHash.Add "owner", (rsTemp.Fields("owner"))
418
      pkgInfoHash.Add "owner_email", (rsTemp.Fields("owner_email"))
119 ghuddy 419
 
129 ghuddy 420
      pkgInfoHash.Add "dlocked", (rsTemp.Fields("dlocked"))
421
      pkgInfoHash.Add "proj_id", (rsTemp.Fields("proj_id"))
422
      pkgInfoHash.Add "rtag_id", (rsTemp.Fields("rtag_id"))
423
      pkgInfoHash.Add "rtag_name", (rsTemp.Fields("rtag_name"))
424
      pkgInfoHash.Add "pkg_label", (rsTemp.Fields("pkg_label"))
425
      pkgInfoHash.Add "src_path", (rsTemp.Fields("src_path"))
426
      pkgInfoHash.Add "pv_description", (rsTemp.Fields("pv_description"))
427
      pkgInfoHash.Add "last_pv_id", (rsTemp.Fields("last_pv_id"))
428
      pkgInfoHash.Add "previous_version", (rsTemp.Fields("previous_version"))
429
      pkgInfoHash.Add "release_notes_info", (rsTemp.Fields("release_notes_info"))
119 ghuddy 430
 
129 ghuddy 431
      pkgInfoHash.Add "is_patch", (rsTemp.Fields("is_patch"))
432
      pkgInfoHash.Add "is_obsolete", (rsTemp.Fields("is_obsolete"))
433
      pkgInfoHash.Add "obsolete_comments", (rsTemp.Fields("obsolete_comments"))
119 ghuddy 434
 
129 ghuddy 435
      pkgInfoHash.Add "build_type", (rsTemp.Fields("build_type"))
436
      pkgInfoHash.Add "change_type", (rsTemp.Fields("change_type"))
437
      pkgInfoHash.Add "bs_id", (rsTemp.Fields("bs_id"))
438
      pkgInfoHash.Add "is_deployable", (rsTemp.Fields("is_deployable"))
439
      pkgInfoHash.Add "sbom_priority", (rsTemp.Fields("sbom_priority"))
440
      pkgInfoHash.Add "ripple_field", (rsTemp.Fields("ripple_field"))
119 ghuddy 441
 
129 ghuddy 442
   End If
119 ghuddy 443
 
444
 
129 ghuddy 445
   '-- Find if package is editable in this project
446
   OraDatabase.ExecuteSQL "BEGIN  :RETURN_NUMBER := CAN_EDIT_PKG_IN_PROJECT( :PV_ID, :RTAG_ID );  END;"
447
   pkgInfoHash.Add "can_edit_in_project", CStr( OraDatabase.Parameters("RETURN_NUMBER").Value )
119 ghuddy 448
 
449
 
129 ghuddy 450
   '/* Get Package Release Details */
451
   Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery("PackageReleaseDetails.sql"), cint(0))
119 ghuddy 452
 
453
 
454
 
129 ghuddy 455
   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
456
      pkgInfoHash.Item ("base_view_id") = (rsTemp.Fields("base_view_id"))
457
      pkgInfoHash.Add "insert_stamp", (rsTemp.Fields("insert_stamp"))
458
      pkgInfoHash.Add "insertor", (rsTemp.Fields("insertor"))
459
      pkgInfoHash.Add "insertor_email", (rsTemp.Fields("insertor_email"))
460
      pkgInfoHash.Item ("pkg_state") = (rsTemp.Fields("pkg_state"))
461
      pkgInfoHash.Item ("deprecated_state") = (rsTemp.Fields("deprecated_state"))
462
      pkgInfoHash.Item ("product_state") = (rsTemp.Fields("product_state"))
119 ghuddy 463
 
129 ghuddy 464
      'AND  (rsTemp("used_count") = 0)  _
119 ghuddy 465
 
129 ghuddy 466
      If      (pkgInfoHash.Item ("dlocked") = "Y") _
467
         AND  (pkgInfoHash.Item ("build_type") = "M") _
468
         AND  (CDate( FormatDateTime(pkgInfoHash.Item ("modified_stamp"), 2) ) = Date) _
469
         AND  (pkgInfoHash.Item("can_edit_in_project") = "1" ) _
470
      Then
119 ghuddy 471
 
129 ghuddy 472
         pkgInfoHash.Item ("can_unofficial") = "true"
473
      End If
119 ghuddy 474
 
129 ghuddy 475
   Else
119 ghuddy 476
 
129 ghuddy 477
      If (CDate( FormatDateTime(pkgInfoHash.Item ("modified_stamp"), 2) ) = Date) Then
478
         ' Must be not older then a day
479
         If (pkgInfoHash.Item ("dlocked") = "A")  OR   NOT IsNull(pkgInfoHash.Item("is_patch")) Then
480
            pkgInfoHash.Item ("can_unofficial") = "true"
119 ghuddy 481
 
129 ghuddy 482
         End If
119 ghuddy 483
 
129 ghuddy 484
      End If
119 ghuddy 485
 
129 ghuddy 486
   End If
119 ghuddy 487
 
488
 
129 ghuddy 489
   '/* Get Patch Parent */
490
   If pkgInfoHash.Item ("is_patch") = "Y" Then
491
      Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery("PatchParent.sql"), cint(0))
119 ghuddy 492
 
129 ghuddy 493
      If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
494
         pkgInfoHash.Add "patch_parent_id", (rsTemp.Fields("pv_id"))
495
      End If
496
   End If
119 ghuddy 497
 
129 ghuddy 498
   ' DEVI-45275 - Check if version is in the planned table and if so get its planned operation type
499
   ' which denotes whether it is an existing version being added to a release, an existing version
500
   ' being removed from a release, or a new version being prepared for a release.
501
   Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery("PlannedPackageVersionDetails.sql"), cint(0))
119 ghuddy 502
 
129 ghuddy 503
   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
504
      pkgInfoHash.Add "planned_operation", (rsTemp.Fields("operation"))
505
   Else
506
      pkgInfoHash.Add "planned_operation", " "
507
   End If
119 ghuddy 508
 
129 ghuddy 509
   OraDatabase.Parameters.Remove "PV_ID"
510
   OraDatabase.Parameters.Remove "RTAG_ID"
511
   OraDatabase.Parameters.Remove "RETURN_NUMBER"
119 ghuddy 512
 
513
 
1376 dpurdie 514
   On Error Resume Next
183 brianf 515
   ' check if package is released
185 brianf 516
   If (NNrtag = "") or (IsNull(NNrtag)) Then
183 brianf 517
     pkgInfoHash.Add "is_released", False
518
   Else
519
     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))
520
     pkgInfoHash.Add "is_released", rsTemp.RecordCount <> 0
521
   End If
522
 
523
   pkgInfoHash.Add "is_excluded", False
524
   pkgInfoHash.Add "has_build_failure", False
525
   ' check if package is excluded from build
185 brianf 526
   If Not ((NNrtag = "") or (IsNull(NNrtag))) Then
183 brianf 527
     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))
528
     If rsTemp.RecordCount <> 0 Then
529
       pkgInfoHash("is_excluded") = True
530
       pkgInfoHash("has_build_failure") = Not IsNull(rsTemp("root_file"))
531
     End If
532
   End If
533
 
129 ghuddy 534
   rsTemp.Close
535
   Set rsTemp = nothing
183 brianf 536
 
537
 
119 ghuddy 538
End Sub
539
'-----------------------------------------------------------------------------------------------------------------------------
540
Sub Get_Pkg_Short_Info( SSparPv_id, SSpkgID, SSpkgName, SSpkgVersion, SSsrc_path, SSpkgDesc, BBdlocked )
129 ghuddy 541
   Dim rsTemp, Query_String
542
   If IsEmpty(SSparPv_id) Then Exit Sub
119 ghuddy 543
 
129 ghuddy 544
   Query_String = _
545
   " SELECT pkg.pkg_id, pkg.pkg_name, pv.pkg_version, pv.src_path, pv.pv_description, pv.dlocked"&_
546
   "  FROM packages pkg, package_versions pv"&_
547
   " WHERE pkg.pkg_id = pv.pkg_id  AND pv.pv_id ="& SSparPv_id
119 ghuddy 548
 
129 ghuddy 549
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
119 ghuddy 550
 
129 ghuddy 551
   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
552
      SSpkgID = rsTemp.Fields("pkg_id")
553
      SSpkgName = rsTemp.Fields("pkg_name")
554
      SSpkgVersion = rsTemp.Fields("pkg_version")
555
      SSsrc_path = rsTemp.Fields("src_path")
556
      SSpkgDesc = rsTemp.Fields("pv_description")
557
      BBdlocked = rsTemp.Fields("dlocked")
558
   End If
119 ghuddy 559
 
129 ghuddy 560
   rsTemp.Close
561
   Set rsTemp = nothing
119 ghuddy 562
End Sub
563
'-----------------------------------------------------------------------------------------------------------------------------
564
Private Function IsDomainAuthOK( SSusername, SSpassword, SSdomainName )
129 ghuddy 565
   Dim objLoginAuth, return, tempSTR
566
   'Set objWSH = Server.CreateObject("WScript.Shell")
567
   'On Error Resume Next
568
   'return = -1
569
   'return = objWSH.Run("cmd.exe /c perl "& rootPath &"\common\domainauth.pl """&_
570
   '               SSdomainName &""" """& SSusername &""" """& SSpassword &""" "&_
571
   '               "> "& rootPath &"\temp\"& SSusername &".txt", 0, true)
119 ghuddy 572
 
129 ghuddy 573
   Set objLoginAuth = Server.CreateObject("LoginAdmin.ImpersonateUser")
119 ghuddy 574
 
129 ghuddy 575
   return = -1
576
   return = objLoginAuth.AuthenticateUser ( SSusername, SSpassword, SSdomainName )
119 ghuddy 577
 
129 ghuddy 578
   'Response.write "LOGIN"& SSusername &"-"& SSpassword &"-"& SSdomainName &"-"& return
119 ghuddy 579
 
129 ghuddy 580
   If (return = 0) OR (return = 1385) Then
581
      ' From MSDN System Error Codes
582
      ' 0 - The operation completed successfully.
583
      ' 1326 - Logon failure: unknown user name or bad password.
584
      ' 1385 - Logon failure: the user has not been granted the requested logon type at this computer.
585
      ' 1909 - The referenced account is currently locked out and may not be used to log on.
119 ghuddy 586
 
129 ghuddy 587
      'Login ok
588
      IsDomainAuthOK = True
589
   Else
590
      IsDomainAuthOK = False
591
   End If
119 ghuddy 592
 
129 ghuddy 593
   Set objLoginAuth = Nothing
119 ghuddy 594
End Function
595
'-----------------------------------------------------------------------------------------------------------------------------
596
Function ReadUserPreferences ( SSitem )
129 ghuddy 597
   'ReadUserPreferences = Request.Cookies("RELEASEMANAGER_USER_PREFERENCES")( SSitem )
598
   ReadUserPreferences = "0"
119 ghuddy 599
End Function
600
'-----------------------------------------------------------------------------------------------------------------------------
601
Function Requred_Parameters_String ( SScurrent, SSstr )
129 ghuddy 602
   'returns "&par1=val1&&parn=valn&"            must use & as it will not be used on parameter name or value
603
   Dim tempARR, parameter, tempSTR
604
   tempARR = Split( SSstr, "," )
605
   tempSTR = SScurrent
119 ghuddy 606
 
129 ghuddy 607
   For Each parameter In tempARR
608
      tempSTR = tempSTR &"&"& parameter &"="& QStrPar( parameter ) &"&"
609
   Next
119 ghuddy 610
 
129 ghuddy 611
   Requred_Parameters_String = tempSTR
119 ghuddy 612
End Function
613
'-----------------------------------------------------------------------------------------------------------------------------
614
Function Quick_Help ( SStipname )
129 ghuddy 615
   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 616
End Function
617
'-----------------------------------------------------------------------------------------------------------------------------
618
Function LogError ( SSlog, SSstr )
129 ghuddy 619
   '|errstr1||errstr2||errstr3|...
620
   LogError = SSlog &"|"& SSstr &"|"
119 ghuddy 621
End Function
622
'-----------------------------------------------------------------------------------------------------------------------------
623
Sub Send_Email ( SSfromName, SSfrom, SSto, SSsubject, SSbody, oAttachments )
129 ghuddy 624
   Dim Mail, Keys, Key, canSend
119 ghuddy 625
 
129 ghuddy 626
   canSend = FALSE
627
   Set Mail = Server.CreateObject("Persits.MailSender")
628
   Mail.Host = SMTP_HOST
119 ghuddy 629
 
129 ghuddy 630
   Mail.From = SSfrom
631
   Mail.FromName = SSfromName
119 ghuddy 632
 
129 ghuddy 633
   ' Send TO:
634
   If IsObject( SSto ) Then
635
      Keys = SSto.Keys
636
      For Each Key In Keys
637
         Mail.AddAddress Key, SSto.Item( Key )
638
      Next
119 ghuddy 639
 
129 ghuddy 640
      If SSto.Count > 0 Then canSend = TRUE
641
   Else
119 ghuddy 642
 
129 ghuddy 643
      Mail.AddAddress SSto
644
      If SSto <> "" Then canSend = TRUE
645
   End If
119 ghuddy 646
 
129 ghuddy 647
   Mail.Subject = SSsubject
648
   Mail.IsHTML = True
649
   Mail.Body = SSbody
119 ghuddy 650
 
129 ghuddy 651
   ' Add Attachments     DDDDDDD  Sash, It appears as if AddEmbededImage is premium functionality that costs money, can we just do a normal add attachment?
652
   'If IsObject( oAttachments ) Then
653
   '   Keys = oAttachments.Keys
654
   '   For Each Key In Keys
655
   '      Mail.AddEmbeddedImage rootPath & Key, oAttachments.Item( Key )
656
   '   Next
657
   '
658
   'End If
119 ghuddy 659
 
129 ghuddy 660
   On Error Resume Next
661
   If canSend Then   Mail.Send   ' send message
119 ghuddy 662
 
663
End Sub
664
'-----------------------------------------------------------------------------------------------------------------------------
665
Sub Iterate_UP_the_tree ( NNrtag_id, HHstart_with, HHresult )
129 ghuddy 666
   Dim rsTemp, Query_String
667
   Dim seekPKGs, seekNOTpkgs
119 ghuddy 668
 
129 ghuddy 669
   seekPKGs = Join(HHstart_with.Keys, ",")
670
   If seekPKGs = "" Then seekPKGs = "-1"
671
   seekNOTpkgs = "-1"
119 ghuddy 672
 
129 ghuddy 673
   Do While seekPKGs <> "-1"
674
      Query_String = _
675
      " SELECT DISTINCT dep.pkg_id"&_
676
      "    FROM package_dependencies dep, release_content rel"&_
677
      "   WHERE rel.pv_id = dep.pv_id"&_
678
      "     AND rel.rtag_id = "& NNrtag_id &_
679
      "     AND dpkg_id IN ( "& seekPKGs &" ) "&_
680
      "     AND pkg_id NOT IN ( "& seekNOTpkgs &" )"
681
      '"     AND dep.dpv_id NOT IN ( SELECT iw.iw_id FROM ignore_warnings iw WHERE iw.rtag_id = "& NNrtag_id &" )"
682
      Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
119 ghuddy 683
 
129 ghuddy 684
      If rsTemp.RecordCount < 1 Then Exit Do
119 ghuddy 685
 
129 ghuddy 686
      seekPKGs = "-1"
687
      While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))
688
         If NOT HHresult.Exists(Cstr(rsTemp.Fields("pkg_id"))) Then HHresult.Add Cstr(rsTemp.Fields("pkg_id")), ""
689
         seekPKGs = seekPKGs &","& rsTemp.Fields("pkg_id")
690
         rsTemp.MoveNext
691
      WEnd
119 ghuddy 692
 
129 ghuddy 693
      seekNOTpkgs = seekNOTpkgs &","& seekPKGs
694
   Loop
119 ghuddy 695
 
696
End Sub
697
'-----------------------------------------------------------------------------------------------------------------------------
129 ghuddy 698
Sub Iterate_DOWN_the_tree (   NNrtag_id, HHstart_with, HHresult )
699
   Dim rsTemp, Query_String
700
   Dim seekPKGs, seekNOTpkgs
119 ghuddy 701
 
129 ghuddy 702
   seekPKGs = Join(HHstart_with.Keys, ",")
703
   If seekPKGs = "" Then seekPKGs = "-1"
704
   seekNOTpkgs = "-1"
119 ghuddy 705
 
129 ghuddy 706
   Do While seekPKGs <> "-1"
707
      Query_String = _
708
      " SELECT DISTINCT dep.dpkg_id"&_
709
      "    FROM package_dependencies dep, release_content rel"&_
710
      "   WHERE rel.pv_id = dep.pv_id"&_
711
      "     AND rel.rtag_id = "& NNrtag_id &_
712
      "     AND pkg_id IN ( "& seekPKGs &" ) "&_
713
      "     AND dpkg_id NOT IN ( "& seekNOTpkgs &" )"
714
      Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
119 ghuddy 715
 
129 ghuddy 716
      If rsTemp.RecordCount < 1 Then Exit Do
119 ghuddy 717
 
129 ghuddy 718
      seekPKGs = "-1"
719
      While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))
720
         If NOT HHresult.Exists(Cstr(rsTemp.Fields("dpkg_id"))) Then HHresult.Add Cstr(rsTemp.Fields("dpkg_id")), ""
721
         seekPKGs = seekPKGs &","& rsTemp.Fields("dpkg_id")
722
         rsTemp.MoveNext
723
      WEnd
119 ghuddy 724
 
129 ghuddy 725
      seekNOTpkgs = seekNOTpkgs &","& seekPKGs
726
   Loop
119 ghuddy 727
 
728
End Sub
729
'-----------------------------------------------------------------------------------------------------------------------------
730
Class TempSession
129 ghuddy 731
   Function Value ()
732
      Value = Session("RELEASEMANAGER_temp")
733
   End Function
119 ghuddy 734
 
129 ghuddy 735
   Sub Add ( SSstr )
736
      Session("RELEASEMANAGER_temp") = Session("RELEASEMANAGER_temp") & SSstr
737
   End Sub
119 ghuddy 738
 
129 ghuddy 739
   Sub Clean ()
740
      Session("RELEASEMANAGER_temp") = NULL
741
   End Sub
119 ghuddy 742
End Class
743
'-----------------------------------------------------------------------------------------------------------------------------
744
Sub DisplayInfo ( SSmsg, SSwidth )
129 ghuddy 745
   Dim msg
746
   If SSmsg = "" Then Exit Sub
119 ghuddy 747
 
129 ghuddy 748
   Select Case UCase( SSmsg )
749
   Case "ISSUES_IMPORTED"
750
      msg = "Import is complete. <br>Click on Close button if you are finished."
751
   Case "MAKE_OFFICIAL_WARNING"
752
      msg = "Note that making a package official will prevent any further change to it."
753
   Case "APPLY_LABEL_TO_ALL_WARNING"
754
      msg = "This will overwrite any existing labels on selected packages."
755
   Case "BLANK_LABEL_WARNING"
756
      msg = "Some dependencies in the export list above, do not have a label!"
757
   Case "PERSONAL_VIEW_NOT_SETUP"
758
      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>"
759
   Case "EMPTY_RELEASE_CONTENTS"
760
      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>"
761
   Case "PKG_NAME_REQUIRED"
762
      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>"
763
   Case "ADD_PATCH_WARNING"
764
      msg = "Note that patches cannot be used in your build dependencies."
765
   Case "NEW_PATCH_AVAILABLE"
766
      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 767
 
129 ghuddy 768
   Case "GENERATE_RELEASE_NOTES"
167 brianf 769
      msg = "<a href='_generate_release_notes.asp?rfile=&pv_id="& Request("pv_id") &"&rtag_id="& Request("rtag_id") &"' class='txt_linked'>Click here</a> to generate full release notes."
129 ghuddy 770
   Case "NOT_FOUND_IN_PKG_ARCHIVE_RELEASE_NOTES"
771
      msg = "<b>This package is not found in dpkg_archive or deploy_archive!</b><br>Release notes are not generated.<br><a href='_generate_release_notes.asp?rfile="& scriptName &"&pv_id="& Request("pv_id") &"&rtag_id="& Request("rtag_id") &"' class='txt_linked'>Click here</a> to try again."
772
   Case "FAILED_GENERATING_RELEASE_NOTES"
773
      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>"
774
   Case "GENERATING_RELEASE_NOTES"
775
      msg = "<b>Generating release notes...</b><br>It may take a minute. Please try refreshing this page a bit later."
776
   Case "NO_PREVIOUS_VERSION_RELEASE_NOTES"
777
       msg = "<b>Previous Version is Unknown</b>!<br>Please specify previous version by clicking on 'Show Details...' above.<br>Release notes are not generated."
119 ghuddy 778
 
129 ghuddy 779
   Case "PACKAGE_FOUND_IN_OTHER_LOCATIONS"
780
      msg = "This package is also found in other locations."
781
   Case "DOC_NUMBER_NOTFOUND"
782
      msg = "<span class='err_alert'>Document number "& Request("doc_num") &" does not correspond to any document!</span>"
783
   Case "DOC_NUMBER_FOUND"
784
      msg = "Document found. Click &quot;Import&quot; to link the document."
785
   Case "UNIT_TEST_NOT_DONE"
786
      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."
787
   Case "PACKAGE_NOT_PART_OF_RELEASE"
788
      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 789
 
129 ghuddy 790
   Case "NOT_FOUND_IN_PKG_ARCHIVE_FILE_GENERATE"
791
      msg = "<b>This package is not found in dpkg_archive or deploy_archive!</b><br>Files and folders are not captured.<br><a href='_generate_files_and_folders.asp?rfile="& scriptName &"&pv_id="& Request("pv_id") &"&rtag_id="& Request("rtag_id") &"' class='txt_linked' onClick=""ProgressBar.style.visibility='visible';"">Click here</a> to try again."
792
   Case "GENERATE_FILES_AND_FOLDERS"
793
      msg = "<b>Files and folders not found.</b><br><a href='_generate_files_and_folders.asp?pv_id="& Request("pv_id") &"&rtag_id="& Request("rtag_id") &"' class='txt_linked' onClick=""ProgressBar.style.visibility='visible';"">Click here</a> to try capture them."
794
   Case "NO_PRODUCT_FILES_CAPTURED"
795
      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 796
 
129 ghuddy 797
   Case "MASS REF REFERENCE"
798
      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 799
 
129 ghuddy 800
   Case "REPEAT_SCHEDULE_NOT_SELECTED"
801
      msg = "<span class='err_alert'><b>YOU MUST SELECT A VALUE FOR REPEAT SCHEDULED DOWNTIME</b></span>"
119 ghuddy 802
 
129 ghuddy 803
   Case "PKG_NAME_INVALID"
804
      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 805
 
129 ghuddy 806
   Case "PKG_NAME_EXISTS"
807
      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 808
 
129 ghuddy 809
   End Select
119 ghuddy 810
%>
811
<table width="<%=SSwidth%>" border="0" cellspacing="0" cellpadding="1">
812
  <tr>
813
    <td background="images/bg_bage_dark.gif">
129 ghuddy 814
     <table width="100%" border="0" cellspacing="0" cellpadding="3">
119 ghuddy 815
        <tr>
816
          <td width="1%" valign="top" background="images/bg_help.gif"><img src="images/i_qhelp.gif" width="16" height="16"></td>
817
          <td width="100%" background="images/bg_help.gif" class="form_txt"><%=msg%></td>
818
        </tr>
819
      </table></td>
820
  </tr>
821
</table>
822
<br>
823
<%
824
 
825
End Sub
826
'-----------------------------------------------------------------------------------------------------------------------------
827
Sub Messenger ( sMessage, nMessageType, sWidth )
129 ghuddy 828
   Dim msgTemplate, Img
119 ghuddy 829
 
129 ghuddy 830
   If (sMessage = "") OR IsNull(sMessage) Then Exit Sub
119 ghuddy 831
 
129 ghuddy 832
   Select Case CStr(nMessageType)
833
      Case "1"
834
         Img = "s_critical.gif"
835
      Case "2"
836
         Img = "s_warning.gif"
837
      Case "3"
838
         Img = "s_note.gif"
839
      Case Else
840
         Img = nMessageType
841
   End Select
119 ghuddy 842
 
843
 
129 ghuddy 844
   msgTemplate = ReadFile( APP_ROOT &"\scripts\message_style.html" )
845
   msgTemplate = Replace( msgTemplate, "%WIDTH%", sWidth )
846
   msgTemplate = Replace( msgTemplate, "%IMAGE%", Img )
847
   msgTemplate = Replace( msgTemplate, "%MESSAGE%", sMessage )
119 ghuddy 848
 
129 ghuddy 849
   Response.write msgTemplate
119 ghuddy 850
End Sub
851
'-----------------------------------------------------------------------------------------------------------------------------
129 ghuddy 852
Function Default_Label ( SSpv_id, SSbuild_type, SSpkg_name, SSpkg_version, SSv_ext )
853
   Dim rsTemp, Query_String
854
   ' Do not do anything is label already exists
855
   'If Not IsNull(rsPkgInfo("pkg_label")) OR (rsPkgInfo("pkg_label")<>"")Then
856
   '   Default_Label = rsPkgInfo("pkg_label")
857
   '   Exit Function
858
   'End If
119 ghuddy 859
 
129 ghuddy 860
   If Request("rtag_id") <> "" Then
119 ghuddy 861
 
129 ghuddy 862
      Set rsTemp = OraDatabase.DbCreateDynaset( "SELECT PROJ_ID FROM RELEASE_TAGS WHERE RTAG_ID = "& Request("rtag_id") &"" , cint(0) )
119 ghuddy 863
 
129 ghuddy 864
      If InStr(1, SSpkg_name, "ERG") = 1 AND rsTemp("proj_id") <> 202 Then
865
         ' For ERG products
866
         If IsNull(SSv_ext) OR (SSv_ext = "") Then
867
            ' blank extention e.i. MAS
868
            Default_Label = "MAS_"& UCase(SSpkg_name) &"_R_"& Format_Version( SSpkg_version, NULL )
869
         Else
870
            Default_Label = UCase( Replace(SSv_ext, ".", "") ) &"_"& UCase(SSpkg_name) &"_R_"& Format_Version( SSpkg_version, SSv_ext )
871
         End If
872
      Else
873
         ' For others
874
         If SSbuild_type = "A" Then
875
            Default_Label = UCase(SSpkg_name & "." & SSpv_id & SSv_ext & ".WIP")
876
         Else
877
            Default_Label = SSpkg_name &"_"& SSpkg_version
878
         End If
119 ghuddy 879
 
129 ghuddy 880
      End If
119 ghuddy 881
 
129 ghuddy 882
      rsTemp.Close()
883
      Set rsTemp = nothing
884
   Else
885
      If InStr(1, SSpkg_name, "ERG") = 1 Then
886
         ' For ERG products
887
         If IsNull(SSv_ext) OR (SSv_ext = "") Then
888
            ' blank extention e.i. MAS
889
            Default_Label = "MAS_"& UCase(SSpkg_name) &"_R_"& Format_Version( SSpkg_version, NULL )
890
         Else
891
            Default_Label = UCase( Replace(SSv_ext, ".", "") ) &"_"& UCase(SSpkg_name) &"_R_"& Format_Version( SSpkg_version, SSv_ext )
892
         End If
893
      Else
894
         ' For others
895
         If SSbuild_type = "A" Then
896
            Default_Label = UCase(SSpkg_name & "." & SSpv_id & SSv_ext & ".WIP")
897
         Else
898
            Default_Label = SSpkg_name &"_"& SSpkg_version
899
         End If
900
      End If
901
   End If
119 ghuddy 902
End Function
903
'-----------------------------------------------------------------------------------------------------------------------------
904
Function Format_Version ( SSpkg_version, SSv_ext )
129 ghuddy 905
   Dim tempArr, tempVersion, patchArr, seg, myVersion
906
   myVersion = SSpkg_version
119 ghuddy 907
 
129 ghuddy 908
   If NOT IsNull(SSv_ext) Then
909
      myVersion = Left ( myVersion, Len(myVersion) - Len(SSv_ext) )
910
   End If
119 ghuddy 911
 
129 ghuddy 912
   tempArr = Split (myVersion, ".")
913
   For Each seg In tempArr
914
      If Len(seg) < 2 Then
915
         ' single digit number
916
         tempVersion = tempVersion &"0"& seg
119 ghuddy 917
 
129 ghuddy 918
      Else
919
         seg = Replace(seg, "_", "-")   ' make sure that there is no _ in segment
920
         If InStr( seg, "-" ) > 0 Then
921
            ' patch version supplied
922
            patchArr = Split(seg, "-")
923
            If Len(patchArr(0)) < 2 Then
924
               ' single digit number
925
               tempVersion = tempVersion &"0"& patchArr(0) &"_0"& patchArr(1)
926
            Else
927
               ' double digit number
928
               tempVersion = tempVersion & patchArr(0) &"_0"& patchArr(1)
929
            End If
119 ghuddy 930
 
129 ghuddy 931
         Else
932
            ' double digit no patch
933
            tempVersion = tempVersion & seg
934
         End If
119 ghuddy 935
 
129 ghuddy 936
      End If
119 ghuddy 937
 
129 ghuddy 938
   Next
119 ghuddy 939
 
129 ghuddy 940
   Format_Version = tempVersion
119 ghuddy 941
End Function
942
'-----------------------------------------------------------------------------------------------------------------------------
943
Function DefineStateIcon ( NNpkg_state, CCdlocked, sIgnoreWarnings, cIsPatchIgnore, cBuildType, bForEnvironment )
944
 
129 ghuddy 945
   If NOT IsNull(sIgnoreWarnings) Then
946
      '-- Ignore Warning is on
947
      If IsNull(cIsPatchIgnore) Then
948
         DefineStateIcon = enum_imgIgnoring
949
      Else
950
         DefineStateIcon = enum_imgPatchIgnoring
951
      End If
119 ghuddy 952
 
129 ghuddy 953
   Else
954
      Select Case CInt( NNpkg_state )
955
         Case enumPKG_STATE_OK
183 brianf 956
            If (CCdlocked = "N") OR (CCdlocked = "R") Then
129 ghuddy 957
               DefineStateIcon = enum_imgBuilding
183 brianf 958
            ElseIf (CCdlocked = "P") Then
959
               DefineStateIcon = enum_imgPending
129 ghuddy 960
            Else
961
               DefineStateIcon = enum_imgBlank
962
            End If
119 ghuddy 963
 
129 ghuddy 964
         Case enumPKG_STATE_MAJOR
965
            DefineStateIcon = enum_imgCritical
119 ghuddy 966
 
129 ghuddy 967
         Case enumPKG_STATE_MINOR
968
            DefineStateIcon = enum_imgWarning
119 ghuddy 969
 
129 ghuddy 970
         Case enumPKG_STATE_MAJOR_READY
971
            DefineStateIcon = enum_imgCReady
119 ghuddy 972
 
129 ghuddy 973
         Case enumPKG_STATE_MINOR_READY
974
            DefineStateIcon = enum_imgWReady
119 ghuddy 975
 
129 ghuddy 976
         Case enumPKG_NOT_FOUND
977
            DefineStateIcon = enum_imgNotFound
119 ghuddy 978
 
129 ghuddy 979
         Case enumPKG_STATE_NEW_PATCH
980
            DefineStateIcon = enum_imgPatchAvailable
119 ghuddy 981
 
129 ghuddy 982
         Case enumPKG_STATE_DEPRECATED
983
            DefineStateIcon = enum_imgDeprecated
119 ghuddy 984
 
129 ghuddy 985
         Case enumPKG_STATE_DEPRECATED_DEPENDENT
986
            DefineStateIcon = enum_imgDeprecatedDependent
119 ghuddy 987
 
129 ghuddy 988
         Case enumPKG_ADVISORY_RIPPLE
989
            DefineStateIcon = enum_imgAR
119 ghuddy 990
 
129 ghuddy 991
         Case enumPKG_ADVISORY_RIPPLE_DEPENDENT
992
            DefineStateIcon = enum_imgARD
119 ghuddy 993
 
131 ghuddy 994
         Case enumPKG_PEGGED_VERSION
995
            DefineStateIcon = enum_imgGreenPin
129 ghuddy 996
      End Select
119 ghuddy 997
 
129 ghuddy 998
      If (NOT bForEnvironment) AND _
999
         (cBuildType = "A") AND _
1000
         (CCdlocked <> "Y") AND _
1001
         (DefineStateIcon <> enum_imgBlank) AND _
1002
         (DefineStateIcon <> enum_imgBuilding)  AND  _
1003
         (DefineStateIcon <> enum_imgNotFound) OR _
1004
         ( Request("rtag_id") = ""  AND  Request("FRrtag_id") = "")  _
1005
         Then
119 ghuddy 1006
 
129 ghuddy 1007
         DefineStateIcon = ""
119 ghuddy 1008
 
129 ghuddy 1009
       End If
119 ghuddy 1010
 
1011
 
129 ghuddy 1012
   End If
119 ghuddy 1013
 
1014
 
1015
End Function
1016
'-----------------------------------------------------------------------------------------------------------------------------
1017
Function DefineStateSmallIcon ( NNpkg_state, CCdlocked )
129 ghuddy 1018
   Select Case CInt( NNpkg_state )
1019
   Case enumPKG_STATE_OK
1020
      If CCdlocked = "N" Then
1021
         DefineStateSmallIcon = enum_SMALL_imgBuilding
1022
      Else
1023
         DefineStateSmallIcon = enum_SMALL_imgOK
1024
      End If
119 ghuddy 1025
 
129 ghuddy 1026
   Case enumPKG_STATE_MAJOR
1027
      DefineStateSmallIcon = enum_SMALL_imgCritical
119 ghuddy 1028
 
129 ghuddy 1029
   Case enumPKG_STATE_MINOR
1030
      DefineStateSmallIcon = enum_SMALL_imgWarning
119 ghuddy 1031
 
129 ghuddy 1032
   Case enumPKG_STATE_MAJOR_READY
1033
      DefineStateSmallIcon = enum_SMALL_imgCReady
119 ghuddy 1034
 
129 ghuddy 1035
   Case enumPKG_STATE_MINOR_READY
1036
      DefineStateSmallIcon = enum_SMALL_imgWReady
119 ghuddy 1037
 
129 ghuddy 1038
   End Select
119 ghuddy 1039
End Function
1040
'-----------------------------------------------------------------------------------------------------------------------------
1041
Function PatchIcon ( cIsPatch, cIsPatchObsolete )
129 ghuddy 1042
   If IsNull(cIsPatch) Then
1043
      PatchIcon = "<img src='images/rex_images/ext_blank.gif' width='16' height='16' border='0' align='absmiddle'>"
1044
   Else
1045
      If IsNull(cIsPatchObsolete) Then
1046
         PatchIcon = "<img src='images/i_patch_small.gif' width='16' height='16' border='0' align='absmiddle' >"
1047
      Else
1048
         PatchIcon = "<img src='images/i_patch_small_obsolete.gif' width='16' height='16' border='0' align='absmiddle' title='Patch is obsolete'>"
1049
      End If
1050
   End If
119 ghuddy 1051
End Function
1052
'-----------------------------------------------------------------------------------------------------------------------------
1053
' Function that returns true of false if the item exists in the array
1054
'-----------------------------------------------------------------------------------------------------------------------------
1055
Function inArray(item, aItems)
129 ghuddy 1056
   Dim element
1057
   inArray = false
1058
   for each element in aItems
1059
      If element = item Then
1060
         inArray=true
1061
      End If
1062
   next
119 ghuddy 1063
End Function
1064
'-----------------------------------------------------------------------------------------------------------------------------
1065
Function ProgressBar ()
129 ghuddy 1066
   ProgressBar = "<DIV name='divProgressBar' id='divProgressBar' style='visibility:hidden;'><img src='icons/i_processing.gif' width='79' height='14'></DIV>"
119 ghuddy 1067
End Function
1068
'-----------------------------------------------------------------------------------------------------------------------------
1069
Function GetCurrentParameters( nProjId, nRtagId, nPvId )
129 ghuddy 1070
   Dim rsQry,query
119 ghuddy 1071
 
129 ghuddy 1072
   ' Set defaults
1073
   nProjId    = -1
1074
   nRtagId    = -1
1075
   nPvId       = -1
119 ghuddy 1076
 
1077
 
129 ghuddy 1078
   ' Get parameters from database
1079
   OraDatabase.Parameters.Add "ProjId",       Request("proj_id"),   ORAPARM_INPUT, ORATYPE_VARCHAR2
1080
   OraDatabase.Parameters.Add "Rtag_id",       Request("rtag_id"),   ORAPARM_INPUT, ORATYPE_VARCHAR2
1081
   OraDatabase.Parameters.Add "results",       NULL, ORAPARM_OUTPUT, ORATYPE_CURSOR
119 ghuddy 1082
 
129 ghuddy 1083
   OraDatabase.ExecuteSQL " BEGIN  PK_APP_UTILS.GET_CURRENT_PARAMETERS ( :ProjId, :Rtag_id, :results ); END;"
119 ghuddy 1084
 
129 ghuddy 1085
   Set rsQry = OraDatabase.Parameters("results").Value
119 ghuddy 1086
 
129 ghuddy 1087
   OraDatabase.Parameters.Remove "ProjId"
1088
   OraDatabase.Parameters.Remove "Rtag_id"
1089
   OraDatabase.Parameters.Remove "results"
119 ghuddy 1090
 
1091
 
129 ghuddy 1092
   If rsQry.RecordCount > 0 Then
119 ghuddy 1093
 
129 ghuddy 1094
      nProjId    = CDbl(rsQry("PROJ_ID"))
1095
      nRtagId    = CDbl(rsQry("RTAG_ID"))
119 ghuddy 1096
 
129 ghuddy 1097
   End If
119 ghuddy 1098
 
129 ghuddy 1099
   rsQry.Close()
1100
   Set rsQry = nothing
119 ghuddy 1101
 
1102
 
129 ghuddy 1103
   ' Set pv_id parameter
1104
   If Request("pv_id") <> "" Then nPvId = CDbl(Request("pv_id"))
119 ghuddy 1105
 
1106
 
1107
End Function
1108
'-----------------------------------------------------------------------------------------------------------------------------
1109
Function GetEnvName ( nEnvTab )
129 ghuddy 1110
   Select Case CInt( nEnvTab )
1111
      Case enumENVTAB_WORK_IN_PROGRESS
1112
         GetEnvName = "Work In Progress"
119 ghuddy 1113
 
129 ghuddy 1114
      Case enumENVTAB_PLANNED
1115
         GetEnvName = "Pending"
119 ghuddy 1116
 
129 ghuddy 1117
      Case enumENVTAB_RELEASED
1118
         GetEnvName = "Released"
119 ghuddy 1119
 
129 ghuddy 1120
   End Select
119 ghuddy 1121
 
1122
End Function
1123
'-----------------------------------------------------------------------------------------------------------------------------
1124
Function Title (rtagId)
1125
 
129 ghuddy 1126
   If rtagId = "" Then
1127
      Title = "Release Manager"
1128
   Else
1129
      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 )
1130
      Title = rsQry("proj_name")&">"&rsQry("rtag_name")
1131
      rsQry.Close()
1132
      Set rsQry = Nothing
1133
   End If
119 ghuddy 1134
 
1135
End Function
1136
'-------------------------------------------------------------------------------------
1137
Function Check_Package_WIP_Already_Exists(NNrtag_id, NNpv_id)
129 ghuddy 1138
   Dim Query_String, rsQry
119 ghuddy 1139
 
129 ghuddy 1140
   Query_String = _
1141
   "   SELECT * "&_
1142
   "   FROM planned pl, package_versions pv "&_
1143
   "   WHERE pl.rtag_id = "& NNrtag_id &_
1144
   "   AND pv.pv_id = pl.pv_id "&_
1145
   "   AND pv.dlocked = 'A' "&_
1146
   "   AND pv.pkg_id = (SELECT pkg_id "&_
1147
       "                  FROM package_versions "&_
1148
       "                 WHERE pv_id = "& NNpv_id &") "&_
1149
   "   AND pv.v_ext = (SELECT v_ext "&_
1150
   "                  FROM package_versions "&_
1151
       "                 WHERE pv_id = "& NNpv_id &")"
119 ghuddy 1152
 
1153
 
129 ghuddy 1154
   Set rsQry = OraDatabase.DbCreateDynaset( Query_String , cint(0) )
119 ghuddy 1155
 
129 ghuddy 1156
   Check_Package_WIP_Already_Exists = rsQry.RecordCount
119 ghuddy 1157
 
129 ghuddy 1158
   rsQry.Close()
1159
   Set rsQry = Nothing
119 ghuddy 1160
End Function
1161
'-----------------------------------------------------------------------------------------------------------------------------
1162
Function ValidateCodeReviewURL ( sCodeReviewURL )
1163
  Dim isValid
1164
  Dim sTempBaseURL
1165
  Dim httpRegEx
129 ghuddy 1166
   Set httpRegEx = new RegExp
119 ghuddy 1167
 
129 ghuddy 1168
   httpRegEx.Pattern = "^https?:\/\/"
119 ghuddy 1169
 
129 ghuddy 1170
   ' Removes ending slash from project's base URL for ease of comparison.
1171
   sTempBaseURL = Left(baseURL, Len(baseURL)-1)
1172
   ' Removes the project's base URL from the URL specified (if it's present).
1173
   codeReviewURL = Replace(sCodeReviewURL, sTempBaseURL, "")
1174
   ' Removes the slash from the beginning of the resulting URL (if it's present).
1175
   If InStr(codeReviewURL, "/") = 1 Then
1176
     codeReviewURL = Replace(codeReviewURL, "/", "", 1, 1)
1177
   End If
119 ghuddy 1178
 
129 ghuddy 1179
   ' If the URL doesn't contain the http:// prefix, assume that it's correct.
1180
   If NOT httpRegEx.Test(codeReviewURL) AND Len(codeReviewURL) > 0 Then
1181
     isValid = True
1182
   Else
1183
     ' If the URL still contains the http:// prefix and is longer than the base
1184
     ' URL, assume that it is an invalid URL because of a differing base URL.
1185
     If Len(sCodeReviewURL) > Len(baseURL) Then
1186
       Response.Write("<script type='text/javascript'>alert('Incorrect Base URL\n\nMust start with project\'s base url (" & baseURL &") if full URL specified.')</script>")
1187
     Else
1188
     ' If the URL still contains the http:// prefix and is shorter than the base
1189
     ' URL, assume that it is incomplete.
1190
       Response.Write("<script type='text/javascript'>alert('Incomplete Code Review URL')</script>")
1191
     End If
1192
     ' Otherwise, the URL matches the base URL exactly, which is also invalid.
1193
     codeReviewURL = sCodeReviewURL
1194
     isValid = False
1195
   End If
1196
   ValidateCodeReviewURL = isValid
119 ghuddy 1197
End Function
1198
'----------------------------------------------------------------------------------------------------------------------------------------
1199
Function Is_Page_Editable ( cDlocked )
129 ghuddy 1200
   ' Editable if (   (unlocked OR rejected)
1201
   '              OR ( NOT released/locked AND EditReleaseNotesInPending allowed)
1202
   '              OR (released/locked AND EditNonCriticalInfoForLockedPackage allowed)
1203
   '             )
1204
   '             AND user logged in
1205
   If (((cDlocked = "N") OR (cDlocked = "R")) OR ((cDlocked <> "Y") AND (objAccessControl.IsActive("EditReleaseNotesInPending"))) OR ((cDlocked = "Y") AND (objAccessControl.IsActive("EditNonCriticalInfoForLockedPackage")))) AND objAccessControl.UserLogedIn Then
1206
      Is_Page_Editable = TRUE
1207
   Else
1208
      Is_Page_Editable = FALSE
1209
   End If
119 ghuddy 1210
End Function
1211
'----------------------------------------------------------------------------------------------------------------------------------------
1212
Function Is_Section_Editable ( )
129 ghuddy 1213
   If scriptName = "fixed_issues.asp" AND objAccessControl.UserLogedIn Then
1214
      Is_Section_Editable = TRUE
1215
   Else
1216
      Is_Section_Editable = FALSE
1217
   End If
119 ghuddy 1218
End Function
1219
'----------------------------------------------------------------------------------------------------------------------------------------
1220
Function Is_Critical_Section_Editable ( cDlocked )
129 ghuddy 1221
   ' Editable if (   (unlocked OR rejected)
1222
   '              OR ( NOT released/locked AND EditReleaseNotesInPending allowed)
1223
   '              OR (released/locked AND EditCriticalInfoForLockedPackage allowed)
1224
   '             )
1225
   '             AND user logged in
1226
   If (((cDlocked = "N") OR (cDlocked = "R")) OR ((cDlocked <> "Y") AND (objAccessControl.IsActive("EditReleaseNotesInPending"))) OR ((cDlocked = "Y") AND (objAccessControl.IsActive("EditCriticalInfoForLockedPackage")))) AND objAccessControl.UserLogedIn Then
1227
      Is_Critical_Section_Editable = TRUE
1228
   Else
1229
      Is_Critical_Section_Editable = FALSE
1230
   End If
119 ghuddy 1231
End Function
1232
 
1233
'---------------------------------------------------------------
1234
' Function: Codestriker_Command
1235
'
1236
' Purpose:   Forms a codestriker differencing command for use when
1237
'            preparing codestriker reviews. This will be used mainly
1238
'            on release notes pages.
1239
'
1240
' Arguments: old_label   : The previous or older label
1241
'            new_label   : The current or newer label
1242
'
1243
Function Codestriker_Command (oldLabel, new_label)
1244
 
129 ghuddy 1245
   If ( IsNull(new_label) ) Then
1246
      Codestriker_Command = "Label not defined"
1247
   ElseIf (IsNull(oldLabel) OR oldLabel = "" ) Then
1248
      Codestriker_Command = "jats CCdiff -new=" & new_label
1249
   Else
1250
      Codestriker_Command = "jats CCdiff -old=" & oldLabel & " -new=" & new_label
1251
   End If
119 ghuddy 1252
End Function
1253
 
1254
'---------------------------------------------------------------
1255
' Function: getLastNonRippleVersionPVID
1256
'
1257
' Purpose: returns the last non-ripple version of the package
1258
'
1259
' Arguments: this_pv_id : string
1260
'
1261
' Notes: In the past, users used to manually perform ripple builds.
1262
'        This function does not detect those as ripples. It could be
1263
'        made to do so but it would not be reliable. For example, it
1264
'        could check to see if the word "ripple" appears in the
1265
'        comments field of the record set of the SWL query.  That
1266
'        might catch some of those records, but assumes the user
1267
'        wrote the wor ripple into the comments (reason for version).
1268
'
1269
Function getLastNonRippleVersionPVID( this_pv_id )
129 ghuddy 1270
   Dim queryResult
1271
   Dim queryString
1272
   Dim finalPVID
1273
   Dim lastPVID
119 ghuddy 1274
 
129 ghuddy 1275
   ' default return value in case we never get into the loop
1276
   finalPVID = this_pv_id
119 ghuddy 1277
 
129 ghuddy 1278
   ' Get record for this PVID
157 ghuddy 1279
   queryString = "SELECT build_type, last_pv_id FROM package_versions WHERE pv_id = " & this_pv_id
119 ghuddy 1280
 
129 ghuddy 1281
   Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))
119 ghuddy 1282
 
129 ghuddy 1283
    If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then
119 ghuddy 1284
 
129 ghuddy 1285
      ' If this version is a ripple built version, begin the process of finding its ancestral non-ripple built version
1286
      If (queryResult("build_type") = "Y") Then
119 ghuddy 1287
 
129 ghuddy 1288
         lastPVID = queryResult("last_pv_id")
119 ghuddy 1289
 
129 ghuddy 1290
         ' We know we have some ripple built versions now, so arm the finalPVID for loop control
1291
         finalPVID = ""
119 ghuddy 1292
 
129 ghuddy 1293
         ' Work back through the version history until we hit a record that is not a ripple build version
1294
         Do While ((NOT queryResult.BOF) AND (NOT queryResult.EOF) AND (NOT IsNull(lastPVID)) AND (finalPVID = ""))
119 ghuddy 1295
 
157 ghuddy 1296
            queryString = "SELECT build_type, last_pv_id FROM package_versions WHERE pv_id = " & lastPVID
119 ghuddy 1297
 
129 ghuddy 1298
            Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))
119 ghuddy 1299
 
129 ghuddy 1300
            ' if the package version is a ripple built one, go round the loop again, else trigger a loop exit
1301
            If ((NOT queryResult.BOF) AND (NOT queryResult.EOF) AND ( queryResult("build_type") = "Y")) Then
1302
               lastPVID  = queryResult("last_pv_id")
1303
            Else
1304
               finalPVID = lastPVID
1305
            End If
1306
         Loop
1307
      End If
1308
   End If
119 ghuddy 1309
 
129 ghuddy 1310
   queryResult.Close()
1311
   Set queryResult = nothing
119 ghuddy 1312
 
129 ghuddy 1313
   getLastNonRippleVersionPVID = finalPVID
119 ghuddy 1314
End Function
1315
 
159 ghuddy 1316
Function getLastNonRippleVersionPVIDLimitedByDate( this_pv_id, limitDate )
1317
   Dim queryResult
1318
   Dim queryString
1319
   Dim finalPVID
1320
   Dim lastPVID
1321
 
1322
   ' default return value in case we never get into the loop
1323
   finalPVID = this_pv_id
1324
 
1325
   ' Get record for this PVID
1326
   queryString = "SELECT build_type, last_pv_id FROM package_versions WHERE pv_id = " & this_pv_id
1327
 
1328
   Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))
1329
 
1330
   If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then
1331
 
1332
      ' If this version is a ripple built version, begin the process of finding its ancestral non-ripple built version
1333
      If (queryResult("build_type") = "Y") Then
1334
 
1335
         lastPVID = queryResult("last_pv_id")
1336
 
1337
         ' We know we have some ripple built versions now, so arm the finalPVID for loop control
1338
         finalPVID = ""
1339
 
1340
         ' Work back through the version history until we hit a record that is not a ripple build version
1341
         Do While ((NOT queryResult.BOF) AND (NOT queryResult.EOF) AND (NOT IsNull(lastPVID)) AND (finalPVID = ""))
1342
 
1343
            queryString = "SELECT build_type, last_pv_id FROM package_versions "&_
1344
                          " WHERE pv_id = " & lastPVID &_
1345
                          "   AND MODIFIED_STAMP >= TO_DATE('" & limitDate & "','DD/MM/YYYY')"
1346
 
1347
            Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))
1348
 
1349
            ' if the package version is a ripple built one, go round the loop again, else trigger a loop exit
1350
            If ((NOT queryResult.BOF) AND (NOT queryResult.EOF) AND ( queryResult("build_type") = "Y")) Then
1351
               lastPVID  = queryResult("last_pv_id")
1352
            Else
1353
               finalPVID = lastPVID
1354
            End If
1355
         Loop
1356
      End If
1357
   End If
1358
 
1359
   queryResult.Close()
1360
   Set queryResult = nothing
1361
 
1362
   getLastNonRippleVersionPVIDLimitedByDate = finalPVID
1363
End Function
1364
 
1365
 
119 ghuddy 1366
'---------------------------------------------------------------
1367
' Function: getPreviousVersionPVID
1368
'
1369
' Purpose: returns the immediate predecssor version of the given
1370
'          package version
1371
'
1372
' Arguments: this_pv_id : string
1373
'
1374
' Notes:
1375
'
1376
Function getPreviousVersionPVID( this_pv_id )
129 ghuddy 1377
   Dim queryResult
1378
   Dim queryString
119 ghuddy 1379
 
129 ghuddy 1380
   getPreviousVersionPVID = ""
119 ghuddy 1381
 
157 ghuddy 1382
   queryString = "SELECT last_pv_id FROM package_versions WHERE pv_id = " & this_pv_id
119 ghuddy 1383
 
129 ghuddy 1384
   Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))
119 ghuddy 1385
 
129 ghuddy 1386
    If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then
1387
      getPreviousVersionPVID = queryResult("last_pv_id")
1388
   End If
119 ghuddy 1389
 
129 ghuddy 1390
   queryResult.Close()
1391
   Set queryResult = nothing
119 ghuddy 1392
 
1393
End Function
1394
 
1395
'---------------------------------------------------------------
129 ghuddy 1396
' Function: getLastSignificantPVID
1397
'
1398
' Purpose: Returns the last significant (man-made) version (PV_ID) that
1399
'          is a predecessor to the specified pv_id
1400
'
1401
' Arguments: pv_id       : Uniquely identifies this package version
1402
'            last_pv_id  : Uniquely identifies the predecssor of this package version
1403
' Notes:
1404
'
1405
Function getLastSignificantPVID (pv_id, last_pv_id)
1406
 
1407
   getLastSignificantPVID = ""
1408
 
1409
   If( (NOT IsNull(last_pv_id)) AND (last_pv_id <> pv_id) ) Then
1410
 
1411
      ' Get the pv_id for the current version, and if necessary, work back through any ripple versions as necessary
1412
      ' to get a non-ripple version ancestor
1413
        pv_id = getLastNonRippleVersionPVID( pv_id )
1414
      If (pv_id <> "") Then
1415
         ' get the pv_id of the previous version to the non-ripple version ancestor we just found.
1416
         ' It does not matter if we get a ripple version here. It is good enough to serve the purpose of version diff'ing
1417
         pv_id = getPreviousVersionPVID( pv_id )
1418
         If (pv_id <> "") Then
1419
            getLastSignificantPVID = pv_id
1420
         End If
1421
      End If
1422
 
1423
   End If
1424
 
1425
End Function
1426
'---------------------------------------------------------------
1427
' Function: get_Pkg_Label
1428
'
1429
' Purpose: Returns the package label for the specified pv_id
1430
'
1431
' Arguments: pv_id       : Uniquely identifies this package version
1432
'
1433
Function get_Pkg_Label (pv_id)
1434
   Dim queryResult
1435
   Dim queryString
1436
 
1437
   get_Pkg_Label = ""
1438
 
1439
   ' Get the package label from the package versions table
1440
   queryString = "SELECT pkg_label FROM package_versions WHERE pv_id = " & pv_id
1441
   Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))
1442
   If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then
1443
      get_Pkg_Label = queryResult("pkg_label")
1444
   End If
1445
   queryResult.Close()
1446
   Set queryResult = nothing
1447
End Function
1448
'---------------------------------------------------------------
1449
' Function: get_Src_Path
1450
'
1451
' Purpose: Returns the source path for the specified pv_id
1452
'
1453
' Arguments: pv_id       : Uniquely identifies this package version
1454
'
1455
Function get_Src_Path (pv_id)
1456
   Dim queryResult
1457
   Dim queryString
1458
 
1459
   get_Src_Path = ""
1460
 
1461
   ' Get the source path from package versions table
1462
   queryString = "SELECT src_path FROM package_versions WHERE pv_id = " & pv_id
1463
   Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))
1464
   If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then
1465
      get_Src_Path = queryResult("src_path")
1466
   End If
1467
   queryResult.Close()
1468
   Set queryResult = nothing
1469
End Function
1470
 
1471
'---------------------------------------------------------------
119 ghuddy 1472
' Function: getOldLabel
1473
'
1474
' Purpose: Returns the previous label; if none then returns empty string
1475
'
1476
'          Since this operation is designed to fulfil the generation of
1477
'          diff commands, there is no point in considering ripple
1478
'          versions, since the only differences we find there are in
1479
'          the build.pl files (for example). So, this function uses
1480
'          some underlying methods that ignore ripple built versions
1481
'          therefore concentrating on versions that someone has manually
1482
'          gone and labelled, presumably because they changed some
1483
'          source file other than build.pl.
1484
'
1485
' Arguments: pv_id       : Uniquely identifies this package version
1486
'            last_pv_id  : Uniquely identifies the predecssor of this package version
1487
' Notes:
1488
'
1489
Function getOldLabel (pv_id, last_pv_id)
129 ghuddy 1490
   Dim lastSignificantPVID
119 ghuddy 1491
 
129 ghuddy 1492
   getOldLabel = ""
119 ghuddy 1493
 
129 ghuddy 1494
   lastSignificantPVID = getLastSignificantPVID(pv_id, last_pv_id)
1495
   If (lastSignificantPVID <> "") Then
1496
      getOldLabel = get_Pkg_Label(lastSignificantPVID)
1497
   End If
1498
End Function
1499
'---------------------------------------------------------------
1500
' Function: getOldSrcPath
1501
'
1502
' Purpose: Returns the previous src path; if none then returns empty string
1503
'
1504
'          Since this operation is designed to fulfil the generation of
1505
'          diff commands, there is no point in considering ripple
1506
'          versions, since the only differences we find there are in
1507
'          the build.pl files (for example). So, this function uses
1508
'          some underlying methods that ignore ripple built versions
1509
'          therefore concentrating on versions that someone has manually
1510
'          gone and labelled, presumably because they changed some
1511
'          source file other than build.pl.
1512
'
1513
'          NOTE: With SubVersion, the src_path column in the package_versions
1514
'                table will be used to hold the Subversion tag. This function
1515
'                will therefore be used mostly when a package version is
1516
'                controlled under subversion.
1517
'
1518
' Arguments: pv_id       : Uniquely identifies this package version
1519
'            last_pv_id  : Uniquely identifies the predecssor of this package version
1520
' Notes:
1521
'
1522
Function getOldSrcPath (pv_id, last_pv_id)
1523
   Dim lastSignificantPVID
119 ghuddy 1524
 
129 ghuddy 1525
   getOldSrcPath = ""
119 ghuddy 1526
 
129 ghuddy 1527
   lastSignificantPVID = getLastSignificantPVID(pv_id, last_pv_id)
1528
   If (lastSignificantPVID <> "") Then
1529
      getOldSrcPath = get_Src_Path(lastSignificantPVID)
1530
   End If
1531
End Function
1532
'----------------------------------------------------------------------------------------------------------------------
1533
Sub vcs_info_from_vcs_tag( nVcs_tag, ByRef objDetails )
1534
   Dim rsTemp, Query_String
119 ghuddy 1535
 
129 ghuddy 1536
   Query_String = " SELECT * FROM vcs_type WHERE tag = '"& nVcs_tag &"'"
1537
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
1538
   If (NOT rsTemp.BOF ) AND (NOT rsTemp.EOF) Then
1539
      objDetails.Item("vcs_type_id") = rsTemp("vcs_type_id")
1540
      objDetails.Item("vcs_name") = rsTemp("name")
1541
      objDetails.Item("vcs_tag") = rsTemp("tag")
1542
   Else
141 ghuddy 1543
      Call RaiseMsg(enum_MSG_ERROR, "Database does not contain a record of the VCS tag : " & nVcs_tag )
129 ghuddy 1544
   End If
1545
   rsTemp.Close()
1546
   set rsTemp = nothing
1547
End Sub
1548
'----------------------------------------------------------------------------------------------------------------------
1549
Sub vcs_info_from_vcs_type_id( nVcs_type_id, ByRef objDetails )
1550
   Dim rsTemp, Query_String
1551
 
1552
   If NOT IsNull(nVcs_type_id) Then
1553
      Query_String = " SELECT * FROM vcs_type WHERE vcs_type_id = "& nVcs_type_id
1554
      Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
1555
      If (NOT rsTemp.BOF ) AND (NOT rsTemp.EOF) Then
1556
         objDetails.Item("vcs_type_id") = rsTemp("vcs_type_id")
1557
         objDetails.Item("vcs_name") = rsTemp("name")
1558
         objDetails.Item("vcs_tag") = rsTemp("tag")
1559
      Else
141 ghuddy 1560
         Call RaiseMsg(enum_MSG_ERROR, "Database does not contain a record of the VCS type ID : " & nVcs_type_id )
129 ghuddy 1561
      End If
1562
      rsTemp.Close()
1563
      set rsTemp = nothing
1564
   Else
1565
      ' default to returning ClearCase info, assuming it exists in the data
1566
      Call vcs_info_from_vcs_tag( enum_VCS_CLEARCASE_TAG, objDetails )
1567
   End If
1568
End Sub
1569
'----------------------------------------------------------------------------------------------------------------------
137 ghuddy 1570
Sub get_vcs_info_for_package( nPkgLabel, nBuildType, nVcsTypeId, nDLocked, ByRef objDetails )
129 ghuddy 1571
   ' lots of patch versions exist with N/A as their pkg_label and null as vcs_type_id. These are all uncontrolled
1572
   ' packages published directly into dpkg_archive with no controlled source under clearcase, so we want to treat
1573
   ' them as uncontrolled if possible.
137 ghuddy 1574
   If nDLocked = "Y" AND ((nPkgLabel = "N/A") OR IsNull(nPkgLabel)) AND nBuildType = "M" AND IsNull(nVcsTypeId) Then
129 ghuddy 1575
      Call vcs_info_from_vcs_tag( enum_VCS_UNCONTROLLED_TAG, objDetails )
1576
   Else
1577
      ' Otherwise, try and decode the VCS from the package's vcs_type_id entry from the package version table
1578
      ' NOTE: A null vcs_type_id entry will default to ClearCase. That is all we have been using up til now so
1579
      ' it should be safe.
1580
      Call vcs_info_from_vcs_type_id( nVcsTypeId, objDetails )
1581
   End If
1582
End Sub
1583
'----------------------------------------------------------------------------------------------------------------------
1584
Sub get_vcs_info_for_pv_id( nPv_id, ByRef objDetails )
1585
   Dim rsTemp, Query_String
1586
 
1587
   Query_String = _
137 ghuddy 1588
   " SELECT pv.pkg_label, pv.build_type, pv.vcs_type_id, pv.dlocked "&_
129 ghuddy 1589
   "   FROM PACKAGE_VERSIONS pv"&_
1590
   "  WHERE pv.pv_id = "& nPv_id
1591
 
1592
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
1593
   If (NOT rsTemp.BOF ) AND (NOT rsTemp.EOF) Then
137 ghuddy 1594
      Call get_vcs_info_for_package( rsTemp("pkg_label"), rsTemp("build_type"), rsTemp("vcs_type_id"), rsTemp("dlocked"), objDetails )
129 ghuddy 1595
   Else
1596
      Call RaiseMsg(enum_MSG_ERROR, "PV_ID (" & nPv_id & ") Not Found")
1597
   End If
1598
   rsTemp.Close()
1599
   set rsTemp = nothing
1600
End Sub
1601
'----------------------------------------------------------------------------------------------------------------------
1602
Function get_vcs_tag( nPv_id )
1603
   Dim tempVcsInfoCollector
1604
   Set tempVcsInfoCollector = CreateObject("Scripting.Dictionary")
1605
 
1606
   Call get_vcs_info_for_pv_id( nPv_id, tempVcsInfoCollector )
1607
   get_vcs_tag = tempVcsInfoCollector.Item("vcs_tag")
1608
 
1609
   Set tempVcsInfoCollector = nothing
119 ghuddy 1610
End Function
129 ghuddy 1611
'----------------------------------------------------------------------------------------------------------------------
143 ghuddy 1612
Function isInDoNotRippleTable( NNrtag_id, NNpv_id )
1613
   Dim rsTemp, Query_String
119 ghuddy 1614
 
143 ghuddy 1615
   isInDoNotRippleTable = FALSE
1616
 
1617
   If NNrtag_id <> "" AND NNpv_id <> "" Then
1618
      Query_String = " SELECT dnr.pv_id FROM DO_NOT_RIPPLE dnr WHERE dnr.RTAG_ID ="& NNrtag_id &" AND dnr.PV_ID ="& NNpv_id
1619
 
1620
      Set rsTemp = OraDatabase.DbCreateDynaset(Query_String, cint(0))
1621
      If rsTemp.RecordCount <> 0  Then
1622
         isInDoNotRippleTable = TRUE
1623
      End If
1624
      rsTemp.Close()
1625
      set rsTemp = nothing
1626
   End If
1627
End Function
145 ghuddy 1628
'----------------------------------------------------------------------------------------------------------------------
1629
Function pv_id_exists( nPv_id )
1630
   Dim rsTemp, Query_String
143 ghuddy 1631
 
145 ghuddy 1632
   If NOT IsNull( nPv_id ) AND nPv_id <> "" Then
1633
      Query_String = _
1634
      " SELECT pv.pv_id "&_
1635
      "   FROM PACKAGE_VERSIONS pv"&_
1636
      "  WHERE pv.pv_id = "& nPv_id
1637
      Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
1638
      If (NOT rsTemp.BOF ) AND (NOT rsTemp.EOF) Then
1639
         pv_id_exists = TRUE
1640
      Else
1641
         pv_id_exists = FALSE
1642
      End If
1643
      rsTemp.Close()
1644
      set rsTemp = nothing
1645
   Else
1646
      pv_id_exists = FALSE
1647
   End If
1648
End Function
1649
'----------------------------------------------------------------------------------------------------------------------
1650
Function is_daemon_enabled_release( NNrtag_id, defaultReturnValue )
1651
   Dim rsTemp, Query_String
143 ghuddy 1652
 
145 ghuddy 1653
   If NOT IsNull( NNrtag_id ) AND NNrtag_id <> "" Then
143 ghuddy 1654
 
145 ghuddy 1655
      Query_String = _
1656
      " SELECT rc.daemon_hostname "&_
1657
      "   FROM RELEASE_CONFIG rc"&_
1658
      "  WHERE rc.rtag_id = "& NNrtag_id
1659
      Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
1660
 
1661
      is_daemon_enabled_release = FALSE
1662
      While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF) AND (is_daemon_enabled_release = FALSE))
1663
         If (NOT IsNull(rsTemp("daemon_hostname"))) AND (rsTemp("daemon_hostname") <> "") Then
1664
            is_daemon_enabled_release = TRUE
1665
         End If
1666
         rsTemp.MoveNext
1667
      WEnd
1668
 
1669
      rsTemp.Close()
1670
      set rsTemp = nothing
1671
   Else
1672
      is_daemon_enabled_release = defaultReturnValue
1673
   End If
1674
End Function
147 ghuddy 1675
'--------------------------------------------------------------------------------------------------------------------------
1676
' Convert release state into a meaningful string
1677
Function Get_Official( nOfficial )
1678
   If nOfficial = "N" Then
1679
      Get_Official = "Open"
1680
   ElseIf nOfficial = "A" Then
1681
      Get_Official = "Archive"
1682
   ElseIf nOfficial = "C" Then
1683
      Get_Official = "CCB"
1684
   ElseIf nOfficial = "R" Then
1685
      Get_Official = "Restricted"
1686
   ElseIf nOfficial = "Y" Then
1687
      Get_Official = "Closed"
1688
   Else
1689
      Get_Official = "?"
1690
   End If
1691
End Function
151 ghuddy 1692
'-----------------------------------------------------------------------------------------------------------------------------
1693
Function Get_Pkg_Id_For_Pv_Id ( NNpv_id )
1694
   Dim rsTemp, Query_String
145 ghuddy 1695
 
151 ghuddy 1696
   Get_Pkg_Id_For_Pv_Id = ""
145 ghuddy 1697
 
151 ghuddy 1698
   If NOT IsNull(NNpv_id) AND NNpv_id <> "" Then
1699
      Query_String = _
1700
      "SELECT pkg_id FROM package_versions WHERE pv_id = "& NNpv_id
1701
 
1702
      Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
1703
 
1704
      If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
1705
         Get_Pkg_Id_For_Pv_Id = rsTemp("pkg_id")
1706
      End If
1707
      rsTemp.Close
1708
      Set rsTemp = nothing
1709
   End If
1710
 
1711
End Function
1712
 
171 brianf 1713
'-----------------------------------------------------------------------------------------------------------------------------
161 iaugusti 1714
Function iif(bFlag, sTrueStr, sFalseStr)
1715
  if bFlag then
1716
    iif = sTrueStr
1717
  else 
1718
    iif = sFalseStr
1719
  end if
1720
End Function
151 ghuddy 1721
 
171 brianf 1722
'--------------------------------------------------------------------------------------------------------------------------
1723
' Sets the state of all build daemons of the specified release
1724
Sub SetDaemonStates (artag_id,astate)
1725
	On Error Resume Next
1726
	OraDatabase.Parameters.Add "RTAG_ID", 			artag_id, 	ORAPARM_INPUT, ORATYPE_NUMBER 
1727
	OraDatabase.Parameters.Add "NSTATE", 			astate, 	ORAPARM_INPUT, ORATYPE_NUMBER 
1728
 
1729
	objEH.TryORA ( OraSession )
1730
 
1731
	OraDatabase.ExecuteSQL _
1732
        "BEGIN PK_BUILDAPI.SET_DAEMON_STATES(:RTAG_ID,:NSTATE);   END;"
1733
 
1734
	objEH.CatchORA ( OraSession )
1735
 
1736
	OraDatabase.Parameters.Remove "RTAG_Id"
1737
	OraDatabase.Parameters.Remove "NSTATE"	
1738
End Sub
1739
 
183 brianf 1740
'----------------------------------------------
1741
'Returns true if the specified package version exists in the specified table
1742
Function PackageExists(RtagId, pvId, stable)
1743
  Dim rsTemp
1744
  Dim sqry
185 brianf 1745
  If RtagId = "" Then
1746
    PackageExists = False
1747
  Else
1748
    sqry = "SELECT * FROM " & stable & " WHERE rtag_id = " & RtagId & " AND pv_id = " & pvId
1749
    Set rsTemp = OraDatabase.DbCreateDynaset(sqry,CInt(0))
1750
    PackageExists = rsTemp.RecordCount > 0  
1751
    rsTemp.Close()
1752
    Set rsTemp = Nothing
1753
  End If
183 brianf 1754
End Function
1755
 
119 ghuddy 1756
%>