Rev 3891 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<%@LANGUAGE="VBSCRIPT"%><%'=====================================================' NEW VERSION' --- PROCESS FORM ---'=====================================================%><%Option explicit' Good idea to set when using redirectResponse.Expires = 0 ' always load the page, dont store%><!--#include file="common/conf.asp"--><!--#include file="common/globals.asp"--><!--#include file="common/formating.asp"--><!--#include file="common/qstr.asp"--><!--#include file="common/common_subs.asp"--><!--#include file="common/common_dbedit.asp"--><%' Set rfile parameter. This is a return page after LoginCall objPMod.StoreParameter ( "rfile", "dependencies.asp" )'------------ ACCESS CONTROL ------------------%><!--#include file="_access_control_login.asp"--><!--#include file="_access_control_general.asp"--><!--#include file="_access_control_project.asp"--><%'------------ Variable Definition -------------Dim parOLDpv_idDim parFRnewverDim NEWpv_idDim parSetToPv_idDim parSync_rtagsDim toTouchDim parNewPackageDim parFRpkgNameDim parChangeTypeDim parBase_view_idDim parPersonal_view_idDim parBuildTypeDim newPkgPv_idDim errMessage'------------ Constants Declaration -----------'------------ Variable Init -------------------parOLDpv_id = QStrPar("OLDpv_id")parFRnewver = QStrPar("FRnewver")parSetToPv_id = QStrPar("pv_id")parSync_rtags = Request("sync_rtags")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")'----------------------------------------------%><%Sub New_Version ( SSnewver, NNorig_pv_id, NNSetToPv_id, NNrtag_id, sSyncRtags, retNEWpv_id )Dim cAlterReleaseWhileRestrictive, rsQryDim Original_SSnewverOriginal_SSnewver = SSnewverOn Error Resume NextobjEH.ErrorRedirect = TRUEIf parBuildType = "A" ThenSSnewver = ""End IfOraDatabase.Parameters.Add "ORIG_PV_ID", NNorig_pv_id, ORAPARM_INPUT, ORATYPE_NUMBERIf parBuildType = "M" Then' Manual buildOraDatabase.Parameters.Add "PKG_VERSION", SSnewver, ORAPARM_INPUT, ORATYPE_VARCHAR2parChangeType = "F"Else' Automated BuildOraDatabase.Parameters.Add "PKG_VERSION", Request("v_ext"), ORAPARM_INPUT, ORATYPE_VARCHAR2End If' Access Control - Allow release change while release is in restrictive modecAlterReleaseWhileRestrictive = "N"If objAccessControl.IsActive("AlterReleaseContentsInRestrictiveMode") Then cAlterReleaseWhileRestrictive = "Y"OraDatabase.Parameters.Add "BUILD_TYPE", parBuildType, ORAPARM_INPUT, ORATYPE_CHAROraDatabase.Parameters.Add "ALTER_RELEASE", cAlterReleaseWhileRestrictive, ORAPARM_INPUT, ORATYPE_CHAROraDatabase.Parameters.Add "SET_TO_PV_ID", NNSetToPv_id, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "RTAG_ID", NNrtag_id, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "USER_ID", objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "enumISSUES_STATE_IMPORTED", enumISSUES_STATE_IMPORTED, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "RETPV_ID", 0, ORAPARM_OUTPUT,ORATYPE_NUMBERobjEH.TryORA ( OraSession )Set rsQry = OraDatabase.DbCreateDynaset("SELECT * FROM RELEASE_CONTENT WHERE RTAG_ID ="& Request("rtag_id") &" AND PV_ID = "& NNorig_pv_id &"", cint(0))If (NOT IsNull(rsQry("pkg_id"))) AND rsQry("pkg_state") = 6 ThenDim rsPv_idIf (SSnewver) <> "" ThenSet rsPv_id = OraDatabase.DbCreateDynaset("SELECT * FROM PACKAGE_VERSIONS WHERE PKG_VERSION ='"& SSnewver &"' AND PKG_ID = "& rsQry("pkg_id") &"", cint(0))retNEWpv_id = rsPv_id("pv_id")rsPv_id.Close()Set rsPv_id = nothingElseretNEWpv_id = NNSetToPv_idEnd IfIf NOT IsNull(retNewpv_id) ThenOraDatabase.ExecuteSQL _"BEGIN "&_" UPDATE RELEASE_CONTENT SET PV_ID ="& retNEWpv_id &" WHERE RTAG_ID ="& Request("rtag_id") &" AND PV_ID ="& parOLDpv_id &"; "&_"END;"ElseOraDatabase.ExecuteSQL _"BEGIN "&_" PK_PACKAGE.NEW_VERSION ( :ORIG_PV_ID, "&_" :PKG_VERSION,"&_" :BUILD_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;"retNEWpv_id = OraDatabase.Parameters("RETPV_ID").ValueEnd IfElseOraDatabase.ExecuteSQL _"BEGIN "&_" PK_PACKAGE.NEW_VERSION ( :ORIG_PV_ID, "&_" :PKG_VERSION,"&_" :BUILD_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;"retNEWpv_id = OraDatabase.Parameters("RETPV_ID").ValueEnd IfobjEH.CatchORA ( OraSession )If objEH.LastOraFailed = FALSE ThenCall UpdateChangeType (retNEWpv_id, parChangeType )Call UpdateReasonForVersion (retNEWpv_id, Request("FRreason"))End IfrsQry.Close()Set rsQry = nothingOraDatabase.Parameters.Remove "ORIG_PV_ID"OraDatabase.Parameters.Remove "ALTER_RELEASE"OraDatabase.Parameters.Remove "PKG_VERSION"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 = FalseDim objRegEx, objRegEx2Set objRegEx = New RegExpSet objRegEx2 = New RegExpobjRegEx.IgnoreCase = TrueobjRegEx.Pattern = "^[0-9]+\.[0-9]+\.[0-9]+\.[a-zA-Z0-9]+$"objRegEx2.Pattern = "\.(cots)|(tool)$"If Len(newVersion) <= 50 ThenIf objRegEx.Test( newVersion ) OR objRegEx2.Test( newVersion ) ThenSanityCheck = TrueEnd IfEnd IfIf parBuildType = "A" ThenSanityCheck = TrueEnd IfSet objRegEx = NothingSet objRegEx2 = NothingEnd Function'-----------------------------------------------------------------------------------' Seed the Database' Create proto package-version to be used later'Sub Seed_DB ( retPV_ID )Dim QueryStringOn Error Resume NextOraDatabase.Parameters.Add "retPV_ID", 0, ORAPARM_OUTPUT, ORATYPE_NUMBERQueryString = "BEGIN Seed_Package_Names_Versions ("&_" '" & parFRpkgName & "'"&_",'" & parFRnewver & "'" &_",:USER_ID" &_",:retPV_ID" &_",NULL" &_",'"& parBuildType & "'" &_",'"& parChangeType & "'" &_"); END;"OraDatabase.ExecuteSQL QueryStringretPV_ID = OraDatabase.Parameters("retPV_ID").ValueOraDatabase.Parameters.Remove "retPV_ID"End Sub'-----------------------------------------------------------------------------------' Add Package to a ReleaseSub AddPackage ( sPvId )Dim rsQry, AssocMASSOn Error Resume NextSet 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" )) ThenOraDatabase.Parameters.Add "PV_ID_LIST", sPvId, ORAPARM_OUTPUT, ORATYPE_VARCHAR2OraDatabase.ExecuteSQL "BEGIN PK_ENVIRONMENT.ADD_PACKAGE ( :PV_ID_LIST, :BASE_VIEW_ID, :RTAG_ID, :USER_ID ); END;"OraDatabase.Parameters.Remove "PV_ID_LIST"ElseErr.Raise 8, "Cannot ADD a CORE/MASS package into a MASS_REF Reference Release!"End IfEnd Sub'-----------------------------------------------------------------------------------Sub Add_Packages_To_View_Definition ( NNpkg_list )If OraDatabase.Parameters("PERSONAL_VIEW_ID").Value = "" Then Exit SubOraDatabase.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_CountDim versionToSanityCheck'Response.Write "<pre>------------<br>"'Dim Item'For Each Item In Request.Form' Response.Write "User Data: " &Item & ": " & Request.Form(Item) & "<br>"'Next'Response.Write "------------<br></pre>"'--- Process submission ---If ((parNewPackage <> "") AND parNewPackage) Then'' Creating a new package and its first version' Appears to work for others tooDim reResultDim 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)) ThenpkgFound = rsQry("pkg_id")End IfrsQry.CloseSet rsQry = Nothing'' Don't need to create the package' It will spring into existance if it does not exist'On Error Resume NextDim bAdded: bAdded = False'Response.Write "<pre>------------<br>"'Dim Item'For Each Item In Request.Form' Response.Write "User Data: " &Item & ": " & Request.Form(Item) & "<br>"'Next'Response.Write "------------<br></pre>"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.TryIf rsQry("official") = "N" OR rsQry("official") = "R" ThenOraSession.BeginTrans'---- SQL parameters ----OraDatabase.Parameters.Add "RTAG_ID", parRtag_id, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "USER_ID", objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "BASE_VIEW_ID", parBase_view_id, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.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 ThenCall AddPackage ( newPkgPv_id )If Err.Number = 0 ThenIf NOT IsNull(parPersonal_view_id) ThenCall Add_Packages_To_View_Definition ( newPkgPv_id )End IfEnd IfEnd IfOraDatabase.Parameters.Remove "RTAG_ID"OraDatabase.Parameters.Remove "USER_ID"OraDatabase.Parameters.Remove "BASE_VIEW_ID"OraDatabase.Parameters.Remove "PERSONAL_VIEW_ID"'---- Insert additional informationIf Err.Number = 0 ThenCall UpdateReasonForVersion (newPkgPv_id, Request("FRreason"))End If'---- Commit or Rollback the transactionIf Err.number <> 0 ThenOraSession.RollBackCall RaiseMsg ( enum_MSG_ERROR, Err.description )ElseOraSession.CommitTransbAdded = TrueEnd 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 addedResponse.Redirect("fixed_issues.asp?rtag_id="& parRtag_id & "&pv_id=" & newPkgPv_id )ElseErr.Raise 8, "Cannot ADD a package in a CLOSED or CCB Release Mode"End IfrsQry.CloseSet rsQry = nothingobjEH.CatchElseResponse.write "Some mandatory parameters are missing!. Need parNewPackage and parFRnewver" & "<br>" 'TODOResponse.write QSTR_AllEnd If' Not Creating a new packageElseIf (parOLDpv_id <> "") AND ( (parFRnewver <> "") OR (parSetToPv_id <> "") ) AND (parRtag_id <> "") Then' All mandatory parameters FOUNDIf ( (parSetToPv_id <> "") OR SanityCheck(parFRnewver) ) ThenRecord_Count = 0If parBuildType = "M" ThenQuery_string = " SELECT pv.pv_id, pv.is_patch, pv.dlocked"&_" FROM package_versions pv"&_" WHERE pv.pkg_version = '"& parFRnewver &"'"&_" AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id"&_" FROM package_versions origpv"&_" WHERE origpv.pv_id = "& parOLDpv_id &")"Set rsQry = OraDatabase.DbCreateDynaset(Query_String, cint(0))Record_Count = rsQry.RecordCountrsQry.Close()Set rsQry = NothingEnd IfIf Record_Count > 0 And parBuildType = "M" ThenCall RaiseMsg ( enum_MSG_PACKAGE_VERSION_EXISTS&"?rtag_id="& parRtag_id &"&pv_id="& parOLDpv_id &"", parFRnewver )ElseCall New_Version ( parFRnewver, parOLDpv_id, parSetToPv_id, parRtag_id, parSync_rtags, NEWpv_id )If objEH.Finally ThenResponse.Redirect("dependencies.asp?rtag_id="& parRtag_id &"&pv_id="& NEWpv_id )End IfEnd IfElseCall RaiseMsg( enum_MSG_PACKAGE_VERSION_INVALID&"?rtag_id="& parRtag_id &"&pv_id="& parOLDpv_id &"", parFRnewver )End IfElseResponse.write "Some mandatory parameters are missing!" & "<br>" 'TODOResponse.write QSTR_AllEnd If ' If (parOLDpv_id <> "") AND ( (parFRnewver <> "") OR (parSetToPv_id <> "") ) AND (parRtag_id <> "") Then%><!-- DESTRUCTOR -------><!--#include file="common/destructor.asp"-->