<% '===================================================== ' COMMON SUBs Part 1 '===================================================== Dim haveCommonSubs: haveCommonSubs = 1 %> <% '----------------------------------------------------------------------------------------------------------------------------- Sub CloseWindow %> <% End Sub '----------------------------------------------------------------------------------------------------------------------------- Sub OpenChildWindow ( SStitle, SSurl, SSH, SSW, BBscroll ) Dim scrlBar If BBscroll Then scrlBar = "yes" Else scrlBar = "no" End If %> <% End Sub '----------------------------------------------------------------------------------------------------------------------------- Sub OpenInParentWindow ( SSurl ) %> <% End Sub '----------------------------------------------------------------------------------------------------------------------------- Sub OpenInWindow ( SSurl ) Response.Redirect ( SSurl ) End Sub '----------------------------------------------------------------------------------------------------------------------------- Function GetQuery ( sQryName ) GetQuery = ReadFile( QUERIES_PATH &"\"& sQryName ) End Function '----------------------------------------------------------------------------------------------------------------------------- Sub RaiseMsg ( SSerrFile, SSerrDesc ) ' Usage: enumERROR, parval1 &"|"& parval2 &"|"& parval3 ... Session( enum_RELMGR_ERRDESCRIPTION ) = SSerrDesc Response.Redirect ("messages/"& SSerrFile ) End Sub '----------------------------------------------------------------------------------------------------------------------------- Sub RaiseMsgInParent ( SSerrFile, SSerrDesc ) Session( enum_RELMGR_ERRDESCRIPTION ) = SSerrDesc Call OpenInParentWindow ("messages/"& SSerrFile ) End Sub '----------------------------------------------------------------------------------------------------------------------------- Function ReadFile( SSpath ) Dim filesys, rfile Set filesys = CreateObject("Scripting.FileSystemObject") Set rfile = filesys.OpenTextFile( SSpath, 1, false) ReadFile = rfile.ReadAll rfile.close Set filesys = nothing End Function '----------------------------------------------------------------------------------------------------------------------------- Function HighlightSubstring ( SSstr, SSsubstr ) Dim leftSTR, startPos startPos = InStr( 1, SSstr, SSsubstr, 1 ) If startPos > 0 Then leftSTR = Left ( SSstr, startPos - 1 ) HighlightSubstring = leftSTR &""& Mid( SSstr, startPos, Len(SSsubstr) ) &""& Right ( SSstr, Len(SSstr) - Len(leftSTR) - Len(SSsubstr) ) Else ' Subtring not found HighlightSubstring = SSstr End If End Function '----------------------------------------------------------------------------------------------------------------------------- Sub DeleteFile( SSpath ) Dim filesys Set filesys = CreateObject("Scripting.FileSystemObject") If filesys.FileExists(SSpath) Then filesys.DeleteFile SSpath, TRUE End If Set filesys = nothing End Sub '----------------------------------------------------------------------------------------------------------------------------- Sub DeleteFolder( SSpath ) Dim filesys Set filesys = CreateObject ("Scripting.FileSystemObject") If filesys.FolderExists( SSpath ) Then 'Set oFolder = filesys.GetFolder( SSpath ) filesys.DeleteFolder SSpath ,TRUE End If End Sub '----------------------------------------------------------------------------------------------------------------------------- Sub Create_Folder ( sCreateIn, sFolderName ) Dim filesys, currfolder, folcoll, subfol Set filesys = CreateObject("Scripting.FileSystemObject") If filesys.FolderExists( sCreateIn ) Then Set currfolder = filesys.GetFolder( sCreateIn ) Set folcoll = currfolder.SubFolders If NOT filesys.FolderExists( sCreateIn &"\"& sFolderName ) Then folcoll.Add( sFolderName ) End If End If End Sub '----------------------------------------------------------------------------------------------------------------------------- Function Folder_Is_Empty ( sPath ) Dim filesys, oFolder Set filesys = CreateObject("Scripting.FileSystemObject") If filesys.FolderExists( sPath ) Then Set oFolder = filesys.GetFolder( sPath ) If ( oFolder.Files.Count + oFolder.SubFolders.Count ) > 0 Then Folder_Is_Empty = FALSE Else Folder_Is_Empty = TRUE End If Else Folder_Is_Empty = TRUE End If End Function '----------------------------------------------------------------------------------------------------------------------------- Sub Destroy_All_Objects On Error Resume Next set brokenReadyHash = nothing set brokenHash = nothing set pkgInfoHash = nothing set OraDatabase = nothing set OraSession = nothing End Sub '----------------------------------------------------------------------------------------------------------------------------- Function InStrPipes ( SSstr, SSsubstr ) If InStr( SSstr, "|"& SSsubstr &"|") > 0 Then InStrPipes = true Else InStrPipes = false End If End Function '----------------------------------------------------------------------------------------------------------------------------- Function RemoveFromStrPipes ( SSstr, SSsubstr ) RemoveFromStrPipes = Replace( SSstr, "|"& SSsubstr &"|", "" ) End Function '----------------------------------------------------------------------------------------------------------------------------- Function View_Name_Exists ( SSviewname, NNused_id ) Dim rsTemp, Query_String Query_String = _ " SELECT view_name"&_ " FROM views"&_ " WHERE UPPER(view_name) = UPPER('"& UCase(SSviewname) &"') AND owner_id = "& NNused_id Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) If rsTemp.RecordCount > 0 Then View_Name_Exists = TRUE Else View_Name_Exists = FALSE End If rsTemp.Close Set rsTemp = nothing End Function '----------------------------------------------------------------------------------------------------------------------------- Function User_Name_Exists ( SSusername ) Dim rsTemp, Query_String Query_String = _ " SELECT user_name"&_ " FROM users"&_ " WHERE user_name = '"& SSusername &"'" Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) If rsTemp.RecordCount > 0 Then User_Name_Exists = TRUE Else User_Name_Exists = FALSE End If rsTemp.Close Set rsTemp = nothing End Function '----------------------------------------------------------------------------------------------------------------------------- Function This_View_Owner( NNview_id, NNuser_id ) Dim rsTemp, Query_String Query_String = _ " SELECT owner_id"&_ " FROM views"&_ " WHERE view_id = "& NNview_id Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) If rsTemp.RecordCount > 0 Then If CInt(rsTemp.Fields("owner_id")) = CInt(NNuser_id) Then This_View_Owner = TRUE Else This_View_Owner = FALSE End If Else ' view not found Session("AdditionalParams") = "$ADMINEMAIL$,"& adminEmail Response.Redirect("message.asp?msg=400-2") End If rsTemp.Close Set rsTemp = nothing End Function '----------------------------------------------------------------------------------------------------------------------------- Function GetReleaseMode ( NNrtag_id ) Dim rsTemp, Query_String If NNrtag_id = "" Then NNrtag_id = "-1" Query_String = _ " SELECT official FROM release_tags WHERE rtag_id = "& NNrtag_id Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) 'Response.write "DB"& NNrtag_id If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then GetReleaseMode = rsTemp.Fields("official") End If rsTemp.Close Set rsTemp = nothing End Function '----------------------------------------------------------------------------------------------------------------------------- Function Get_Devl_Envorinment If Request.Cookies("RELEASEMANAGER_MEMORY")("devl_environment") <> "" Then If Request.Cookies("RELEASEMANAGER_MEMORY")("devl_environment") = "clearcase" Then Get_Devl_Envorinment = "jats" 'clear case does not have import Else Get_Devl_Envorinment = Request.Cookies("RELEASEMANAGER_MEMORY")("devl_environment") End If Else Get_Devl_Envorinment = "jats" 'JATS devl environment is set by default End If End Function '----------------------------------------------------------------------------------------------------------------------------- Function Get_From_DUAL ( SSclm ) Dim rsTemp, Query_String, OraSession2, OraDatabase2 Set OraSession2 = CreateObject("OracleInProcServer.XOraSession") Set OraDatabase2 = OraSession2.OpenDatabase( TNS_NAME, DB_AUTHENTICATION, Cint(0)) Query_String = _ " SELECT "& SSclm &" AS result FROM DUAL" Set rsTemp = OraDatabase2.DbCreateDynaset( Query_String, cint(0)) If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then Get_From_DUAL = (rsTemp.Fields("result")) End If rsTemp.Close Set rsTemp = nothing Set OraDatabase2 = nothing Set OraSession2 = nothing End Function '----------------------------------------------------------------------------------------------------------------------------- Function Get_Pkg_Base_View ( NNpv_id, NNrtag_id ) Dim rsTemp, Query_String If NNrtag_id = "" Then Get_Pkg_Base_View = "N/A" Exit Function End If Query_String = _ " SELECT vi.view_name"&_ " FROM release_content rc,"&_ " views vi"&_ " WHERE vi.view_id = rc.base_view_id"&_ " AND rc.rtag_id = "& NNrtag_id &_ " AND rc.pv_id = "& NNpv_id Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then Get_Pkg_Base_View = UCase(rsTemp.Fields("view_name")) Else Get_Pkg_Base_View = "N/A" End If rsTemp.Close Set rsTemp = nothing End Function '----------------------------------------------------------------------------------------------------------------------------- Function Get_Proj_ID ( SSrtag_id ) Dim rsTemp, Query_String Query_String = _ " SELECT projects.proj_id"&_ " FROM projects projects, release_tags rel"&_ " WHERE projects.proj_id = rel.proj_id"&_ " AND rel.rtag_id = "& SSrtag_id Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then Get_Proj_ID = (rsTemp.Fields("proj_id")) End If rsTemp.Close Set rsTemp = nothing End Function '----------------------------------------------------------------------------------------------------------------------------- Function Get_Proj_Name ( NNproj_id ) Dim rsTemp, Query_String Get_Proj_Name = "" Query_String = _ " SELECT proj_name "&_ " FROM projects pr "&_ " WHERE pr.proj_id = "& NNproj_id Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then Get_Proj_Name = (rsTemp.Fields("proj_name")) End If rsTemp.Close Set rsTemp = nothing End Function '----------------------------------------------------------------------------------------------------------------------------- Function Get_Release_Name ( NNrtag_id ) Dim rsTemp, Query_String Get_Release_Name = "" Query_String = _ " SELECT rtag_name "&_ " FROM release_tags rt "&_ " WHERE rt.rtag_id = "& NNrtag_id Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then Get_Release_Name = (rsTemp.Fields("rtag_name")) End If rsTemp.Close Set rsTemp = nothing End Function '----------------------------------------------------------------------------------------------------------------------------- Function Get_Base_URL ( NNproj_id ) Dim rsTemp, Query_String Query_String = _ " SELECT base_url "&_ " FROM projects pr "&_ " WHERE pr.proj_id = "& NNproj_id Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) Get_Base_URL = rsTemp("base_url") rsTemp.Close() Set rsTemp = nothing End Function '----------------------------------------------------------------------------------------------------------------------------- Function Get_Categories ( NNrtag_id ) Get_Categories = _ " SELECT vi.view_id, vi.view_name"&_ " FROM release_content rel,"&_ " views vi"&_ " WHERE rel.base_view_id = vi.view_id"&_ " AND rtag_id = "& NNrtag_id &_ " GROUP BY vi.view_id, vi.view_name "&_ " ORDER BY vi.view_name ASC " End Function '----------------------------------------------------------------------------------------------------------------------------- Function Get_PV_IDs_In_Release ( NNrtag_id ) Dim rsTemp, Query_String, tempSTR tempSTR = "-1" Query_String = _ "SELECT pv_id FROM release_content WHERE rtag_id = "& NNrtag_id Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) tempSTR = tempSTR &","& rsTemp.Fields("pv_id") rsTemp.MoveNext WEnd Get_PV_IDs_In_Release = tempSTR rsTemp.Close Set rsTemp = nothing End Function '----------------------------------------------------------------------------------------------------------------------------- Sub Get_Pkg_Info ( SSpv_id, NNrtag ) Dim rsTemp, Query_String OraDatabase.Parameters.Add "PV_ID", SSpv_id, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "RTAG_ID", NNrtag, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "RETURN_NUMBER", NULL, ORAPARM_OUTPUT, ORATYPE_NUMBER pkgInfoHash.Item ("can_unofficial") = "false" '/* Get Package Details */ Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery("PackageDetails.sql"), cint(0)) If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then pkgInfoHash.Add "pv_id", (rsTemp.Fields("pv_id")) pkgInfoHash.Add "pkg_id", (rsTemp.Fields("pkg_id")) pkgInfoHash.Add "pkg_name", (rsTemp.Fields("pkg_name")) pkgInfoHash.Add "pkg_version", (rsTemp.Fields("pkg_version")) pkgInfoHash.Add "v_ext", (rsTemp.Fields("v_ext")) pkgInfoHash.Add "comments", (rsTemp.Fields("comments")) pkgInfoHash.Add "modified_stamp", (rsTemp.Fields("modified_stamp")) pkgInfoHash.Add "modifier", (rsTemp.Fields("modifier")) pkgInfoHash.Add "modifier_id", (rsTemp.Fields("modifier_id")) pkgInfoHash.Add "modifier_email", (rsTemp.Fields("modifier_email")) pkgInfoHash.Add "created_stamp", (rsTemp.Fields("created_stamp")) pkgInfoHash.Add "creator", (rsTemp.Fields("creator")) pkgInfoHash.Add "creator_email", (rsTemp.Fields("creator_email")) pkgInfoHash.Add "owner", (rsTemp.Fields("owner")) pkgInfoHash.Add "owner_email", (rsTemp.Fields("owner_email")) pkgInfoHash.Add "dlocked", (rsTemp.Fields("dlocked")) pkgInfoHash.Add "proj_id", (rsTemp.Fields("proj_id")) pkgInfoHash.Add "rtag_id", (rsTemp.Fields("rtag_id")) pkgInfoHash.Add "rtag_name", (rsTemp.Fields("rtag_name")) pkgInfoHash.Add "pkg_label", (rsTemp.Fields("pkg_label")) pkgInfoHash.Add "src_path", (rsTemp.Fields("src_path")) pkgInfoHash.Add "pv_description", (rsTemp.Fields("pv_description")) pkgInfoHash.Add "last_pv_id", (rsTemp.Fields("last_pv_id")) pkgInfoHash.Add "previous_version", (rsTemp.Fields("previous_version")) pkgInfoHash.Add "release_notes_info", (rsTemp.Fields("release_notes_info")) pkgInfoHash.Add "is_patch", (rsTemp.Fields("is_patch")) pkgInfoHash.Add "is_obsolete", (rsTemp.Fields("is_obsolete")) pkgInfoHash.Add "obsolete_comments", (rsTemp.Fields("obsolete_comments")) pkgInfoHash.Add "build_type", (rsTemp.Fields("build_type")) pkgInfoHash.Add "change_type", (rsTemp.Fields("change_type")) pkgInfoHash.Add "bs_id", (rsTemp.Fields("bs_id")) pkgInfoHash.Add "is_deployable", (rsTemp.Fields("is_deployable")) pkgInfoHash.Add "sbom_priority", (rsTemp.Fields("sbom_priority")) pkgInfoHash.Add "ripple_field", (rsTemp.Fields("ripple_field")) End If '-- Find if package is editable in this project OraDatabase.ExecuteSQL "BEGIN :RETURN_NUMBER := CAN_EDIT_PKG_IN_PROJECT( :PV_ID, :RTAG_ID ); END;" pkgInfoHash.Add "can_edit_in_project", CStr( OraDatabase.Parameters("RETURN_NUMBER").Value ) '/* Get Package Release Details */ Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery("PackageReleaseDetails.sql"), cint(0)) If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then pkgInfoHash.Item ("base_view_id") = (rsTemp.Fields("base_view_id")) pkgInfoHash.Add "insert_stamp", (rsTemp.Fields("insert_stamp")) pkgInfoHash.Add "insertor", (rsTemp.Fields("insertor")) pkgInfoHash.Add "insertor_email", (rsTemp.Fields("insertor_email")) pkgInfoHash.Item ("pkg_state") = (rsTemp.Fields("pkg_state")) pkgInfoHash.Item ("deprecated_state") = (rsTemp.Fields("deprecated_state")) pkgInfoHash.Item ("product_state") = (rsTemp.Fields("product_state")) 'AND (rsTemp("used_count") = 0) _ If (pkgInfoHash.Item ("dlocked") = "Y") _ AND (pkgInfoHash.Item ("build_type") = "M") _ AND (CDate( FormatDateTime(pkgInfoHash.Item ("modified_stamp"), 2) ) = Date) _ AND (pkgInfoHash.Item("can_edit_in_project") = "1" ) _ Then pkgInfoHash.Item ("can_unofficial") = "true" End If Else If (CDate( FormatDateTime(pkgInfoHash.Item ("modified_stamp"), 2) ) = Date) Then ' Must be not older then a day If (pkgInfoHash.Item ("dlocked") = "A") OR NOT IsNull(pkgInfoHash.Item("is_patch")) Then pkgInfoHash.Item ("can_unofficial") = "true" End If End If End If '/* Get Patch Parent */ If pkgInfoHash.Item ("is_patch") = "Y" Then Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery("PatchParent.sql"), cint(0)) If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then pkgInfoHash.Add "patch_parent_id", (rsTemp.Fields("pv_id")) End If End If ' DEVI-45275 - Check if version is in the planned table and if so get its planned operation type ' which denotes whether it is an existing version being added to a release, an existing version ' being removed from a release, or a new version being prepared for a release. Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery("PlannedPackageVersionDetails.sql"), cint(0)) If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then pkgInfoHash.Add "planned_operation", (rsTemp.Fields("operation")) Else pkgInfoHash.Add "planned_operation", " " End If OraDatabase.Parameters.Remove "PV_ID" OraDatabase.Parameters.Remove "RTAG_ID" OraDatabase.Parameters.Remove "RETURN_NUMBER" On Error Resume Next ' check if package is released If (NNrtag = "") or (IsNull(NNrtag)) Then pkgInfoHash.Add "is_released", False Else 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)) pkgInfoHash.Add "is_released", rsTemp.RecordCount <> 0 End If pkgInfoHash.Add "is_excluded", False pkgInfoHash.Add "has_build_failure", False ' check if package is excluded from build If Not ((NNrtag = "") or (IsNull(NNrtag))) Then 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)) If rsTemp.RecordCount <> 0 Then pkgInfoHash("is_excluded") = True pkgInfoHash("has_build_failure") = Not IsNull(rsTemp("root_file")) End If End If rsTemp.Close Set rsTemp = nothing End Sub '----------------------------------------------------------------------------------------------------------------------------- Sub Get_Pkg_Short_Info( SSparPv_id, SSpkgID, SSpkgName, SSpkgVersion, SSsrc_path, SSpkgDesc, BBdlocked ) Dim rsTemp, Query_String If IsEmpty(SSparPv_id) Then Exit Sub Query_String = _ " SELECT pkg.pkg_id, pkg.pkg_name, pv.pkg_version, pv.src_path, pv.pv_description, pv.dlocked"&_ " FROM packages pkg, package_versions pv"&_ " WHERE pkg.pkg_id = pv.pkg_id AND pv.pv_id ="& SSparPv_id Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then SSpkgID = rsTemp.Fields("pkg_id") SSpkgName = rsTemp.Fields("pkg_name") SSpkgVersion = rsTemp.Fields("pkg_version") SSsrc_path = rsTemp.Fields("src_path") SSpkgDesc = rsTemp.Fields("pv_description") BBdlocked = rsTemp.Fields("dlocked") End If rsTemp.Close Set rsTemp = nothing End Sub '----------------------------------------------------------------------------------------------------------------------------- Private Function IsDomainAuthOK( SSusername, SSpassword, SSdomainName ) Dim objLoginAuth, return, tempSTR 'Set objWSH = Server.CreateObject("WScript.Shell") 'On Error Resume Next 'return = -1 'return = objWSH.Run("cmd.exe /c perl "& rootPath &"\common\domainauth.pl """&_ ' SSdomainName &""" """& SSusername &""" """& SSpassword &""" "&_ ' "> "& rootPath &"\temp\"& SSusername &".txt", 0, true) Set objLoginAuth = Server.CreateObject("LoginAdmin.ImpersonateUser") return = -1 return = objLoginAuth.AuthenticateUser ( SSusername, SSpassword, SSdomainName ) 'Response.write "LOGIN"& SSusername &"-"& SSpassword &"-"& SSdomainName &"-"& return If (return = 0) OR (return = 1385) Then ' From MSDN System Error Codes ' 0 - The operation completed successfully. ' 1326 - Logon failure: unknown user name or bad password. ' 1385 - Logon failure: the user has not been granted the requested logon type at this computer. ' 1909 - The referenced account is currently locked out and may not be used to log on. 'Login ok IsDomainAuthOK = True Else IsDomainAuthOK = False End If Set objLoginAuth = Nothing End Function '----------------------------------------------------------------------------------------------------------------------------- Function ReadUserPreferences ( SSitem ) 'ReadUserPreferences = Request.Cookies("RELEASEMANAGER_USER_PREFERENCES")( SSitem ) ReadUserPreferences = "0" End Function '----------------------------------------------------------------------------------------------------------------------------- Function Requred_Parameters_String ( SScurrent, SSstr ) 'returns "&par1=val1&&parn=valn&" must use & as it will not be used on parameter name or value Dim tempARR, parameter, tempSTR tempARR = Split( SSstr, "," ) tempSTR = SScurrent For Each parameter In tempARR tempSTR = tempSTR &"&"& parameter &"="& QStrPar( parameter ) &"&" Next Requred_Parameters_String = tempSTR End Function '----------------------------------------------------------------------------------------------------------------------------- Function Quick_Help ( SStipname ) Quick_Help = "" End Function '----------------------------------------------------------------------------------------------------------------------------- Function LogError ( SSlog, SSstr ) '|errstr1||errstr2||errstr3|... LogError = SSlog &"|"& SSstr &"|" End Function '----------------------------------------------------------------------------------------------------------------------------- Sub Send_Email ( SSfromName, SSfrom, SSto, SSsubject, SSbody, oAttachments ) Dim Mail, Keys, Key, canSend 'Response.write "
Send_Email:SSfromName:" & SSfromName
'Response.write "
Send_Email:SSfrom:" & SSfrom 'Response.write "
Send_Email:SSto:" & SSto 'Response.write "
Send_Email:SSsubject:" & SSsubject 'Response.write "
Send_Email:SSbody:" & SSbody canSend = FALSE Set Mail = Server.CreateObject("Persits.MailSender") Mail.Host = MAIL_SERVER Mail.From = SSfrom Mail.FromName = SSfromName ' Send TO: ' Handle a Dictionary of names If IsObject(SSto) AND (TypeName(SSto) <> "IOraField") Then Keys = SSto.Keys For Each Key In Keys Mail.AddAddress Key, SSto.Item( Key ) Next If SSto.Count > 0 Then canSend = TRUE Else Mail.AddAddress SSto If SSto <> "" Then canSend = TRUE End If Mail.Subject = SSsubject Mail.IsHTML = True Mail.Body = SSbody If NOT IsEmpty(oAttachments) AND NOT IsNull(oAttachments) Then ' Add Attachments DDDDDDD Sash, ' It appears as if AddEmbededImage is premium functionality that costs money, can we just do a normal add attachment? If IsObject( oAttachments ) Then Keys = oAttachments.Keys For Each Key In Keys ' Mail.AddEmbeddedImage rootPath & Key, oAttachments.Item( Key ) Mail.AddAttachment oAttachments.Item( Key ) Next Else Mail.AddAttachment oAttachments End If End If On Error Resume Next If canSend Then Mail.Send ' send message End Sub '----------------------------------------------------------------------------------------------------------------------------- Sub Iterate_UP_the_tree ( NNrtag_id, HHstart_with, HHresult ) Dim rsTemp, Query_String Dim seekPKGs, seekNOTpkgs seekPKGs = Join(HHstart_with.Keys, ",") If seekPKGs = "" Then seekPKGs = "-1" seekNOTpkgs = "-1" Do While seekPKGs <> "-1" Query_String = _ " SELECT DISTINCT dep.pkg_id"&_ " FROM package_dependencies dep, release_content rel"&_ " WHERE rel.pv_id = dep.pv_id"&_ " AND rel.rtag_id = "& NNrtag_id &_ " AND dpkg_id IN ( "& seekPKGs &" ) "&_ " AND pkg_id NOT IN ( "& seekNOTpkgs &" )" '" AND dep.dpv_id NOT IN ( SELECT iw.iw_id FROM ignore_warnings iw WHERE iw.rtag_id = "& NNrtag_id &" )" Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) If rsTemp.RecordCount < 1 Then Exit Do seekPKGs = "-1" While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) If NOT HHresult.Exists(Cstr(rsTemp.Fields("pkg_id"))) Then HHresult.Add Cstr(rsTemp.Fields("pkg_id")), "" seekPKGs = seekPKGs &","& rsTemp.Fields("pkg_id") rsTemp.MoveNext WEnd seekNOTpkgs = seekNOTpkgs &","& seekPKGs Loop End Sub '----------------------------------------------------------------------------------------------------------------------------- Sub Iterate_DOWN_the_tree ( NNrtag_id, HHstart_with, HHresult ) Dim rsTemp, Query_String Dim seekPKGs, seekNOTpkgs seekPKGs = Join(HHstart_with.Keys, ",") If seekPKGs = "" Then seekPKGs = "-1" seekNOTpkgs = "-1" Do While seekPKGs <> "-1" Query_String = _ " SELECT DISTINCT dep.dpkg_id"&_ " FROM package_dependencies dep, release_content rel"&_ " WHERE rel.pv_id = dep.pv_id"&_ " AND rel.rtag_id = "& NNrtag_id &_ " AND pkg_id IN ( "& seekPKGs &" ) "&_ " AND dpkg_id NOT IN ( "& seekNOTpkgs &" )" Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) If rsTemp.RecordCount < 1 Then Exit Do seekPKGs = "-1" While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) If NOT HHresult.Exists(Cstr(rsTemp.Fields("dpkg_id"))) Then HHresult.Add Cstr(rsTemp.Fields("dpkg_id")), "" seekPKGs = seekPKGs &","& rsTemp.Fields("dpkg_id") rsTemp.MoveNext WEnd seekNOTpkgs = seekNOTpkgs &","& seekPKGs Loop End Sub '----------------------------------------------------------------------------------------------------------------------------- Class TempSession Function Value () Value = Session("RELEASEMANAGER_temp") End Function Sub Add ( SSstr ) Session("RELEASEMANAGER_temp") = Session("RELEASEMANAGER_temp") & SSstr End Sub Sub Clean () Session("RELEASEMANAGER_temp") = NULL End Sub End Class '----------------------------------------------------------------------------------------------------------------------------- Sub DisplayInfo ( SSmsg, SSwidth ) Dim msg If SSmsg = "" Then Exit Sub Select Case UCase( SSmsg ) Case "ISSUES_IMPORTED" msg = "Import is complete.
Click on Close button if you are finished." Case "MAKE_OFFICIAL_WARNING" msg = "Note that making a package official will prevent any further change to it." Case "APPLY_LABEL_TO_ALL_WARNING" msg = "This will overwrite any existing labels on selected packages." Case "BLANK_LABEL_WARNING" msg = "Some dependencies in the export list above, do not have a label!" Case "PERSONAL_VIEW_NOT_SETUP" msg = "Your View is not setup!

Either set your view using My Account > Views menu

OR

switch to Base view (Full view) by clicking on icon above.
" Case "EMPTY_RELEASE_CONTENTS" msg = "Release content is empty!

Use + button to add packages to a release.
" Case "PKG_NAME_REQUIRED" msg = "Package Name required!
You are required to select at least one package name.
" Case "ADD_PATCH_WARNING" msg = "Note that patches cannot be used in your build dependencies." Case "NEW_PATCH_AVAILABLE" msg = "New Patch is Required
One or more Build Dependencies have been patched.
Please click Add button to create patch for this package." Case "GENERATE_RELEASE_NOTES" msg = "Click here to generate full release notes." Case "NOT_FOUND_IN_PKG_ARCHIVE_RELEASE_NOTES" msg = "This package is not found in dpkg_archive!
Release notes are not generated.
Click here to try again." Case "FAILED_GENERATING_RELEASE_NOTES" msg = "Failed generating release notes!
Please contact the Administrator" Case "GENERATING_RELEASE_NOTES" msg = "Generating release notes...
It may take a minute. Please try refreshing this page a bit later." Case "NO_PREVIOUS_VERSION_RELEASE_NOTES" msg = "Previous Version is Unknown!
Please specify previous version by clicking on 'Show Details...' above.
Release notes are not generated." Case "PACKAGE_FOUND_IN_OTHER_LOCATIONS" msg = "This package is also found in other locations." Case "DOC_NUMBER_NOTFOUND" msg = "Document number "& Request("doc_num") &" does not correspond to any document!" Case "DOC_NUMBER_FOUND" msg = "Document found. Click "Import" to link the document." Case "UNIT_TEST_NOT_DONE" msg = "Unit test is Not Done!
Click here to supply/edit reason." Case "PACKAGE_NOT_PART_OF_RELEASE" msg = "Package is Not Part of This Release Anymore!
This package cannot be found in the list on the left-hand side.
You can use 'lookup:' on the left-hand side to find the package inside this release. " Case "NOT_FOUND_IN_PKG_ARCHIVE_FILE_GENERATE" msg = "This package is not found in dpkg_archive!
Files and folders are not captured.
Click here to try again." Case "GENERATE_FILES_AND_FOLDERS" msg = "Files and folders not found.
Click here to try capture them." Case "NO_PRODUCT_FILES_CAPTURED" msg = "Files and Folders not found for this product!
Capture of product components can only be done during the build time." Case "MASS REF REFERENCE" msg = "New Version can only be created in the Release's associated MASS REF: "& pkgInfoHash.Item("pkg_name") &" "& pkgInfoHash.Item("pkg_version") &"" Case "REPEAT_SCHEDULE_NOT_SELECTED" msg = "YOU MUST SELECT A VALUE FOR REPEAT SCHEDULED DOWNTIME" Case "PKG_NAME_INVALID" msg = "Package Name Invalid!
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.
" Case "PKG_NAME_EXISTS" msg = "Package Name Already Exists!
This package name already exists, please try again.
" End Select %>
<%=msg%>

<% End Sub '----------------------------------------------------------------------------------------------------------------------------- Sub Messenger ( sMessage, nMessageType, sWidth ) Dim msgTemplate, Img If (sMessage = "") OR IsNull(sMessage) Then Exit Sub Select Case CStr(nMessageType) Case "1" Img = "s_critical.gif" Case "2" Img = "s_warning.gif" Case "3" Img = "s_note.gif" Case Else Img = nMessageType End Select msgTemplate = ReadFile( APP_ROOT &"\scripts\message_style.html" ) msgTemplate = Replace( msgTemplate, "%WIDTH%", sWidth ) msgTemplate = Replace( msgTemplate, "%IMAGE%", Img ) msgTemplate = Replace( msgTemplate, "%MESSAGE%", sMessage ) Response.write msgTemplate End Sub '----------------------------------------------------------------------------------------------------------------------------- Function Default_Label ( SSpv_id, SSbuild_type, SSpkg_name, SSpkg_version, SSv_ext ) If SSbuild_type = "A" Then Default_Label = UCase(SSpkg_name & "." & SSpv_id & SSv_ext & ".WIP") Else Default_Label = SSpkg_name &"_"& SSpkg_version End If End Function '----------------------------------------------------------------------------------------------------------------------------- Function Format_Version ( SSpkg_version, SSv_ext ) Dim tempArr, tempVersion, patchArr, seg, myVersion myVersion = SSpkg_version If NOT IsNull(SSv_ext) Then myVersion = Left ( myVersion, Len(myVersion) - Len(SSv_ext) ) End If tempArr = Split (myVersion, ".") For Each seg In tempArr If Len(seg) < 2 Then ' single digit number tempVersion = tempVersion &"0"& seg Else seg = Replace(seg, "_", "-") ' make sure that there is no _ in segment If InStr( seg, "-" ) > 0 Then ' patch version supplied patchArr = Split(seg, "-") If Len(patchArr(0)) < 2 Then ' single digit number tempVersion = tempVersion &"0"& patchArr(0) &"_0"& patchArr(1) Else ' double digit number tempVersion = tempVersion & patchArr(0) &"_0"& patchArr(1) End If Else ' double digit no patch tempVersion = tempVersion & seg End If End If Next Format_Version = tempVersion End Function '----------------------------------------------------------------------------------------------------------------------------- Function DefineStateIcon ( NNpkg_state, CCdlocked, sIgnoreWarnings, cIsPatchIgnore, cBuildType, bForEnvironment ) If NOT IsNull(sIgnoreWarnings) Then '-- Ignore Warning is on If IsNull(cIsPatchIgnore) Then DefineStateIcon = enum_imgIgnoring Else DefineStateIcon = enum_imgPatchIgnoring End If Else Select Case CInt( NNpkg_state ) Case enumPKG_STATE_OK If (CCdlocked = "N") OR (CCdlocked = "R") Then DefineStateIcon = enum_imgBuilding ElseIf (CCdlocked = "P") Then DefineStateIcon = enum_imgPending Else DefineStateIcon = enum_imgBlank End If Case enumPKG_STATE_MAJOR DefineStateIcon = enum_imgCritical Case enumPKG_STATE_MINOR DefineStateIcon = enum_imgWarning Case enumPKG_STATE_MAJOR_READY DefineStateIcon = enum_imgCReady Case enumPKG_STATE_MINOR_READY DefineStateIcon = enum_imgWReady Case enumPKG_NOT_FOUND DefineStateIcon = enum_imgNotFound Case enumPKG_STATE_NEW_PATCH DefineStateIcon = enum_imgPatchAvailable Case enumPKG_STATE_DEPRECATED DefineStateIcon = enum_imgDeprecated Case enumPKG_STATE_DEPRECATED_DEPENDENT DefineStateIcon = enum_imgDeprecatedDependent Case enumPKG_ADVISORY_RIPPLE DefineStateIcon = enum_imgAR Case enumPKG_ADVISORY_RIPPLE_DEPENDENT DefineStateIcon = enum_imgARD Case enumPKG_PEGGED_VERSION DefineStateIcon = enum_imgGreenPin End Select If (NOT bForEnvironment) AND _ (cBuildType = "A") AND _ (CCdlocked <> "Y") AND _ (DefineStateIcon <> enum_imgBlank) AND _ (DefineStateIcon <> enum_imgBuilding) AND _ (DefineStateIcon <> enum_imgNotFound) OR _ ( Request("rtag_id") = "" AND Request("FRrtag_id") = "") _ Then DefineStateIcon = "" End If End If End Function '----------------------------------------------------------------------------------------------------------------------------- Function DefineStateSmallIcon ( NNpkg_state, CCdlocked ) Select Case CInt( NNpkg_state ) Case enumPKG_STATE_OK If CCdlocked = "N" Then DefineStateSmallIcon = enum_SMALL_imgBuilding Else DefineStateSmallIcon = enum_SMALL_imgOK End If Case enumPKG_STATE_MAJOR DefineStateSmallIcon = enum_SMALL_imgCritical Case enumPKG_STATE_MINOR DefineStateSmallIcon = enum_SMALL_imgWarning Case enumPKG_STATE_MAJOR_READY DefineStateSmallIcon = enum_SMALL_imgCReady Case enumPKG_STATE_MINOR_READY DefineStateSmallIcon = enum_SMALL_imgWReady End Select End Function '----------------------------------------------------------------------------------------------------------------------------- Function PatchIcon ( cIsPatch, cIsPatchObsolete ) If IsNull(cIsPatch) Then PatchIcon = "" Else If IsNull(cIsPatchObsolete) Then PatchIcon = "" Else PatchIcon = "" End If End If End Function '----------------------------------------------------------------------------------------------------------------------------- ' Function that returns true of false if the item exists in the array '----------------------------------------------------------------------------------------------------------------------------- Function inArray(item, aItems) Dim element inArray = false for each element in aItems If element = item Then inArray=true End If next End Function '----------------------------------------------------------------------------------------------------------------------------- Function ProgressBar () ProgressBar = "" End Function '----------------------------------------------------------------------------------------------------------------------------- Function GetCurrentParameters( nProjId, nRtagId, nPvId ) Dim rsQry,query ' Set defaults nProjId = -1 nRtagId = -1 nPvId = -1 ' Get parameters from database OraDatabase.Parameters.Add "ProjId", Request("proj_id"), ORAPARM_INPUT, ORATYPE_VARCHAR2 OraDatabase.Parameters.Add "Rtag_id", Request("rtag_id"), ORAPARM_INPUT, ORATYPE_VARCHAR2 OraDatabase.Parameters.Add "results", NULL, ORAPARM_OUTPUT, ORATYPE_CURSOR OraDatabase.ExecuteSQL " BEGIN PK_APP_UTILS.GET_CURRENT_PARAMETERS ( :ProjId, :Rtag_id, :results ); END;" Set rsQry = OraDatabase.Parameters("results").Value OraDatabase.Parameters.Remove "ProjId" OraDatabase.Parameters.Remove "Rtag_id" OraDatabase.Parameters.Remove "results" If rsQry.RecordCount > 0 Then nProjId = CDbl(rsQry("PROJ_ID")) nRtagId = CDbl(rsQry("RTAG_ID")) End If rsQry.Close() Set rsQry = nothing ' Set pv_id parameter If Request("pv_id") <> "" Then nPvId = CDbl(Request("pv_id")) End Function '----------------------------------------------------------------------------------------------------------------------------- Function GetEnvName ( nEnvTab ) Select Case CInt( nEnvTab ) Case enumENVTAB_WORK_IN_PROGRESS GetEnvName = "Work In Progress" Case enumENVTAB_PLANNED GetEnvName = "Pending" Case enumENVTAB_RELEASED GetEnvName = "Released" End Select End Function '----------------------------------------------------------------------------------------------------------------------------- Function Title (rtagId) If rtagId = "" Then Title = "Release Manager" Else 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 ) Title = rsQry("proj_name")&">"&rsQry("rtag_name") rsQry.Close() Set rsQry = Nothing End If End Function '------------------------------------------------------------------------------------- Function Check_Package_WIP_Already_Exists(NNrtag_id, NNpv_id) Dim Query_String, rsQry Query_String = _ " SELECT * "&_ " FROM planned pl, package_versions pv "&_ " WHERE pl.rtag_id = "& NNrtag_id &_ " AND pv.pv_id = pl.pv_id "&_ " AND pv.dlocked = 'A' "&_ " AND pv.pkg_id = (SELECT pkg_id "&_ " FROM package_versions "&_ " WHERE pv_id = "& NNpv_id &") "&_ " AND pv.v_ext = (SELECT v_ext "&_ " FROM package_versions "&_ " WHERE pv_id = "& NNpv_id &")" Set rsQry = OraDatabase.DbCreateDynaset( Query_String , cint(0) ) Check_Package_WIP_Already_Exists = rsQry.RecordCount rsQry.Close() Set rsQry = Nothing End Function '----------------------------------------------------------------------------------------------------------------------------- Function ValidateCodeReviewURL ( sCodeReviewURL ) Dim isValid Dim sTempBaseURL Dim httpRegEx Set httpRegEx = new RegExp httpRegEx.Pattern = "^https?:\/\/" ' Removes ending slash from project's base URL for ease of comparison. sTempBaseURL = Left(baseURL, Len(baseURL)-1) ' Removes the project's base URL from the URL specified (if it's present). codeReviewURL = Replace(sCodeReviewURL, sTempBaseURL, "") ' Removes the slash from the beginning of the resulting URL (if it's present). If InStr(codeReviewURL, "/") = 1 Then codeReviewURL = Replace(codeReviewURL, "/", "", 1, 1) End If ' If the URL doesn't contain the http:// prefix, assume that it's correct. If NOT httpRegEx.Test(codeReviewURL) AND Len(codeReviewURL) > 0 Then isValid = True Else ' If the URL still contains the http:// prefix and is longer than the base ' URL, assume that it is an invalid URL because of a differing base URL. If Len(sCodeReviewURL) > Len(baseURL) Then Response.Write("") Else ' If the URL still contains the http:// prefix and is shorter than the base ' URL, assume that it is incomplete. Response.Write("") End If ' Otherwise, the URL matches the base URL exactly, which is also invalid. codeReviewURL = sCodeReviewURL isValid = False End If ValidateCodeReviewURL = isValid End Function '---------------------------------------------------------------------------------------------------------------------------------------- Function Is_Page_Editable ( cDlocked ) ' Editable if ( (unlocked OR rejected) ' OR ( NOT released/locked AND EditReleaseNotesInPending allowed) ' OR (released/locked AND EditNonCriticalInfoForLockedPackage allowed) ' ) ' AND user logged in If (((cDlocked = "N") OR (cDlocked = "R")) OR ((cDlocked <> "Y") AND (objAccessControl.IsActive("EditReleaseNotesInPending"))) OR ((cDlocked = "Y") AND (objAccessControl.IsActive("EditNonCriticalInfoForLockedPackage")))) AND objAccessControl.UserLogedIn Then Is_Page_Editable = TRUE Else Is_Page_Editable = FALSE End If End Function '---------------------------------------------------------------------------------------------------------------------------------------- Function Is_Section_Editable ( ) If scriptName = "fixed_issues.asp" AND objAccessControl.UserLogedIn Then Is_Section_Editable = TRUE Else Is_Section_Editable = FALSE End If End Function '---------------------------------------------------------------------------------------------------------------------------------------- Function Is_Critical_Section_Editable ( cDlocked ) ' Editable if ( (unlocked OR rejected) ' OR ( NOT released/locked AND EditReleaseNotesInPending allowed) ' OR (released/locked AND EditCriticalInfoForLockedPackage allowed) ' ) ' AND user logged in If (((cDlocked = "N") OR (cDlocked = "R")) OR ((cDlocked <> "Y") AND (objAccessControl.IsActive("EditReleaseNotesInPending"))) OR ((cDlocked = "Y") AND (objAccessControl.IsActive("EditCriticalInfoForLockedPackage")))) AND objAccessControl.UserLogedIn Then Is_Critical_Section_Editable = TRUE Else Is_Critical_Section_Editable = FALSE End If End Function '--------------------------------------------------------------- ' Function: Codestriker_Command ' ' Purpose: Forms a codestriker differencing command for use when ' preparing codestriker reviews. This will be used mainly ' on release notes pages. ' ' Arguments: old_label : The previous or older label ' new_label : The current or newer label ' Function Codestriker_Command (oldLabel, new_label) If ( IsNull(new_label) ) Then Codestriker_Command = "Label not defined" ElseIf (IsNull(oldLabel) OR oldLabel = "" ) Then Codestriker_Command = "jats CCdiff -new=" & new_label Else Codestriker_Command = "jats CCdiff -old=" & oldLabel & " -new=" & new_label End If End Function '--------------------------------------------------------------- ' Function: getLastNonRippleVersionPVID ' ' Purpose: returns the last non-ripple version of the package ' ' Arguments: this_pv_id : string ' ' Notes: In the past, users used to manually perform ripple builds. ' This function does not detect those as ripples. It could be ' made to do so but it would not be reliable. For example, it ' could check to see if the word "ripple" appears in the ' comments field of the record set of the SWL query. That ' might catch some of those records, but assumes the user ' wrote the wor ripple into the comments (reason for version). ' Function getLastNonRippleVersionPVID( this_pv_id ) Dim queryResult Dim queryString Dim finalPVID Dim lastPVID ' default return value in case we never get into the loop finalPVID = this_pv_id ' Get record for this PVID queryString = "SELECT build_type, last_pv_id FROM package_versions WHERE pv_id = " & this_pv_id Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0)) If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then ' If this version is a ripple built version, begin the process of finding its ancestral non-ripple built version If (queryResult("build_type") = "Y") Then lastPVID = queryResult("last_pv_id") ' We know we have some ripple built versions now, so arm the finalPVID for loop control finalPVID = "" ' Work back through the version history until we hit a record that is not a ripple build version Do While ((NOT queryResult.BOF) AND (NOT queryResult.EOF) AND (NOT IsNull(lastPVID)) AND (finalPVID = "")) queryString = "SELECT build_type, last_pv_id FROM package_versions WHERE pv_id = " & lastPVID Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0)) ' if the package version is a ripple built one, go round the loop again, else trigger a loop exit If ((NOT queryResult.BOF) AND (NOT queryResult.EOF) AND ( queryResult("build_type") = "Y")) Then lastPVID = queryResult("last_pv_id") Else finalPVID = lastPVID End If Loop End If End If queryResult.Close() Set queryResult = nothing getLastNonRippleVersionPVID = finalPVID End Function Function getLastNonRippleVersionPVIDLimitedByDate( this_pv_id, limitDate ) Dim queryResult Dim queryString Dim finalPVID Dim lastPVID ' default return value in case we never get into the loop finalPVID = this_pv_id ' Get record for this PVID queryString = "SELECT build_type, last_pv_id FROM package_versions WHERE pv_id = " & this_pv_id Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0)) If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then ' If this version is a ripple built version, begin the process of finding its ancestral non-ripple built version If (queryResult("build_type") = "Y") Then lastPVID = queryResult("last_pv_id") ' We know we have some ripple built versions now, so arm the finalPVID for loop control finalPVID = "" ' Work back through the version history until we hit a record that is not a ripple build version Do While ((NOT queryResult.BOF) AND (NOT queryResult.EOF) AND (NOT IsNull(lastPVID)) AND (finalPVID = "")) queryString = "SELECT build_type, last_pv_id FROM package_versions "&_ " WHERE pv_id = " & lastPVID &_ " AND MODIFIED_STAMP >= TO_DATE('" & limitDate & "','DD/MM/YYYY')" Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0)) ' if the package version is a ripple built one, go round the loop again, else trigger a loop exit If ((NOT queryResult.BOF) AND (NOT queryResult.EOF) AND ( queryResult("build_type") = "Y")) Then lastPVID = queryResult("last_pv_id") Else finalPVID = lastPVID End If Loop End If End If queryResult.Close() Set queryResult = nothing getLastNonRippleVersionPVIDLimitedByDate = finalPVID End Function '--------------------------------------------------------------- ' Function: getPreviousVersionPVID ' ' Purpose: returns the immediate predecssor version of the given ' package version ' ' Arguments: this_pv_id : string ' ' Notes: ' Function getPreviousVersionPVID( this_pv_id ) Dim queryResult Dim queryString getPreviousVersionPVID = "" queryString = "SELECT last_pv_id FROM package_versions WHERE pv_id = " & this_pv_id Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0)) If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then getPreviousVersionPVID = queryResult("last_pv_id") End If queryResult.Close() Set queryResult = nothing End Function '--------------------------------------------------------------- ' Function: getLastSignificantPVID ' ' Purpose: Returns the last significant (man-made) version (PV_ID) that ' is a predecessor to the specified pv_id ' ' Arguments: pv_id : Uniquely identifies this package version ' last_pv_id : Uniquely identifies the predecssor of this package version ' Notes: ' Function getLastSignificantPVID (pv_id, last_pv_id) getLastSignificantPVID = "" If( (NOT IsNull(last_pv_id)) AND (last_pv_id <> pv_id) ) Then ' Get the pv_id for the current version, and if necessary, work back through any ripple versions as necessary ' to get a non-ripple version ancestor pv_id = getLastNonRippleVersionPVID( pv_id ) If (pv_id <> "") Then ' get the pv_id of the previous version to the non-ripple version ancestor we just found. ' It does not matter if we get a ripple version here. It is good enough to serve the purpose of version diff'ing pv_id = getPreviousVersionPVID( pv_id ) If (pv_id <> "") Then getLastSignificantPVID = pv_id End If End If End If End Function '--------------------------------------------------------------- ' Function: get_Pkg_Label ' ' Purpose: Returns the package label for the specified pv_id ' ' Arguments: pv_id : Uniquely identifies this package version ' Function get_Pkg_Label (pv_id) Dim queryResult Dim queryString get_Pkg_Label = "" ' Get the package label from the package versions table queryString = "SELECT pkg_label FROM package_versions WHERE pv_id = " & pv_id Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0)) If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then get_Pkg_Label = queryResult("pkg_label") End If queryResult.Close() Set queryResult = nothing End Function '--------------------------------------------------------------- ' Function: get_Src_Path ' ' Purpose: Returns the source path for the specified pv_id ' ' Arguments: pv_id : Uniquely identifies this package version ' Function get_Src_Path (pv_id) Dim queryResult Dim queryString get_Src_Path = "" ' Get the source path from package versions table queryString = "SELECT src_path FROM package_versions WHERE pv_id = " & pv_id Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0)) If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then get_Src_Path = queryResult("src_path") End If queryResult.Close() Set queryResult = nothing End Function '--------------------------------------------------------------- ' Function: getOldLabel ' ' Purpose: Returns the previous label; if none then returns empty string ' ' Since this operation is designed to fulfil the generation of ' diff commands, there is no point in considering ripple ' versions, since the only differences we find there are in ' the build.pl files (for example). So, this function uses ' some underlying methods that ignore ripple built versions ' therefore concentrating on versions that someone has manually ' gone and labelled, presumably because they changed some ' source file other than build.pl. ' ' Arguments: pv_id : Uniquely identifies this package version ' last_pv_id : Uniquely identifies the predecssor of this package version ' Notes: ' Function getOldLabel (pv_id, last_pv_id) Dim lastSignificantPVID getOldLabel = "" lastSignificantPVID = getLastSignificantPVID(pv_id, last_pv_id) If (lastSignificantPVID <> "") Then getOldLabel = get_Pkg_Label(lastSignificantPVID) End If End Function '--------------------------------------------------------------- ' Function: getOldSrcPath ' ' Purpose: Returns the previous src path; if none then returns empty string ' ' Since this operation is designed to fulfil the generation of ' diff commands, there is no point in considering ripple ' versions, since the only differences we find there are in ' the build.pl files (for example). So, this function uses ' some underlying methods that ignore ripple built versions ' therefore concentrating on versions that someone has manually ' gone and labelled, presumably because they changed some ' source file other than build.pl. ' ' NOTE: With SubVersion, the src_path column in the package_versions ' table will be used to hold the Subversion tag. This function ' will therefore be used mostly when a package version is ' controlled under subversion. ' ' Arguments: pv_id : Uniquely identifies this package version ' last_pv_id : Uniquely identifies the predecssor of this package version ' Notes: ' Function getOldSrcPath (pv_id, last_pv_id) Dim lastSignificantPVID getOldSrcPath = "" lastSignificantPVID = getLastSignificantPVID(pv_id, last_pv_id) If (lastSignificantPVID <> "") Then getOldSrcPath = get_Src_Path(lastSignificantPVID) End If End Function '---------------------------------------------------------------------------------------------------------------------- Sub vcs_info_from_vcs_tag( nVcs_tag, ByRef objDetails ) Dim rsTemp, Query_String Query_String = " SELECT * FROM vcs_type WHERE tag = '"& nVcs_tag &"'" Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) If (NOT rsTemp.BOF ) AND (NOT rsTemp.EOF) Then objDetails.Item("vcs_type_id") = rsTemp("vcs_type_id") objDetails.Item("vcs_name") = rsTemp("name") objDetails.Item("vcs_tag") = rsTemp("tag") Else Call RaiseMsg(enum_MSG_ERROR, "Database does not contain a record of the VCS tag : " & nVcs_tag ) End If rsTemp.Close() set rsTemp = nothing End Sub '---------------------------------------------------------------------------------------------------------------------- Sub vcs_info_from_vcs_type_id( nVcs_type_id, ByRef objDetails ) Dim rsTemp, Query_String If NOT IsNull(nVcs_type_id) Then Query_String = " SELECT * FROM vcs_type WHERE vcs_type_id = "& nVcs_type_id Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) If (NOT rsTemp.BOF ) AND (NOT rsTemp.EOF) Then objDetails.Item("vcs_type_id") = rsTemp("vcs_type_id") objDetails.Item("vcs_name") = rsTemp("name") objDetails.Item("vcs_tag") = rsTemp("tag") Else Call RaiseMsg(enum_MSG_ERROR, "Database does not contain a record of the VCS type ID : " & nVcs_type_id ) End If rsTemp.Close() set rsTemp = nothing Else ' default to returning Subversion info, assuming it exists in the data Call vcs_info_from_vcs_tag( enum_VCS_SUBVERSION_TAG, objDetails ) End If End Sub '---------------------------------------------------------------------------------------------------------------------- Sub get_vcs_info_for_package( nPkgLabel, nBuildType, nVcsTypeId, nDLocked, ByRef objDetails ) ' lots of patch versions exist with N/A as their pkg_label and null as vcs_type_id. These are all uncontrolled ' packages published directly into dpkg_archive with no controlled source under clearcase, so we want to treat ' them as uncontrolled if possible. If nDLocked = "Y" AND ((nPkgLabel = "N/A") OR IsNull(nPkgLabel)) AND nBuildType = "M" AND IsNull(nVcsTypeId) Then Call vcs_info_from_vcs_tag( enum_VCS_UNCONTROLLED_TAG, objDetails ) Else ' Otherwise, try and decode the VCS from the package's vcs_type_id entry from the package version table ' NOTE: A null vcs_type_id entry will default to ClearCase. That is all we have been using up til now so ' it should be safe. Call vcs_info_from_vcs_type_id( nVcsTypeId, objDetails ) End If End Sub '---------------------------------------------------------------------------------------------------------------------- Sub get_vcs_info_for_pv_id( nPv_id, ByRef objDetails ) Dim rsTemp, Query_String Query_String = _ " SELECT pv.pkg_label, pv.build_type, pv.vcs_type_id, pv.dlocked "&_ " FROM PACKAGE_VERSIONS pv"&_ " WHERE pv.pv_id = "& nPv_id Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) If (NOT rsTemp.BOF ) AND (NOT rsTemp.EOF) Then Call get_vcs_info_for_package( rsTemp("pkg_label"), rsTemp("build_type"), rsTemp("vcs_type_id"), rsTemp("dlocked"), objDetails ) Else Call RaiseMsg(enum_MSG_ERROR, "PV_ID (" & nPv_id & ") Not Found") End If rsTemp.Close() set rsTemp = nothing End Sub '---------------------------------------------------------------------------------------------------------------------- Function get_vcs_tag( nPv_id ) Dim tempVcsInfoCollector Set tempVcsInfoCollector = CreateObject("Scripting.Dictionary") Call get_vcs_info_for_pv_id( nPv_id, tempVcsInfoCollector ) get_vcs_tag = tempVcsInfoCollector.Item("vcs_tag") Set tempVcsInfoCollector = nothing End Function '---------------------------------------------------------------------------------------------------------------------- Function isInDoNotRippleTable( NNrtag_id, NNpv_id ) Dim rsTemp, Query_String isInDoNotRippleTable = FALSE If NNrtag_id <> "" AND NNpv_id <> "" Then Query_String = " SELECT dnr.pv_id FROM DO_NOT_RIPPLE dnr WHERE dnr.RTAG_ID ="& NNrtag_id &" AND dnr.PV_ID ="& NNpv_id Set rsTemp = OraDatabase.DbCreateDynaset(Query_String, cint(0)) If rsTemp.RecordCount <> 0 Then isInDoNotRippleTable = TRUE End If rsTemp.Close() set rsTemp = nothing End If End Function '---------------------------------------------------------------------------------------------------------------------- Function pv_id_exists( nPv_id ) Dim rsTemp, Query_String If NOT IsNull( nPv_id ) AND nPv_id <> "" Then Query_String = _ " SELECT pv.pv_id "&_ " FROM PACKAGE_VERSIONS pv"&_ " WHERE pv.pv_id = "& nPv_id Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) If (NOT rsTemp.BOF ) AND (NOT rsTemp.EOF) Then pv_id_exists = TRUE Else pv_id_exists = FALSE End If rsTemp.Close() set rsTemp = nothing Else pv_id_exists = FALSE End If End Function '---------------------------------------------------------------------------------------------------------------------- Function is_daemon_enabled_release( NNrtag_id, defaultReturnValue ) Dim rsTemp, Query_String If NOT IsNull( NNrtag_id ) AND NNrtag_id <> "" Then Query_String = _ " SELECT rc.daemon_hostname "&_ " FROM RELEASE_CONFIG rc"&_ " WHERE rc.rtag_id = "& NNrtag_id Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) is_daemon_enabled_release = FALSE While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF) AND (is_daemon_enabled_release = FALSE)) If (NOT IsNull(rsTemp("daemon_hostname"))) AND (rsTemp("daemon_hostname") <> "") Then is_daemon_enabled_release = TRUE End If rsTemp.MoveNext WEnd rsTemp.Close() set rsTemp = nothing Else is_daemon_enabled_release = defaultReturnValue End If End Function '-------------------------------------------------------------------------------------------------------------------------- ' Convert release state into a meaningful string Function Get_Official( nOfficial ) If nOfficial = "N" Then Get_Official = "Open" ElseIf nOfficial = "A" Then Get_Official = "Archive" ElseIf nOfficial = "C" Then Get_Official = "CCB" ElseIf nOfficial = "R" Then Get_Official = "Restricted" ElseIf nOfficial = "Y" Then Get_Official = "Closed" Else Get_Official = "?" End If End Function '----------------------------------------------------------------------------------------------------------------------------- Function Get_Pkg_Id_For_Pv_Id ( NNpv_id ) Dim rsTemp, Query_String Get_Pkg_Id_For_Pv_Id = "" If NOT IsNull(NNpv_id) AND NNpv_id <> "" Then Query_String = _ "SELECT pkg_id FROM package_versions WHERE pv_id = "& NNpv_id Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then Get_Pkg_Id_For_Pv_Id = rsTemp("pkg_id") End If rsTemp.Close Set rsTemp = nothing End If End Function '----------------------------------------------------------------------------------------------------------------------------- Function iif(bFlag, sTrueStr, sFalseStr) if bFlag then iif = sTrueStr else iif = sFalseStr end if End Function '-------------------------------------------------------------------------------------------------------------------------- ' Sets the state of all build daemons of the specified release Sub SetDaemonStates (artag_id,astate) On Error Resume Next OraDatabase.Parameters.Add "RTAG_ID", artag_id, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "NSTATE", astate, ORAPARM_INPUT, ORATYPE_NUMBER objEH.TryORA ( OraSession ) OraDatabase.ExecuteSQL _ "BEGIN PK_BUILDAPI.SET_DAEMON_STATES(:RTAG_ID,:NSTATE); END;" objEH.CatchORA ( OraSession ) OraDatabase.Parameters.Remove "RTAG_Id" OraDatabase.Parameters.Remove "NSTATE" End Sub '---------------------------------------------- 'Returns true if the specified package version exists in the specified table Function PackageExists(RtagId, pvId, stable) Dim rsTemp Dim sqry If RtagId = "" Then PackageExists = False Else sqry = "SELECT * FROM " & stable & " WHERE rtag_id = " & RtagId & " AND pv_id = " & pvId Set rsTemp = OraDatabase.DbCreateDynaset(sqry,CInt(0)) PackageExists = rsTemp.RecordCount > 0 rsTemp.Close() Set rsTemp = Nothing End If End Function %>