%@LANGUAGE="VBSCRIPT"%> <% '===================================================== ' NEW VERSION ' --- PROCESS FORM --- '===================================================== %> <% Option explicit ' Good idea to set when using redirect Response.Expires = 0 ' always load the page, dont store %> <% ' Set rfile parameter. This is a return page after Login Call objPMod.StoreParameter ( "rfile", "dependencies.asp" ) '------------ ACCESS CONTROL ------------------ %> <% '------------ Variable Definition ------------- Dim parOLDpv_id Dim parFRnewver Dim NEWpv_id Dim parSetToPv_id Dim toTouch Dim parNewPackage Dim parFRpkgName Dim parChangeType Dim parBase_view_id Dim parPersonal_view_id Dim parBuildType Dim bImode Dim newPkgPv_id Dim errMessage '------------ Constants Declaration ----------- '------------ Variable Init ------------------- parOLDpv_id = QStrPar("OLDpv_id") parFRnewver = QStrPar("FRnewver") parSetToPv_id = QStrPar("pv_id") parNewPackage = Request("newPackage") parFRpkgName = Request("FRpkgName") parChangeType = Request("change_type") parBase_view_id = Request("base_view_id") parPersonal_view_id = Request("personal_view_id") parBuildType = Request("build_type") bImode = (Request("iMode") = "pending") '---------------------------------------------- %> <% '---------------------------------------------- ' Appears to be a 'Replace Version' ' Args: SSnewver - New Version String (may be empty) ' NNorig_pv_id - original PVID ' NNSetToPv_id - New PVID ' NNrtag_id - Release Identifier ' bImode - True: Insert into pending ' retNEWpv_id - Return the PVID of the (replaced) package ' Sub New_Version ( SSnewver, NNorig_pv_id, NNSetToPv_id, NNrtag_id, bImode, retNEWpv_id ) Dim cAlterReleaseWhileRestrictive Dim newPkgVersion On Error Resume Next objEH.ErrorRedirect = TRUE ' Manually built package ' Force change type of 'Fixed' If parBuildType = "M" Then parChangeType = "F" End If ' If automatically assigned version number ' Reset the version string If parChangeType = "F" Then newPkgVersion = SSnewver Else newPkgVersion = Request("v_ext") SSnewver = "" End If OraDatabase.Parameters.Add "ORIG_PV_ID", NNorig_pv_id, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "PKG_VERSION", newPkgVersion, ORAPARM_INPUT, ORATYPE_VARCHAR2 ' Access Control - Allow release change while release is in restrictive mode cAlterReleaseWhileRestrictive = "N" If canActionControlInProject("AlterReleaseContentsInRestrictiveMode") Then cAlterReleaseWhileRestrictive = "Y" OraDatabase.Parameters.Add "BUILD_TYPE", parBuildType, ORAPARM_INPUT, ORATYPE_CHAR OraDatabase.Parameters.Add "CHANGE_TYPE", parChangeType, ORAPARM_INPUT, ORATYPE_CHAR OraDatabase.Parameters.Add "ALTER_RELEASE", cAlterReleaseWhileRestrictive, ORAPARM_INPUT, ORATYPE_CHAR OraDatabase.Parameters.Add "SET_TO_PV_ID", NNSetToPv_id, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "RTAG_ID", NNrtag_id, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "USER_ID", objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "enumISSUES_STATE_IMPORTED", enumISSUES_STATE_IMPORTED, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "RETPV_ID", 0, ORAPARM_OUTPUT,ORATYPE_NUMBER objEH.TryORA ( OraSession ) ' Create a new version of the package (if it does not exist) ' Check that we can update the release ' Replace package in the release ' if bImode Then OraDatabase.ExecuteSQL _ "BEGIN "&_ " PK_PACKAGE.NEW_VERSION ( :ORIG_PV_ID, "&_ " :PKG_VERSION,"&_ " :BUILD_TYPE,"&_ " :CHANGE_TYPE,"&_ " :SET_TO_PV_ID,"&_ " :RTAG_ID,"&_ " :USER_ID,"&_ " :enumISSUES_STATE_IMPORTED,"&_ " :RETPV_ID ); "&_ " PK_RELEASE.CAN_USER_WRITE_TO_RELEASE ( :RTAG_ID, :RETPV_ID, :ALTER_RELEASE ); "&_ " PK_PLANNED.MERGE_PACKAGE (:RETPV_ID, PK_ENVIRONMENT.GET_VIEW_LOCATION (:ORIG_PV_ID, :RTAG_ID), :RTAG_ID, :USER_ID, 'A'); "&_ "END;" Else OraDatabase.ExecuteSQL _ "BEGIN "&_ " PK_PACKAGE.NEW_VERSION ( :ORIG_PV_ID, "&_ " :PKG_VERSION,"&_ " :BUILD_TYPE,"&_ " :CHANGE_TYPE,"&_ " :SET_TO_PV_ID,"&_ " :RTAG_ID,"&_ " :USER_ID,"&_ " :enumISSUES_STATE_IMPORTED,"&_ " :RETPV_ID ); "&_ " PK_RELEASE.CAN_USER_WRITE_TO_RELEASE ( :RTAG_ID, :RETPV_ID, :ALTER_RELEASE ); "&_ " PK_ENVIRONMENT.REPLACE_PACKAGE ( :RETPV_ID, :ORIG_PV_ID, :RTAG_ID, :USER_ID ); "&_ "END;" End If retNEWpv_id = OraDatabase.Parameters("RETPV_ID").Value objEH.CatchORA ( OraSession ) If objEH.LastOraFailed = FALSE and not bImode Then Call UpdateChangeType (retNEWpv_id, parChangeType ) Call UpdateReasonForVersion (retNEWpv_id, Request("FRreason")) End If OraDatabase.Parameters.Remove "ORIG_PV_ID" OraDatabase.Parameters.Remove "ALTER_RELEASE" OraDatabase.Parameters.Remove "PKG_VERSION" OraDatabase.Parameters.Remove "CHANGE_TYPE" OraDatabase.Parameters.Remove "BUILD_TYPE" OraDatabase.Parameters.Remove "SET_TO_PV_ID" OraDatabase.Parameters.Remove "RTAG_ID" OraDatabase.Parameters.Remove "USER_ID" OraDatabase.Parameters.Remove "enumISSUES_STATE_IMPORTED" OraDatabase.Parameters.Remove "RETPV_ID" End Sub '--------------------------------------------------------------- Function SanityCheck ( newVersion ) SanityCheck = False Dim objRegEx, objRegEx2 Set objRegEx = New RegExp Set objRegEx2 = New RegExp objRegEx.IgnoreCase = True objRegEx.Pattern = "^[0-9]+\.[0-9]+\.[0-9]+\.[a-zA-Z0-9]+$" objRegEx2.Pattern = "\.(cots)|(tool)$" If Len(newVersion) <= 50 Then If objRegEx.Test( newVersion ) OR objRegEx2.Test( newVersion ) Then SanityCheck = True End If End If If parBuildType = "A" Then SanityCheck = True End If Set objRegEx = Nothing Set objRegEx2 = Nothing End Function '----------------------------------------------------------------------------------- ' Seed the Database ' Create proto package-version to be used later ' Sub Seed_DB ( retPV_ID ) Dim QueryString On Error Resume Next OraDatabase.Parameters.Add "retPV_ID", 0, ORAPARM_OUTPUT, ORATYPE_NUMBER QueryString = "BEGIN Seed_Package_Names_Versions ("&_ " '" & parFRpkgName & "'"&_ ",'" & parFRnewver & "'" &_ ",:USER_ID" &_ ",:retPV_ID" &_ ",NULL" &_ ",'"& parBuildType & "'" &_ ",'"& parChangeType & "'" &_ "); END;" OraDatabase.ExecuteSQL QueryString retPV_ID = OraDatabase.Parameters("retPV_ID").Value OraDatabase.Parameters.Remove "retPV_ID" End Sub '----------------------------------------------------------------------------------- ' Add Package to a Release Sub AddPackage ( sPvId ) Dim rsQry, AssocMASS On Error Resume Next Set rsQry = OraDatabase.DbCreateDynaset( "SELECT * FROM RELEASE_TAGS RT, PACKAGE_VERSIONS PV WHERE RT.RTAG_ID ="&parRtag_id&" AND PV.PV_ID IN ("&sPvId&")", cint(0)) AssocMASS = rsQry("ASSOC_MASS_REF") If ( IsNull(AssocMASS) ) OR (AssocMASS <> "" AND (rsQry("v_ext") <> ".cr" AND rsQry("v_ext") <> ".mas" )) Then OraDatabase.Parameters.Add "PV_ID_LIST", sPvId, ORAPARM_OUTPUT, ORATYPE_VARCHAR2 OraDatabase.ExecuteSQL "BEGIN PK_ENVIRONMENT.ADD_PACKAGE ( :PV_ID_LIST, :BASE_VIEW_ID, :RTAG_ID, :USER_ID ); END;" OraDatabase.Parameters.Remove "PV_ID_LIST" Else Err.Raise 8, "Cannot ADD a CORE/MASS package into a MASS_REF Reference Release!" End If End Sub '----------------------------------------------------------------------------------- Sub Add_Packages_To_View_Definition ( NNpkg_list ) If OraDatabase.Parameters("PERSONAL_VIEW_ID").Value = "" Then Exit Sub OraDatabase.ExecuteSQL _ " INSERT INTO view_def"&_ " SELECT TO_NUMBER( :PERSONAL_VIEW_ID ) AS view_id, pkg.pkg_id"&_ " FROM packages pkg"&_ " WHERE pkg.pkg_id IN ( "& NNpkg_list &" )"&_ " MINUS "&_ " SELECT vd.view_id, vd.pkg_id"&_ " FROM view_def vd"&_ " WHERE vd.view_id = :PERSONAL_VIEW_ID " End Sub '----------------------------------------------------------------------------------- %> <% '----------------------- MAIN LINE --------------------------- Dim rsQry, Query_String, Record_Count Dim versionToSanityCheck 'Response.Write "
------------" 'Call Destroy_All_Objects 'Response.End '--- Process submission --- If ((parNewPackage <> "") AND parNewPackage) Then ' ' Creating a new package and its first version ' Appears to work for others too Dim reResult Dim pkgFound ' Ensure that the named package does not exist ' Can't create it if it already exists ' pkgFound = "" Query_String = "SELECT pkg.*" &_ " FROM packages pkg"&_ " WHERE pkg.pkg_id != 0"&_ " AND UPPER(pkg.pkg_name) = UPPER('"& Trim(parFRpkgName) & "')" Set rsQry = OraDatabase.DbCreateDynaset( Query_String, ORADYN_DEFAULT ) If ((NOT rsQry.BOF) AND (NOT rsQry.EOF)) Then pkgFound = rsQry("pkg_id") End If rsQry.Close Set rsQry = Nothing ' ' Don't need to create the package ' It will spring into existance if it does not exist ' On Error Resume Next Dim bAdded: bAdded = False 'Response.Write "
" 'Dim Item 'For Each Item In Request.Form ' Response.Write "User Data: " &Item & ": " & Request.Form(Item) & "
" 'Next 'Response.Write "------------
------------" If ( parFRpkgName <> "" and parFRnewver <> "") Then ' Determine the state of the Release ' Can only add packages to a release that is in Open Mode(N) or Restricted Mode(R) Set rsQry = OraDatabase.DbCreateDynaset( "SELECT OFFICIAL FROM RELEASE_TAGS WHERE RTAG_ID ="&parRtag_id, cint(0)) objEH.Try If releaseIsWritable(rsQry("official")) Then OraSession.BeginTrans '---- SQL parameters ---- OraDatabase.Parameters.Add "RTAG_ID", parRtag_id, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "USER_ID", objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "BASE_VIEW_ID", parBase_view_id, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "PERSONAL_VIEW_ID", parPersonal_view_id, ORAPARM_INPUT, ORATYPE_NUMBER '---- Create Version and Add to Release ---- Call Seed_DB ( newPkgPv_id ) If Err.Number = 0 Then Call AddPackage ( newPkgPv_id ) If Err.Number = 0 Then If NOT IsNull(parPersonal_view_id) Then Call Add_Packages_To_View_Definition ( newPkgPv_id ) End If End If End If OraDatabase.Parameters.Remove "RTAG_ID" OraDatabase.Parameters.Remove "USER_ID" OraDatabase.Parameters.Remove "BASE_VIEW_ID" OraDatabase.Parameters.Remove "PERSONAL_VIEW_ID" '---- Insert additional information If Err.Number = 0 Then Call UpdateReasonForVersion (newPkgPv_id, Request("FRreason")) End If '---- Insert Package Licence info If Err.Number = 0 Then Call UpdateLicenceInfo (newPkgPv_id, Request("licence_id")) End If '---- Commit or Rollback the transaction If Err.number <> 0 Then OraSession.RollBack Call RaiseMsg ( enum_MSG_ERROR, Err.description ) Else OraSession.CommitTrans bAdded = True End If '---- Run Release Changed scripts on archive server '---- This is a new package so it should not be needed ' 'If bAdded Then ' Dim objRC: Set objRC = New ReleaseChanged ' Call objRC.Run_ReleaseChanged_List(parRtag_id,newPkgPv_id,enumRELEASE_CHANGE_MODE_PKG_ADDED) ' Set objRC = Nothing 'End If '--- Direct user the package-version that we have just added '--- Goto the page with the release notes as more info will need to be added Call Destroy_All_Objects Response.Redirect("fixed_issues.asp?rtag_id="& parRtag_id & "&pv_id=" & newPkgPv_id ) Else Err.Raise 8, "Cannot ADD a package in a CLOSED or CCB Release Mode" End If rsQry.Close Set rsQry = nothing objEH.Catch Else Response.write "Some mandatory parameters are missing!. Need parNewPackage and parFRnewver" & "
" 'Dim Item 'For Each Item In Request.Form ' Response.Write "User Data: " &Item & ": " & Request.Form(Item) & "
" 'Next 'Response.Write "------------