%
'=====================================================
' COMMON SUBs Part 1
'=====================================================
Const haveCommonSubs = 1
%>
<%
'-----------------------------------------------------------------------------------------------------------------------------
Sub CloseWindow
%>
<%
Call Destroy_All_Objects
Response.End
End Sub
'-----------------------------------------------------------------------------------------------------------------------------
Sub OpenChildWindow ( SStitle, SSurl, SSH, SSW, BBscroll )
Dim scrlBar
If BBscroll Then
scrlBar = "yes"
Else
scrlBar = "no"
End If
%>
<%
End Sub
'-----------------------------------------------------------------------------------------------------------------------------
' Iframes do not have a window.opener
Sub OpenInParentWindow ( SSurl )
%>
<%
End Sub
'-----------------------------------------------------------------------------------------------------------------------------
' Iframes do not have a window.opener
Sub ReloadParentWindow ()
%>
<%
End Sub
'-----------------------------------------------------------------------------------------------------------------------------
Sub OpenInWindow ( SSurl )
Call Destroy_All_Objects
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
Call Destroy_All_Objects
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
'-----------------------------------------------------------------------------------------------------------------------------
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$,"& ADMIN_EMAIL
Call Destroy_All_Objects
Response.Redirect("message.asp?msg=400-2")
End If
rsTemp.Close
Set rsTemp = nothing
End Function
'-----------------------------------------------------------------------------------------------------------------------------
Function GetReleaseMode ( NNrtag_id )
GetReleaseInfo NNrtag_id
GetReleaseMode = releaseInfoHash("official")
End Function
'-----------------------------------------------------------------------------------------------------------------------------
' Get basic Release Info on global releaseInfoHash
' List of fields may be extended as required (could use *)
'
' Cache the results
' Largely to simplify a code refactor
' Data will be read early, but may need to be changed
'
Sub GetReleaseInfo ( NNrtag_id )
Dim rsTemp, Query_String, item
If NNrtag_id = "" Then NNrtag_id = "-1"
' Do we already have the data
If NOT (releaseInfoHash is Nothing) Then
If Cdbl(releaseInfoHash("rtag_id") ) = CDbl(NNrtag_id) Then
Exit Sub
End If
End If
' Create with case insensitive keys
Set releaseInfoHash = CreateObject("Scripting.Dictionary")
releaseInfoHash.CompareMode = VBTextCompare
' Handle not logged in
Dim UserId : UserId = -1
If objAccessControl.UserLogedIn Then UserId = objAccessControl.UserId
Query_String = "SELECT rt.RTAG_ID ,rt.rtag_name, proj.proj_id, proj.proj_name,rt.lxr, rt.official, NVL(lx.lxrserver, 'N') as lxrserver, NVL(rt.S3MANIFEST, 'N') as S3MANIFEST," &_
" CASE when (TRUNC(SYSTIMESTAMP) - TRUNC(rt.created_stamp) <= 20) AND rt.creator_id = "& UserId & " THEN 1 ELSE 0 END as userCanDelete" &_
" FROM Release_tags rt, projects proj, lxr_state lx" &_
" WHERE rt.RTAG_ID = lx.RTAG_ID(+)" &_
" AND rt.proj_id = proj.proj_id" &_
" AND rt.RTAG_ID = " & NNrtag_id
Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
For Each item In rsTemp.Fields
'Response.Write("
item:" & item.name & ":" & item & "
")
releaseInfoHash.Add item.name, item.value
Next
End If
rsTemp.Close
Set rsTemp = nothing
End Sub
'-----------------------------------------------------------------------------------------------------------------------------
Function Get_Devl_Environment
If Request.Cookies(COOKIE_RELEASEMANAGER_MEMORY)("devl_environment") <> "" Then
If Request.Cookies(COOKIE_RELEASEMANAGER_MEMORY)("devl_environment") = "clearcase" Then
Get_Devl_Environment = "jats" 'clear case does not have import
Else
Get_Devl_Environment = Request.Cookies(COOKIE_RELEASEMANAGER_MEMORY)("devl_environment")
End If
Else
Get_Devl_Environment = "jats" 'JATS devl enviroment 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
'-----------------------------------------------------------------------------------------------------------------------------
' Try to replace usage with : DB_PROJ_ID
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
'-----------------------------------------------------------------------------------------------------------------------------
' Try to replace usage with : DB_PROJ_NAME
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, isaRelease, isaValidPvId
Dim opCodeListString, opCodeList, opCodeStr
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
OraDatabase.Parameters.Add "OP_CODE_LIST", NULL, ORAPARM_OUTPUT, ORATYPE_VARCHAR2
isaRelease = NOT ((NNrtag = "") or (IsNull(NNrtag)))
pkgInfoHash.Add "isaRelease", isaRelease
'-- can_unofficial
' Limits the ability to unrelease a package version
pkgInfoHash.Item ("can_unofficial") = "false"
'-- can_edit_in_project
' Property of the release, the user and the package
' Limits the ability to add a package to a release
'
pkgInfoHash.Item ("can_edit_in_project") = "0"
'-- Get Package Details
Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery("PackageDetails.sql"), cint(0))
isaValidPvId = (NOT rsTemp.BOF) AND (NOT rsTemp.EOF)
pkgInfoHash.Add "isaValidPvId" , isaValidPvId
If isaValidPvId 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_id", (rsTemp.Fields("creator_id"))
pkgInfoHash.Add "creator_email", (rsTemp.Fields("creator_email"))
pkgInfoHash.Add "owner", (rsTemp.Fields("owner"))
pkgInfoHash.Add "owner_id", (rsTemp.Fields("owner_id"))
pkgInfoHash.Add "owner_email", (rsTemp.Fields("owner_email"))
pkgInfoHash.Add "dlocked", (rsTemp.Fields("dlocked"))
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"))
pkgInfoHash.Add "pkgVerCount", (rsTemp.Fields("pkgVerCount"))
pkgInfoHash.Add "is_cots", (rsTemp.Fields("is_cots"))
pkgInfoHash.Add "pkg_eref", (rsTemp.Fields("pkg_eref"))
If (pkgInfoHash.Item ("dlocked") = "Y") OR pkgInfoHash.Item("build_type") = "M" Then
pkgInfoHash.Add "isInArchive", testArchiveAccessPkg(pkgInfoHash.Item ("pkg_name"), pkgInfoHash.Item ("pkg_version"))
End If
If isaRelease Then
'-- Find if package is editable in this project
' Not editable if
' Imported via a Reference Package
' Imported via an SDK
' Release is not in Open or Restricted Mode
' Project extenstion is project specific - and not within the allowed project
'
OraDatabase.ExecuteSQL "BEGIN :RETURN_NUMBER := CAN_EDIT_PKG_IN_PROJECT( :PV_ID, :RTAG_ID ); END;"
pkgInfoHash.Item ("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.Add "insert_stamp", (rsTemp.Fields("insert_stamp"))
pkgInfoHash.Add "insertor", (rsTemp.Fields("insertor"))
pkgInfoHash.Add "insertor_email", (rsTemp.Fields("insertor_email"))
pkgInfoHash.Add "used_count", (rsTemp.Fields("used_count"))
pkgInfoHash.Item ("base_view_id") = (rsTemp.Fields("base_view_id"))
pkgInfoHash.Item ("view_name") = (rsTemp.Fields("view_name"))
pkgInfoHash.Item ("pkg_state") = (rsTemp.Fields("pkg_state"))
pkgInfoHash.Item ("deprecated_state") = (rsTemp.Fields("deprecated_state"))
pkgInfoHash.Item ("product_state") = (rsTemp.Fields("product_state"))
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 "product_state_used", (rsTemp.Fields("product_state_used"))
pkgInfoHash.Add "sdktag_id", (rsTemp.Fields("sdktag_id"))
pkgInfoHash.Add "is_sdkpkg", (NOT IsNull(rsTemp.Fields("sdktag_id")))
pkgInfoHash.Add "is_pegged", (rsTemp.Fields("pegged") <> 0)
pkgInfoHash.Add "ripple_stop", rsTemp.Fields("ripple_stop")
pkgInfoHash.Add "persist_ripple_stop", rsTemp.Fields("persist_ripple_stop")
pkgInfoHash.Add "advisory_ripple", rsTemp.Fields("advisory_ripple") <> 0
pkgInfoHash.Add "inManifest", rsTemp.Fields("inManifest")
pkgInfoHash.Add "s3ManifestEnabled", rsTemp.Fields("s3manifestEnabled")
Else
' -- Package Version is not a released member of the specified release
' Get Basic Release and Project Details
Query_String = " select pj.PROJ_ID, rt.RTAG_ID,rt.rtag_name " &_
" from projects pj, release_tags rt" &_
" where rt.rtag_id=:RTAG_ID" &_
" and rt.PROJ_ID = pj.PROJ_ID"
Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
pkgInfoHash.Add "proj_id", (rsTemp.Fields("proj_id"))
pkgInfoHash.Add "rtag_id", (rsTemp.Fields("rtag_id"))
pkgInfoHash.Add "rtag_name", (rsTemp.Fields("rtag_name"))
End If
' -- Determine if package is a member of this release and determine base view
' May be a WIP or PENDIND or not in the release ( Won't get here if its releases)
' Mark as Not in Release
Query_String = "select wip.pv_id, wip.view_id as view_id, vi.view_name, 0 as env_area from work_in_progress wip, views vi where rtag_id=:RTAG_ID and pv_id=:PV_ID and vi.view_id = wip.view_id" &_
" union" &_
" select pp.pv_id, pp.view_id as view_id, vi.view_name, 1 as env_area from planned pp, views vi where rtag_id=:RTAG_ID and pv_id=:PV_ID and vi.view_id = pp.view_id" &_
" union" &_
" select rc.pv_id, rc.base_view_id as view_id, vi.view_name, 2 as env_area from RELEASE_CONTENT rc, views vi where rtag_id=:RTAG_ID and pv_id=:PV_ID and vi.view_id = rc.base_view_id"
Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
If rsTemp.RecordCount < 1 Then
pkgInfoHash.Item ("notInRelease") = true
Else
pkgInfoHash.Item ("base_view_id") = (rsTemp.Fields("view_id"))
pkgInfoHash.Item ("view_name") = (rsTemp.Fields("view_name"))
If rsTemp("env_area") = 0 Then pkgInfoHash.Item ("is_wip") = True
If rsTemp("env_area") = 1 Then pkgInfoHash.Item ("is_pending") = True
End If
'
' -- Determine related package that is in the release
' Use pkg_id and v_ext to locate package
If pkgInfoHash.Item ("pkg_id") <> "" Then
Query_String = "SELECT pv.PV_ID, vi.view_name" &_
" FROM RELEASE_CONTENT rc, package_versions pv, views vi" &_
" WHERE rc.rtag_id = :RTAG_ID" &_
" and rc.PV_ID = pv.pv_id" &_
" and vi.view_id = rc.base_view_id" &_
" and pv.pkg_id = " & pkgInfoHash.Item ("pkg_id") &_
" and NVL(pv.v_ext,'') = NVL('"&pkgInfoHash.Item ("v_ext")&"', '')"
Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
If rsTemp.RecordCount > 0 Then
pkgInfoHash.Item ("pv_id_InRelease") = (rsTemp.Fields("pv_id"))
'pkgInfoHash.Remove ("base_view_id")
pkgInfoHash.Item ("release_view_name") = (rsTemp.Fields("view_name"))
End If
End If
End If
' Determine if user can make the the package 'unofficial'
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
'
' Determine if there is a deamon instruction on this package in this release
' Also: OraDatabase.ExecuteSQL "BEGIN :OP_CODE_LIST := PK_BUILDAPI.daemon_ops_for_rtag("& nRtag_id & "); END;"
objEH.TryORA ( OraSession )
ON ERROR RESUME NEXT
OraDatabase.ExecuteSQL "BEGIN :OP_CODE_LIST := PK_BUILDAPI.daemon_ops_for_rtag_pvid(:RTAG_ID,:PV_ID); END;"
objEH.CatchORA ( OraSession )
ON ERROR GOTO 0
opCodeListString = OraDatabase.Parameters("OP_CODE_LIST").Value
If NOT IsNull(opCodeListString) AND opCodeListString <> "" Then
opCodeList = Split(opCodeListString, ",")
For Each opCodeStr In opCodeList
If opCodeStr = OP_CODE_0_RIPPLE_BUILD_PACKAGE Then
pkgInfoHash.Add "hasRippleInstr", 1
End If
If opCodeStr = OP_CODE_1_TEST_BUILD_PACKAGE Then
pkgInfoHash.Add "hasTestInstr", 1
End If
If opCodeStr = OP_CODE_2_FUTURE_BUILD Then
pkgInfoHash.Add "hasFutureBuild", 1
End If
Next
End If
Else ' NOT isaRelease
If pkgInfoHash.Exists ("modified_stamp") Then
If NOT IsNull(pkgInfoHash.Item ("modified_stamp").Value) Then
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
End If
End If ' End isaRelease
'-- 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
' Determine if we are building this package on any build machine
'
pkgInfoHash.Add "isBuilding", isBuilding(SSpv_id)
'On Error Resume Next
'On Error Goto 0
' check if package is released
If NOT isaRelease Then
pkgInfoHash.Add "is_released", False
Else
Set rsTemp = OraDatabase.DbCreateDynaset( "SELECT rc.pv_id FROM release_content rc WHERE rc.rtag_id = :RTAG_ID AND rc.pv_id = :PV_ID", cint(0))
pkgInfoHash.Add "is_released", rsTemp.RecordCount <> 0
End If
' check if package is excluded from build
pkgInfoHash.Add "is_excluded", False
pkgInfoHash.Add "has_build_failure", False
If isaRelease Then
Set rsTemp = OraDatabase.DbCreateDynaset( "SELECT dnr.pv_id,dnr.root_pv_id FROM do_not_ripple dnr WHERE dnr.rtag_id = :RTAG_ID AND dnr.pv_id = :PV_ID", cint(0))
If rsTemp.RecordCount <> 0 Then
pkgInfoHash("is_excluded") = True
pkgInfoHash("has_build_failure") = IsNull(rsTemp("root_pv_id"))
End If
End If
' Check if Package is deprecated
If isaRelease Then
Set rsTemp = OraDatabase.DbCreateDynaset( "SELECT * FROM DEPRECATED_PACKAGES WHERE RTAG_ID = :RTAG_ID AND "& EmptyToNullString("V_EXT", pkgInfoHash.Item ("v_ext")) &" AND PKG_ID = "& pkgInfoHash.Item ("pkg_id") &"", cint(0))
If rsTemp.RecordCount > 0 Then
pkgInfoHash.Add "is_deprecated", True
End If
End If
' Check if package is a NEW package - only one version in existence
If pkgInfoHash.Item ("pkg_id") <> "" Then
Set rsTemp = OraDatabase.DbCreateDynaset( "select count(*) as count from package_versions pv where pkg_id = " & pkgInfoHash.Item ("pkg_id"), cint(0))
pkgInfoHash.Add "pkg_count" , rsTemp("count")
End If
' Does this package have any dependencies
Set rsTemp = OraDatabase.DbCreateDynaset( "select count(*) as depCount from package_dependencies where pv_id = :PV_ID", cint(0))
pkgInfoHash.Add "depCount" , rsTemp("depCount")
End If
rsTemp.Close
Set rsTemp = nothing
OraDatabase.Parameters.Remove "PV_ID"
OraDatabase.Parameters.Remove "RTAG_ID"
OraDatabase.Parameters.Remove "RETURN_NUMBER"
OraDatabase.Parameters.Remove "OP_CODE_LIST"
End Sub
'-----------------------------------------------------------------------------------------------------------------------------
' Get Package Info - when we don't have a package
Sub Get_NoPkg_Info(NNrtag)
Dim rsTemp, Query_String
OraDatabase.Parameters.Add "RTAG_ID", NNrtag, ORAPARM_INPUT, ORATYPE_NUMBER
pkgInfoHash.Item ("can_unofficial") = "false"
pkgInfoHash.Item ("noPackage") = true
'/* Get Basic Details */
Query_String = " select pj.PROJ_ID, rt.RTAG_ID,rt.rtag_name " &_
" from projects pj, release_tags rt" &_
" where rt.rtag_id=:RTAG_ID" &_
" and rt.PROJ_ID = pj.PROJ_ID"
Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
pkgInfoHash.Add "proj_id", (rsTemp.Fields("proj_id"))
pkgInfoHash.Add "rtag_id", (rsTemp.Fields("rtag_id"))
pkgInfoHash.Add "rtag_name", (rsTemp.Fields("rtag_name"))
End If
OraDatabase.Parameters.Remove "RTAG_ID"
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 objLoginAuth = Server.CreateObject("LoginAdmin.ImpersonateUser")
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 Quick_HelpImg ( SStipname, SSimage )
Quick_HelpImg = "
"
End Function
'-----------------------------------------------------------------------------------------------------------------------------
Function LogError ( SSlog, SSstr )
'|errstr1||errstr2||errstr3|...
LogError = SSlog &"|"& SSstr &"|"
End Function
'-----------------------------------------------------------------------------------------------------------------------------
' Send an email
' Args: SSfromName - Text Name of sender
' SSfrom - email address of sender
' SSto - email address of receipient. May be comma sep list or a some type of object
' SSsubject - email subject
' SSbody - Body of the email. Email is sent as html.
' oAttachments - email attachments. May be empty, a file or a HashRef of files
'
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
'-----------------------------------------------------------------------------------------------------------------
' Record and Report a Release Manager event
' Record in the machines Event Log
' Report via email
' Used to report error conditions that need to be bought to the attention of some sys admin
' Args: eventType - one of enumEVENT_* ( ie:enumEVENT_ERROR)
' SSlocation - Indication of location/operation
' SSvalues - Values. Will be added into the message
' SSerror_message - Error message
'
Sub Report_Event ( eventType, SSlocation, SSvalues, SSerror_message )
On Error Resume Next
Dim WshNetwork, SSmsg
Set WshNetwork = Server.CreateObject("WScript.Network")
' Compose Message
SSmsg = _
"-- User Info --"& VBNewLine &_
"Logged In: " & objAccessControl.UserLogedIn & VBNewLine &_
"Domain: " & objAccessControl.Domain & VBNewLine &_
"UserName: " & objAccessControl.UserName & VBNewLine &_
"FullName: " & objAccessControl.FullName & VBNewLine &_
"UserEmail: " & objAccessControl.UserEmail & VBNewLine &_
"UserId: " & objAccessControl.UserId & VBNewLine &_
VBNewLine &_
"-- Script Info --"& VBNewLine &_
"Host Name: "& Request.ServerVariables("SERVER_NAME") & ":" & Request.ServerVariables("SERVER_PORT") & VBNewLine &_
"Script Name: "& Request.ServerVariables("SCRIPT_NAME") & VBNewLine &_
VBNewLine &_
"-- Error Location --"& VBNewLine &_
SSlocation & VBNewLine &_
VBNewLine &_
"-- Values --"& VBNewLine &_
SSvalues & VBNewLine &_
VBNewLine &_
"-- Error Message --"& VBNewLine &_
SSerror_message & VBNewLine
'-- Raise this message at these places...
'-- Create an event in the system event log
'-- Send out an email
Call Send_Event( eventType, SSmsg )
Call Send_Email ( "Release Manager Notification", _
ADMIN_EMAIL, _
FAULT_EMAIL_LIST, _
"Release Manager Error", _
Replace(SSmsg,VBNewLine, "
"), _
null )
'----------------------------------------
Set WshNetwork = Nothing
End Sub
'-----------------------------------------------------------------------------------------------------------------------------
' Record Event in OS log
' Create an event in the system event log
'
' Args: eventType - one of enumEVENT_* ( ie:enumEVENT_ERROR)
' SSmsg - Message Body
Sub Send_Event( eventType, SSmsg )
On Error Resume Next
Dim WshShell
Set WshShell = Server.CreateObject("WScript.Shell")
WshShell.LogEvent eventType, SSmsg
Set WshShell = Nothing
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 "NOT_FOUND_IN_PKG_ARCHIVE_RELEASE_NOTES"
msg = "Regenerating release notes...
It may take a minute. Please try refreshing this page a bit later."
Case "FAILED_GENERATING_RELEASE_NOTES"
msg = "Failed generating release notes!"
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 "RELEASE_NOTES_PLACEHOLDER_PACKAGE"
msg = "Place Holding Package!
This package is manually built, does not have a build standard and does not exist in dpkg_archive. It is used as a placeholder.
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."
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, SSchange_type, SSpkg_name, SSpkg_version, SSv_ext )
If SSbuild_type = "A" Then
If SSchange_type = "F" Then
Default_Label = SSpkg_name & "_" & SSpkg_version & ".WIP"
else
Default_Label = UCase(SSpkg_name & "." & SSpv_id & SSv_ext) & ".WIP"
End If
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 IsNull(NNpkg_state) Then
DefineStateIcon = ""
Exit Function
End If
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
ElseIf (CCdlocked = "A") Then
DefineStateIcon = enum_imgApproved
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
Case enumPKG_SDK_IMPORT
DefineStateIcon = enum_imgSdkImport
Case enumPKG_SDK_DEPENDENCY
DefineStateIcon = enum_imgSdkDep
Case enumPKG_UNBUILDABLE
DefineStateIcon = enum_imgUnBuildable
Case enumPKG_BUILDING
DefineStateIcon = enum_imgCompiling
Case enumPKG_SCHEDULED
DefineStateIcon = enum_imgScheduled
Case enumPKG_BUILDFAIL
DefineStateIcon = enum_imgBuildFail
Case enumPKG_BUILDEXCLUDE
DefineStateIcon = enum_imgBuildExclude
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 DefineStateIconSimple ( NNpkg_state, CCdlocked)
DefineStateIconSimple = ""
Select Case CInt( NNpkg_state )
Case enumPKG_STATE_OK
If (CCdlocked = "R") OR (CCdlocked = "A") Then
DefineStateIconSimple = enum_imgBuilding
ElseIf (CCdlocked = "P") Then
DefineStateIconSimple = enum_imgPending
ElseIf (CCdlocked = "Y") Then
DefineStateIconSimple = enum_imgReleasedLocked
ElseIf (CCdlocked = "N") Then
DefineStateIconSimple = enum_imgReleasedUnlocked
Else
DefineStateIconSimple = enum_imgBlank
End If
Case enumPKG_STATE_MAJOR
DefineStateIconSimple = enum_imgCritical
Case enumPKG_STATE_MINOR
DefineStateIconSimple = enum_imgWarning
Case enumPKG_STATE_MAJOR_READY
DefineStateIconSimple = enum_imgCReady
Case enumPKG_STATE_MINOR_READY
DefineStateIconSimple = enum_imgWReady
Case enumPKG_NOT_FOUND
DefineStateIconSimple = enum_imgNotFound
Case enumPKG_STATE_NEW_PATCH
DefineStateIconSimple = enum_imgPatchAvailable
Case enumPKG_STATE_DEPRECATED
DefineStateIconSimple = enum_imgDeprecated
Case enumPKG_STATE_DEPRECATED_DEPENDENT
DefineStateIconSimple = enum_imgDeprecatedDependent
Case enumPKG_ADVISORY_RIPPLE
DefineStateIconSimple = enum_imgAR
Case enumPKG_ADVISORY_RIPPLE_DEPENDENT
DefineStateIconSimple = enum_imgARD
Case enumPKG_PEGGED_VERSION
DefineStateIconSimple = enum_imgGreenPin
Case enumPKG_SDK_IMPORT
DefineStateIconSimple = enum_imgSdkImport
Case enumPKG_SDK_DEPENDENCY
DefineStateIconSimple = enum_imgSdkDep
End Select
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: GetCurrentParameters
' Description: Setup some very basic data that is common to (almost) pages
' Uses Request("proj_id"), Request("rtag_id") and Request("pv_id")
'
' Given an rtag_id it will determine the enclosing project
'
' If a valid Release will also fill in releaseInfoHash
' Done here as its info we will need any way and its better to have
' one database access than two ( or three )
'
' Returns: nProjId proj_id of rtag_id
' sProjName
' nRtagId rtag_id
' sRtagName
' nPvid pv_id
'
' releaseInfoHash - Populates
'
Function GetCurrentParameters( nProjId, sProjName, nRtagId, sRtagName, nPvId )
Dim rsQry,query
' Set defaults
nProjId = -1
sProjName = ""
nRtagId = -1
sRtagName = ""
nPvId = -1
' Set the ID values from the url
If Request("pv_id") <> "" Then nPvId = CDbl(Request("pv_id"))
If Request("proj_id") <> "" Then nProjId = CDbl(Request("proj_id"))
If Request("rtag_id") <> "" Then nRtagId = CDbl(Request("rtag_id"))
' Get parameters from database
If Request("rtag_id") <> "" Then
GetReleaseInfo (nRtagId)
sProjName = UCase(releaseInfoHash("proj_name"))
nProjId = CDbl(releaseInfoHash("proj_id"))
sRtagName = releaseInfoHash("rtag_name")
ElseIf Request("proj_id") <> "" Then
OraDatabase.Parameters.Add "PROJ_ID", Request("proj_id"), ORAPARM_INPUT, ORATYPE_VARCHAR2
query = _
" SELECT proj.proj_name, proj.proj_id"&_
" FROM projects proj"&_
" WHERE proj.proj_id = :PROJ_ID"
Set rsQry = OraDatabase.DbCreateDynaset( query, cint(0))
If ((NOT rsQry.BOF) AND (NOT rsQry.EOF)) Then
sProjName = UCase(rsQry.Fields("proj_name"))
End If
rsQry.Close()
Set rsQry = nothing
OraDatabase.Parameters.Remove "PROJ_ID"
End If
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)
Dim rsQry
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 (canActionControlInProject("EditReleaseNotesInPending"))) OR ((cDlocked = "Y") AND (canActionControlInProject("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 (canActionControlInProject("EditReleaseNotesInPending"))) OR ((cDlocked = "Y") AND (canActionControlInProject("EditCriticalInfoForLockedPackage")))) AND objAccessControl.UserLogedIn Then
Is_Critical_Section_Editable = TRUE
Else
Is_Critical_Section_Editable = FALSE
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, ByRef rippleBasePvid, ByRef lastNonRipplePvid )
Dim queryResult
Dim queryString
Dim lastNonRipple
' default return value in case don't find anything
getLastNonRippleVersionPVID = this_pv_id
lastNonRipple = this_pv_id
' Get a list of all previous non-ripple builds starting with the current pvid
' The first entry will be the base entry of the current ripple
' The second entry will be the previous significant entry
queryString = _
"SELECT pv_id,last_pv_id,pkg_version,v_ext,build_type " &_
"FROM " &_
" (SELECT build_type,last_pv_id,pv_id,pkg_version,v_ext " &_
" FROM " &_
" (SELECT pv.build_type,pv.last_pv_id AS raw_last_pvid ,pv_id,pv.pkg_version,pv.v_ext,DECODE(pv.pv_id, pv.last_pv_id, NULL, pv.last_pv_id) AS last_pv_id " &_
" FROM release_manager.package_versions pv " &_
" WHERE pv.PKG_ID IN " &_
" (SELECT pkg_id " &_
" FROM release_manager.package_versions pv " &_
" WHERE pv.pv_id = " & this_pv_id &_
" ) " &_
" ) " &_
" START WITH pv_id = " & this_pv_id &_
" CONNECT BY nocycle prior last_pv_id = pv_id " &_
" ) " &_
"WHERE build_type != 'Y' "
Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))
' First entry - Base of the current ripple (may be myself)
If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then
getLastNonRippleVersionPVID = queryResult("pv_id")
lastNonRipple = queryResult("pv_id")
' Second entry - Previous Non Ripple Entry
queryResult.MoveNext
If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then
getLastNonRippleVersionPVID = queryResult("pv_id")
End If
End If
queryResult.Close()
Set queryResult = nothing
If Not isNull(rippleBasePvid) Then rippleBasePvid = lastNonRipple
If Not isNull(lastNonRipplePvid) Then lastNonRipplePvid = getLastNonRippleVersionPVID
End Function
Function getLastNonRippleVersionPVIDLimitedByDate( this_pv_id, limitDate )
Dim queryResult
Dim queryString
' default return value in case don't find anything
getLastNonRippleVersionPVIDLimitedByDate = this_pv_id
' Get a list of all previous non-ripple builds starting with the cuurent pvid
' The first entry will be the base entry of the current ripple
' The second entry will be the previous significant entry
queryString = _
"SELECT last_pv_id, pv_id, pkg_version, v_ext,MODIFIED_STAMP " &_
"FROM " &_
" (SELECT pv.build_type, pv.last_pv_id, pv_id, pv.pkg_version, pv.v_ext, pv.MODIFIED_STAMP" &_
" FROM release_manager.package_versions pv" &_
" START WITH pv.pv_id = " + this_pv_id &_
" CONNECT BY nocycle prior pv.last_pv_id = pv.pv_id" &_
" ) where build_type != 'Y' " &_
" AND MODIFIED_STAMP >= TO_DATE('" & limitDate & "','DY DD-MON-YYYY')"
Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))
' First entry - Base of the current ripple (may be myself)
If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then
getLastNonRippleVersionPVIDLimitedByDate = queryResult("pv_id")
' Second entry - Previous Non Ripple Entry
queryResult.MoveNext
If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then
getLastNonRippleVersionPVIDLimitedByDate = queryResult("pv_id")
End If
End If
queryResult.Close()
Set queryResult = nothing
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 , NULL, NULL)
If (pv_id <> "") Then
getLastSignificantPVID = pv_id
End If
End If
End Function
'---------------------------------------------------------------
' Function: getLastSignificantVersions
'
' 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
' RefRippleBase : Ref to store riple base PVID
' RefPrevNonRipple : Ref to store previous non ripple PVID
' Notes:
'
Sub getLastSignificantVersions (pv_id, ByRef RefRippleBase, ByRef RefPrevNonRipple)
Dim rv
rv = getLastNonRippleVersionPVID( pv_id , RefRippleBase, RefPrevNonRipple)
End Sub
'---------------------------------------------------------------
' 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
'----------------------------------------------------------------------------------------------------------------------
' Number of active (Not paused, Not Disabled) daemon configured for a given Release
Function activeDaemonCount ( NNrtag_id )
Dim rsTemp, Query_String
activeDaemonCount = 0
If NNrtag_id <> "" Then
Query_String = "SELECT count(*) as Count FROM release_config rc, run_level rl WHERE rc.rtag_id = " & NNrtag_id & " AND rc.RCON_ID = rl.rcon_id(+) AND NVL(rl.pause, 0 ) = 0"
Set rsTemp = OraDatabase.DbCreateDynaset(Query_String, cint(0))
If rsTemp.RecordCount <> 0 Then
activeDaemonCount = rsTemp("Count")
End If
rsTemp.Close()
set rsTemp = nothing
End If
End Function
'----------------------------------------------------------------------------------------------------------------------
Function hasFutureBuild( NNrtag_id, NNpv_id )
Dim rsTemp, Query_String
hasFutureBuild = FALSE
If NNrtag_id <> "" AND NNpv_id <> "" Then
Query_String = " SELECT * FROM DAEMON_INSTRUCTIONS di WHERE di.RTAG_ID ="& NNrtag_id &" AND di.PV_ID ="& NNpv_id & " AND OP_CODE = " & OP_CODE_2_FUTURE_BUILD
Set rsTemp = OraDatabase.DbCreateDynaset(Query_String, cint(0))
If rsTemp.RecordCount <> 0 Then
hasFutureBuild = TRUE
End If
rsTemp.Close()
set rsTemp = nothing
End If
End Function
'----------------------------------------------------------------------------------------------------------------------
Function isBuilding( NNpv_id )
Dim rsTemp, Query_String
isBuilding = FALSE
If NNpv_id <> "" Then
Query_String = _
"SELECT unique rl.CURRENT_PV_ID" &_
" FROM RELEASE_CONFIG rc, RELEASE_TAGS rt, RUN_LEVEL rl " &_
" WHERE rt.RTAG_ID = rc.RTAG_ID " &_
" AND rc.bmcon_id is not null" &_
" AND rt.OFFICIAL in ( 'N', 'R', 'C')" &_
" AND rl.RCON_ID(+) = rc.RCON_ID" &_
" AND rl.CURRENT_PKG_ID_BEING_BUILT is not null" &_
" AND NVL(rl.PAUSE,0) < 2" &_
" AND rl.CURRENT_PV_ID = " & NNpv_id
Set rsTemp = OraDatabase.DbCreateDynaset(Query_String, cint(0))
If rsTemp.RecordCount <> 0 Then
isBuilding = 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.bmcon_id "&_
" 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("bmcon_id"))) AND (rsTemp("bmcon_id") <> "") 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"
ElseIf nOfficial = "P" Then
Get_Official = "Preserved"
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
'-----------------------------------------------------------------------------------------------------------------------------
Function EmptyToNull (sVal)
If isNull(sVal) Then
EmptyToNull = NULL
ElseIf sval <> "" Then
EmptyToNull = sVal
Else
EmptyToNull = NULL
End If
End Function
'-----------------------------------------------------------------------------------------------------------------------------
Function EmptyToNullString ( sName, sVal)
If isNull(sVal) Then
EmptyToNullString = sName & " is NULL"
ElseIf sval <> "" Then
EmptyToNullString = sName & "='" & sVal & "'"
Else
EmptyToNullString = sName & " is NULL"
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
'----------------------------------------------
' Test that specified package/version exists in dpkg_archive
' Can also test presence of the archive
' Use http interface as it does not require authetication
Function testArchiveAccessPkg(pkgName, pkgVersion)
Dim oXMLHTTP
Dim testUrl
testArchiveAccessPkg = False
testUrl = HTTP_PKG_ARCHIVE
testUrl = testUrl & "/cgi-bin/testPackage.pl"
If pkgName <> "" Then
testUrl = testUrl & "?path=" & pkgName & "/" & pkgVersion
End If
Set oXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP.3.0")
' Use error handling in case dpkg_archive is not available
' Use HEAD to test existence
Err.Clear
On Error Resume Next
oXMLHTTP.Open "GET", testUrl, False
oXMLHTTP.Send
' Do not combine the next two If statments - it will not work
If Err.Number = 0 Then
If oXMLHTTP.Status = 200 Then
If InStr(1,oXMLHTTP.responseText, "::FOUND::", 1) = 1 Then
testArchiveAccessPkg = True
End If
End If
End If
On Error Goto 0
End Function
'--------------------------------------------------------------------------------------------------------------------------
' Like Cint, but handles NULL by replacing it with a default value
Function NiceInt( val, def)
If val <> "" AND IsNumeric(val) Then
NiceInt = CInt(val)
Else
NiceInt = def
End If
End Function
'--------------------------------------------------------------------------------------------------------------------------
' Like CLng, but handles NULL by replacing it with a default value
Function NiceCLng( val, def)
If val <> "" AND IsNumeric(val) Then
NiceCLng = CLng(val)
Else
NiceCLng = def
End If
End Function
'--------------------------------------------------------------------------------------------------------------------------
' Like CStr, but handles NULL by replacing it with a default value
Function NiceCStr( val, def)
If IsNull(val) Then
NiceCStr = def
ElseIf IsEmpty(val) Then
NiceCStr = def
Else
NiceCStr = CStr(val)
End If
End Function
'--------------------------------------------------------------------------------------------------------------------------
' Convert a duration(seconds) into days,hours and seconds. eg 10d 3h 13m 15s
Function NiceDuration(nDuration)
NiceDuration = ""
Dim joiner : joiner = ""
Dim unit
Dim duration : duration = nDuration
If duration > (60 * 60 * 24) Then
unit = Int(duration / (60 * 60 * 24))
duration = duration MOD (60 * 60 * 24)
NiceDuration = NiceDuration & joiner & unit & "d"
joiner = " "
End If
If duration > (60 * 60) Then
unit = Int(duration / (60 * 60))
duration = duration MOD (60 * 60)
NiceDuration = NiceDuration & joiner & unit & "h"
joiner = " "
End If
If duration > (60) Then
unit = Int(duration / (60))
duration = duration MOD (60)
NiceDuration = NiceDuration & joiner & unit & "m"
joiner = " "
End If
NiceDuration = NiceDuration & joiner & duration & "s"
End Function
'--------------------------------------------------------------------------------------------------------------------------
' Quick and ugly code to attempt to remove nasty characters from strings
' In particular some unicode characters that mess with the json decoder
Function CleanUpJson (input)
Dim objRegExp, outputStr
Set objRegExp = New Regexp
objRegExp.IgnoreCase = True
objRegExp.Global = True
objRegExp.Pattern = "((?![\[\]\(\)\{\}\$-_?/""';:.,a-zA-Z0-9]).)+"
outputStr = objRegExp.Replace(input, " ")
CleanUpJson = outputStr
End Function
'--------------------------------------------------------------------------------------------------------------------------
' Test if package can be added to a release
' Really tests if a a package of this packages alias can be
' manipulated in this release
' True: Package alias can be added/replaced in release
Function canAddToRelease ( nRtagId, nPvId )
' If we don't enough parameters then assume we can add package
If nRtagId = "" OR nPvId = "" Then
canAddToRelease = TRUE
Exit Function
End If
On Error Resume Next
OraDatabase.Parameters.Add "RTAG_ID", nRtagId, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "PV_ID", nPvId, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "RETURN_CODE", null, ORAPARM_OUTPUT, ORATYPE_NUMBER
objEH.TryORA ( OraSession )
OraDatabase.ExecuteSQL _
"BEGIN :RETURN_CODE := PK_RELEASE.CAN_ADD_PKG_TO_RELEASE(:RTAG_ID,:PV_ID); END;"
If CInt(OraDatabase.Parameters("RETURN_CODE").Value) = 0 Then
canAddToRelease = FALSE
Else
canAddToRelease = TRUE
End If
objEH.CatchORA ( OraSession )
OraDatabase.Parameters.Remove "RETURN_CODE"
OraDatabase.Parameters.Remove "RTAG_ID"
OraDatabase.Parameters.Remove "PV_ID"
End Function
'--------------------------------------------------------------------------------------------------------------------------
' Returns either the value of the Request('tag') or the default value
Function RequestDefault(stag, sdefault)
If Request(stag) <> "" Then
RequestDefault = Request(stag)
Else
RequestDefault = sdefault
End If
End Function
'--------------------------------------------------------------------------------------------------------------------------
' Returns either the value of the Request('tag') or the default value
Function RequestBool(stag, sdefault)
Dim val
If Request(stag) <> "" Then
RequestBool = FALSE
val = UCase( Request(stag))
If val = "Y" or val = "TRUE" Then
RequestBool = TRUE
ElseIf IsNumeric(val) Then
If val > 0 Then
RequestBool = TRUE
End If
End If
Else
RequestBool = sdefault
End If
End Function
'--------------------------------------------------------------------------------------------------------------------------
' Data structure to assist in the Release Mode Transition Check
' Tuples (FromCondition, ToCondition) '-' == Always
' Order matches ReleaseModeAccessCheck
'
Dim RMTD_Data
RMTD_Data = Array(Array("-" ,"-"), _
Array("ChangeModeFromRestrictive","-"), _
Array("ChangeModeFromRestrictive","-"), _
Array("ChangeModeFromClosed" ,"ChangeModeToClosed"), _
Array("ChangeModeFromClosed" ,"ChangeModeToPreserved"), _
Array("ChangeModeFromArchived" ,"ChangeModeToArchived") _
)
'-------------------------------------------------
' Function: ReleaseMode2Index
' Description: Convert a enumDB_RELEASE_IN_*** into an index into the above array
'
Function ReleaseMode2Index( eReleaseMode )
If eReleaseMode = enumDB_RELEASE_IN_OPEN_MODE Then
ReleaseMode2Index = 0
ElseIf eReleaseMode = enumDB_RELEASE_IN_RESTRICTIVE_MODE Then
ReleaseMode2Index = 1
ElseIf eReleaseMode = enumDB_RELEASE_IN_CCB_MODE Then
ReleaseMode2Index = 2
ElseIf eReleaseMode = enumDB_RELEASE_IN_CLOSED_MODE Then
ReleaseMode2Index = 3
ElseIf eReleaseMode = enumDB_RELEASE_IN_PRESERVE_MODE Then
ReleaseMode2Index = 4
ElseIf eReleaseMode = enumDB_RELEASE_IN_ARCHIVE_MODE Then
ReleaseMode2Index = 5
Else
ReleaseMode2Index = -1
End If
End Function
'-------------------------------------------------
' Function: ReleaseModeAccessCheck
' Description: Determine if the user can change the Release Mode
' from - Start at this Release Mode
' to - Can the user transition to this mode
' Returns: True - yes they can
'
Function ReleaseModeAccessCheck( from, toMode )
Dim fromIndex : fromIndex = ReleaseMode2Index(from)
Dim toIndex : toIndex = ReleaseMode2Index(toMode)
ReleaseModeAccessCheck = False
' Can't Change to same mode
If from = toMode Then
Exit Function
End If
On Error Resume Next
Dim fromAccess : fromAccess = ""
Dim toAccess : toAccess = ""
' Get access type from table
' "" - No access (internal error)
' "-" - All Access allowed (if user is logged in )
' Else - Name of a canActionControlInProject
fromAccess = RMTD_Data(fromIndex)(0)
toAccess = RMTD_Data(toIndex)(1)
' Check From Condition
If fromAccess = "-" Then
ReleaseModeAccessCheck = canActionInProject()
ElseIf fromAccess <> "" Then
ReleaseModeAccessCheck = canActionControlInProject(fromAccess)
End If
If NOT ReleaseModeAccessCheck Then
Exit Function
End If
' Check to Condition
If toAccess = "-" Then
ReleaseModeAccessCheck = canActionInProject()
ElseIf toAccess <> "" Then
ReleaseModeAccessCheck = canActionControlInProject(toAccess)
End If
End Function
'-------------------------------------------------
' Function: releaseIsClosed
' Description: Determine if a release can be modified at all
' Returns: True: Release cannot be modified
' ie: it is NOT in a state that allows modification
'
Function releaseIsClosed(eReleaseMode)
If eReleaseMode = enumDB_RELEASE_IN_OPEN_MODE Then
releaseIsClosed = False
ElseIf eReleaseMode = enumDB_RELEASE_IN_RESTRICTIVE_MODE Then
releaseIsClosed = False
ElseIf eReleaseMode = enumDB_RELEASE_IN_CCB_MODE Then
releaseIsClosed = False
ElseIf eReleaseMode = enumDB_RELEASE_IN_CLOSED_MODE Then
releaseIsClosed = True
ElseIf eReleaseMode = enumDB_RELEASE_IN_PRESERVE_MODE Then
releaseIsClosed = True
ElseIf eReleaseMode = enumDB_RELEASE_IN_ARCHIVE_MODE Then
releaseIsClosed = True
Else
releaseIsClosed = True
End If
End Function
'-------------------------------------------------
' Function: releaseIsWritable
' Description: Determine if a release can be modified
' Returns: True: Release can be modified
' ie: it is in a state that allows modification
'
Function releaseIsWritable(eReleaseMode)
If eReleaseMode = enumDB_RELEASE_IN_OPEN_MODE AND canActionInProject() Then
releaseIsWritable = True
ElseIf eReleaseMode = enumDB_RELEASE_IN_RESTRICTIVE_MODE AND canActionControlInProject("AlterReleaseContentsInRestrictiveMode") Then
releaseIsWritable = True
ElseIf eReleaseMode = enumDB_RELEASE_IN_CCB_MODE AND canActionControlInProject("AlterReleaseContentsInRestrictiveMode")Then
releaseIsWritable = True
ElseIf eReleaseMode = enumDB_RELEASE_IN_CLOSED_MODE Then
releaseIsWritable = False
ElseIf eReleaseMode = enumDB_RELEASE_IN_PRESERVE_MODE Then
releaseIsWritable = False
ElseIf eReleaseMode = enumDB_RELEASE_IN_ARCHIVE_MODE Then
releaseIsWritable = False
Else
releaseIsWritable = False
End If
End Function
'-------------------------------------------------
' Function: releaseIsMergable
' Description: Determine if the user can 'Merge' into the release
' Returns: True: Release can be modified
' ie: it is in a state that allows modification
'
Function releaseIsMergable(eReleaseMode)
If eReleaseMode = enumDB_RELEASE_IN_OPEN_MODE AND canActionInProject() Then
releaseIsMergable = True
ElseIf eReleaseMode = enumDB_RELEASE_IN_RESTRICTIVE_MODE AND canActionControlInProject("MergeRelease") Then
releaseIsMergable = True
ElseIf eReleaseMode = enumDB_RELEASE_IN_CCB_MODE AND canActionControlInProject("MergeReleaseForCCB") Then
releaseIsMergable = True
Else
releaseIsMergable = False
End If
End Function
'-------------------------------------------------
' Function: RenderLxrStateString
' Description: Return a string to show the current LXR state
Function RenderLxrStateString(rtagid, lxr, lxrState, official, txt)
If lxr = "N" AND lxrState = "N" Then
RenderLxrStateString = ""
Else
Dim lxrUrl : lxrUrl = LXR_URL & "/" & rtagid
Dim image, hover, isClosed
If lxrState = "N" Then
If releaseIsClosed(official) Then lxrState = "A"
End If
Select Case lxrState
Case "I"
image = "LXRlogo64.jpeg"
hover = "LXR Index available"
Case "C"
image = "LXRlogo64_off.jpeg"
hover = "LXR Index available, but no longer updated"
Case "N"
image = "LXRlogo64_progress.jpeg"
hover = "LXR Requested, but not yet available"
Case "A"
image = "LXRlogo64_off.jpeg"
hover = "LXR no longer available. Release is no longer open"
Case Else
image = "LXRlogo64_progress.jpeg"
hover = "LXR Requested, unknown State:(" & lxrState &")"
End Select
RenderLxrStateString = "
" & txt &""
End If
End Function
'-------------------------------------------------
' Function: RenderS3ManifestStateString
' Description: Return a string to show the current S3 Manifest Processing state
Function RenderS3ManifestStateString(rtagid, s3Manifest, official, txt)
If s3Manifest = "N" Then
RenderS3ManifestStateString = ""
Else
Dim image, hover, iClass, iStyle
iClass = ""
iStyle = ""
If releaseIsClosed(official) Then s3Manifest = "A"
Select Case s3Manifest
Case "Y"
image = "AmazonS3.png"
hover = "Manifest Generation to S3 Active"
Case "N"
image = "AmazonS3.png"
hover = "Manifest Generation to S3 Active not enabled"
Case "A"
image = "AmazonS3.png"
hover = "Manifest Generation to S3 Active not active. Release is no longer open"
iClass = "class=lessOpacity"
Case Else
image = "AmazonS3.png"
hover = "Manifest Generation unknown State:(" & s3Manifest &")"
iStyle = " filter: grayscale(1);"
End Select
RenderS3ManifestStateString = "
" & txt & ""
End If
End Function
'-------------------------------------------------
' Function: rippleFieldName
' Description: Return a string to convert a ripple field state to a text name
' bFlag is set to false if the state is unknown.
Dim rippleFieldValues
rippleFieldValues = Array ("M", "m", "p", "b", "L")
Function rippleFieldName ( rstate, ByRef bFlag )
If isNULL(rstate) Then
rstate = "b"
End If
bFlag = TRUE
Select Case rstate
Case "M"
rippleFieldName = "Major Number"
Case "m"
rippleFieldName = "Minor Number"
Case "p"
rippleFieldName = "Patch Number"
Case "b"
rippleFieldName = "Build Number"
Case "L"
rippleFieldName = "Limited"
Case Else
rippleFieldName = "Invalid State"
bFlag = FALSE
End Select
End Function
'----------------------------------------------------
' Function: emailField
' Description: Generate a 'span' with email information
' The mailto class is picked up the jquery for processing
Function emailField(sName, sEmail)
emailField = "" & sName & ""
End Function
Function emailField3(sName, sEmail,sUname)
emailField3 = "" & sName & ""
End Function
'-----------------------------------------------------------------------------------------------------------------------------
Function ReleaseIcon ( cOfficial )
If cOfficial = "N" Then
' Open Mode
ReleaseIcon = LIMG_OPEN_MODE
ElseIf cOfficial = "R" Then
' Restrictive Mode
ReleaseIcon = LIMG_RESTRICTIVE_MODE
ElseIf cOfficial = "C" Then
'CCB Mode
ReleaseIcon = LIMG_CCB_MODE
ElseIf cOfficial = "Y" Then
'Closed Mode
ReleaseIcon = LIMG_CLOSED_MODE
ElseIf cOfficial = "O" Then
'Closed Mode - With warning (aged)
ReleaseIcon = LIMG_CLOSED_MODE_WARN
ElseIf cOfficial = "P" Then
'Closed Mode - Archived, but don't purge
ReleaseIcon = LIMG_PRESERVE_MODE
ElseIf cOfficial = "A" Then
'Archive Mode
ReleaseIcon = LIMG_ARCHIVE_MODE
ElseIf cOfficial = "S" Then
'Snapshot Mode
ReleaseIcon = LIMG_SNAPSHOT_MODE
End If
End Function
'-----------------------------------------------------------------------------------------------------------------
Function SdkIcon (cState)
If cState = "R" Then
' Released - available for use
SdkIcon = LIMG_CLOSED_MODE
ElseIf cState = "D" Then
' Deprecated - Cannot be added to a Release any more
SdkIcon = LIMG_ARCHIVE_MODE
ElseIf cState = "U" Then
' Work in progress - Still being constructed. Cannot be added to a Release yet
SdkIcon = LIMG_OPEN_MODE
End If
End Function
'-----------------------------------------------------------------------------------------------------------------
'
' Helper rountien to create a button that will be wired into JavaScript
'
Sub BuildJsButton (bState, sClass, sTitle, sImage)%>
<%If bState Then%>
>
<%Else%>
class="lessOpacity">
<%End If%>
<%End Sub
'------------------------------------------------------------------------------
' Helper routine to create buttons and disabled buttons
' Treat the action an href - link the user can see and potentially open in another tab
'
Sub BuildActionButtonLink(bState, sText, sTitle, sImage, sRef)
%>
<%If bState Then%>
><%=sText%>
<%Else%>
class="lessOpacity"><%=sText%>
<%End If%>
|
<%End Sub
'------------------------------------------------------------------------------
' Helper routine to create buttons and disabled buttons
' Treat the ref as a page to goto, but don't use href
'
Sub BuildActionButton(bState, sText, sTitle, sImage, sRef)
%>
<%If bState Then%>
><%=sText%>
<%Else%>
class="lessOpacity"><%=sText%>
<%End If%>
|
<%End Sub
'------------------------------------------------------------------------------
' Helper routine to create buttons and disabled buttons
' Tack a onClick operation
'
Sub BuildActionButtonClickRaw(bState, sText, sTitle, isBlue, sImage, sClick)
Dim sStyle : sStyle = ""
If Left(sImage,4) = "
><%=sText%>
<%Else%>
<%If isBlue Then sStyle = "color:#0000ee66; text-decoration:none"%>
class="lessOpacity"><%=sText%>
<%End If
End Sub
Sub BuildActionButtonClick(bState, sText, sTitle, isBlue, sImage, sClick)%>
<%BuildActionButtonClickRaw bState, sText, sTitle, isBlue, sImage, sClick %>
|
<%End Sub
'------------------------------------------------------------------------------
' Helper routine to create Text with a button that follows
' Tack a onClick operation
'
Sub BuildEditButtonRaw(bState, sText, sTitle, isBlue, sImage, sClick)
Dim sStyle : sStyle = "font-weight:bold;"
Dim sClass : sClass = ""
If Left(sImage,4) = "
<%=sText%>
>
<%Else%>
<%If isBlue Then sClass = "txt_linked_dis" : sStyle = ""%>
<%=sText%>
class="lessOpacity">
<%End If
End Sub%>