%@LANGUAGE="VBSCRIPT"%> <% '===================================================== ' ' _wform_new_patch.asp ' ' This page needs some work ' It does some nasty stuff ' It accesses packages in dpkg_archive by mapping a drive letter ' ' Ideally it should not access dpkg_archive at all ' If it does it should use MSXML2 and access it via http ' In this manner it won't need a login password ' '===================================================== %> <% Option explicit Response.Expires = 0 ' always load the page, dont store 'To enable the script timeout to 10 mins Server.ScriptTimeout=600 %> <% '===================================================== ' New Patch '===================================================== %> <% '------------ ACCESS CONTROL ------------------ %> <% '------------ Variable Definition ------------- Dim parPv_id Dim pkg_name Dim view_id Dim patch_version Dim rsQry Dim patch_number Dim pos,pos2 Dim newPatch_version Dim fs, f, i Dim objNetwork, strDriveLetter, strRemotePath, strProfile, CheckDrive Dim pkgCredentails, strUser, strPassword Dim skip, AlreadyConnected Dim newPatchId Dim ShowAutoFill '------------ Constants Declaration ----------- '------------ Variable Init ------------------- parPv_id = QStrPar("pv_id") strDriveLetter = "R:" pkgCredentails = split(Application("PKGARCHIVE_CREDENTIALS"),":") strUser = pkgCredentails(0) strPassword = pkgCredentails(1) strRemotePath = "\\" & archive_server & "\dpkg_archive" strProfile = "False" ' means do not store in profile leave as false. AlreadyConnected = False ShowAutoFill = False '---------------------------------------------- %> <% '-------------------------------------------------------------------------------------------------- Function SearchAndReplace(s, Str1, Str2) Dim pos s = s & "" 'Fix Null pos = InStr(s, Str1) If pos > 0 Then s = Mid(s, 1, pos - 1) & Str2 & Mid(s, pos + Len(Str1)) End If SearchAndReplace = s End Function '-------------------------------------------------------------------------------------------------- Sub Auto_Add_Patch (NNpv_id, patchId, sspatchversion, newPatchId) On Error Resume Next OraDatabase.Parameters.Add "PATCH_VERSION", SSpatchversion, ORAPARM_INPUT, ORATYPE_VARCHAR2 OraDatabase.Parameters.Add "PV_ID", NNpv_id, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "PATCH_ID_LIST", patchId, ORAPARM_INPUT, ORATYPE_VARCHAR2 OraDatabase.Parameters.Add "USER_ID", objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "RTAG_ID", Request("rtag_id"), ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "VIEW_ID", view_id, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "RET_PATCH_ID", 0, ORAPARM_OUTPUT, ORATYPE_NUMBER objEH.TryORA ( OraSession ) OraDatabase.ExecuteSQL _ "BEGIN "&_ " PK_PACKAGE.NEW_PATCH( :PATCH_VERSION, :PV_ID, :PATCH_ID_LIST, :USER_ID, :RET_PATCH_ID ); "&_ "END; " '" PK_ENVIRONMENT.ADD_PACKAGE ( :RET_PATCH_ID, :VIEW_ID, :RTAG_ID, :USER_ID ); "&_ objEH.CatchORA ( OraSession ) newPatchId = OraDatabase.Parameters("RET_PATCH_ID").Value OraDatabase.Parameters.Remove "PATCH_VERSION" OraDatabase.Parameters.Remove "PV_ID" OraDatabase.Parameters.Remove "PATCH_ID_LIST" OraDatabase.Parameters.Remove "USER_ID" OraDatabase.Parameters.Remove "RTAG_ID" OraDatabase.Parameters.Remove "VIEW_ID" OraDatabase.Parameters.Remove "RET_PATCH_ID" End Sub '-------------------------------------------------------------------------------------------------- Sub AutoWrite_Reason (patchId, newPatchId) On Error Resume Next Dim rsTemp, filename, textdata, pos1, pos2, rsQry Set rsTemp = OraDatabase.DbCreateDynaset("SELECT * FROM PACKAGE_VERSIONS PV, PACKAGES PKG WHERE PKG.PKG_ID = PV.PKG_ID AND PV.PV_ID ="&patchId, ORADYN_DEFAULT) Set fs=Server.CreateObject("Scripting.FileSystemObject") 'Rupesh Testing Start Set objNetwork = CreateObject("WScript.Network") Set CheckDrive = objNetwork.EnumNetworkDrives() For i = 0 To CheckDrive.Count - 1 Step 2 If CheckDrive.Item(i) = strDriveLetter Then AlreadyConnected = True Next If AlreadyConnected = True then objNetwork.RemoveNetworkDrive strDriveLetter End If objNetwork.MapNetworkDrive strDriveLetter, strRemotePath, strProfile, strUser, strPassword filename = Mid(rsTemp("v_ext"), 2, len(rsTemp("v_ext"))) + "." filename = filename + rsTemp("pkg_name") + "." filename = filename + Mid(rsTemp("pkg_version"), 1, len(rsTemp("pkg_version")) - 4) filename = filename + ".sh" Set f=fs.OpenTextFile(""&strDriveLetter&"\"&rsTemp("pkg_name")&"\"&rsTemp("pkg_version")&"\scripts\"&filename&"", 1) textdata = f.ReadAll pos1 = Instr(textdata, "PATCH_ENV1=") pos2 = Instr(textdata, "PATCH_DATE") rsTemp.Close() Set rsTemp = nothing Set rsTemp = OraDatabase.DbCreateDynaset("SELECT * FROM PACKAGE_VERSIONS WHERE PV_ID ="&newPatchId, ORADYN_DEFAULT ) rsTemp.Edit rsTemp.Fields("COMMENTS").Value = "Schema Patch - "&Mid(textdata, pos1+11, pos2-(pos1+11)) rsTemp.Fields("PV_OVERVIEW").Value = rsTemp.Fields("PV_DESCRIPTION").Value rsTemp.Fields("IS_BUILD_ENV_REQUIRED").Value = "N" Set rsQry = OraDatabase.DbCreateDynaset("SELECT * FROM PACKAGES WHERE PKG_ID ="&rsTemp("pkg_id"), ORADYN_DEFAULT ) rsTemp.Fields("PKG_LABEL").Value = UCase( Replace(rsTemp("V_EXT"), ".", "") ) &"_"& UCase(rsQry("pkg_name")) &"_R_"& Format_Version( rsTemp("pkg_version"), rsTemp("V_EXT") ) rsTemp.Update f.Close() objNetwork.RemoveNetworkDrive strDriveLetter Set f = Nothing Set fs = Nothing Set objNetwork= Nothing rsTemp.Close() Set rsTemp = Nothing rsQry.Close() Set rsQry = Nothing End Sub '-------------------------------------------------------------------------------------------------- Sub Add_Patch ( NNpv_id, SSpatchversion ) On Error Resume Next OraDatabase.Parameters.Add "PATCH_VERSION", SSpatchversion, ORAPARM_INPUT, ORATYPE_VARCHAR2 OraDatabase.Parameters.Add "PV_ID", NNpv_id, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "PATCH_ID_LIST", Request("patch_id_list"),ORAPARM_INPUT, ORATYPE_VARCHAR2 OraDatabase.Parameters.Add "USER_ID", objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "RTAG_ID", Request("rtag_id"), ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "VIEW_ID", view_id, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "RET_PATCH_ID", 0, ORAPARM_OUTPUT,ORATYPE_NUMBER objEH.TryORA ( OraSession ) OraDatabase.ExecuteSQL _ "BEGIN "&_ " PK_PACKAGE.NEW_PATCH( :PATCH_VERSION, :PV_ID, :PATCH_ID_LIST, :USER_ID, :RET_PATCH_ID ); "&_ "END; " '" PK_ENVIRONMENT.ADD_PACKAGE ( :RET_PATCH_ID, :VIEW_ID, :RTAG_ID, :USER_ID ); "&_ objEH.CatchORA ( OraSession ) OraDatabase.Parameters.Remove "PATCH_VERSION" OraDatabase.Parameters.Remove "PV_ID" OraDatabase.Parameters.Remove "PATCH_ID_LIST" OraDatabase.Parameters.Remove "USER_ID" OraDatabase.Parameters.Remove "RTAG_ID" OraDatabase.Parameters.Remove "VIEW_ID" OraDatabase.Parameters.Remove "RET_PATCH_ID" End Sub '----------------------------------------------------------------------------------------- Sub Auto_Patch (NNpv_id, SSpatchversions) On Error Resume Next Dim posComma, posUnderscore, patchId, sspatchversion, value If IsNull(SSpatchversions) OR SSpatchversions = "" Then Call RaiseMsg(enum_WMSG_ERROR, "Must select at least one Auto Package to perform AutoFill") Else value = SSpatchversions posComma = InStr(SSpatchversions, ",") While posComma <> 0 value = Mid(SSpatchversions, 1, posComma-1) posUnderscore = Instr(value, "_") If (posUnderscore > 1) Then patchId = Mid(value, 1, posUnderscore - 1) sspatchversion = Mid(value, posUnderscore + 1, posComma-1) Call Auto_Add_Patch (NNpv_id, patchId, sspatchversion, newPatchId) Call AutoWrite_Reason (patchId, newPatchId) Call Insert_NOT_DONE_Unit_Test (newPatchId) End If SSpatchversions = Mid(SSpatchversions, posComma + 1, Len(SSpatchversions)) posComma = InStr(SSpatchversions, ",") Wend If posComma = 0 Then posUnderscore = Instr(SSpatchversions, "_") If posUnderscore > 1 Then patchId = Mid(SSpatchversions, 1, posUnderscore - 1) sspatchversion = Mid(SSpatchversions, posUnderscore + 1) Call Auto_Add_Patch (NNpv_id, patchId, sspatchversion, newPatchId) Call AutoWrite_Reason(patchId, newPatchId) Call Insert_NOT_DONE_Unit_Test (newPatchId) End If End if End if End Sub '----------------------------------------------------------------------------------------- Sub Get_Parent_Details ( NNpv_id, nRtagId, outPkg_name, outDefPatchVersion, outViewId ) Dim rsTemp, Query_String, tempVersion, V_EXT OraDatabase.Parameters.Add "PV_ID", NNpv_id, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "RTAG_ID", nRtagId, ORAPARM_INPUT, ORATYPE_NUMBER Query_String = _ " SELECT pkg.pkg_name, pv.pkg_version, pv.V_EXT, rc.BASE_VIEW_ID"&_ " FROM package_versions pv, "&_ " packages pkg,"&_ " RELEASE_CONTENT rc"&_ " WHERE pv.pkg_id = pkg.pkg_id "&_ " AND pv.pv_id = :PV_ID"&_ " AND rc.RTAG_ID = :RTAG_ID"&_ " AND rc.PV_ID = pv.PV_ID" Set rsTemp = OraDatabase.CreateDynaset( Query_String, cint(0)) OraDatabase.Parameters.Remove "PV_ID" OraDatabase.Parameters.Remove "RTAG_ID" 'update fields If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then outPkg_name = rsTemp("pkg_name") tempVersion = rsTemp("pkg_version") outViewId = rsTemp("base_view_id") V_EXT = rsTemp("V_EXT") End If rsTemp.Close() Set rsTemp = nothing If IsNull(V_EXT) Then V_EXT = "" outDefPatchVersion = Replace( tempVersion, V_EXT, "" ) &".pXXX"& V_EXT End Sub '------------------------------------------------------------------------------------------------ Sub Insert_NOT_DONE_Unit_Test (nPv_id) ' IN PARAMETERS OraDatabase.Parameters.Add "PV_ID", nPv_id, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "TEST_TYPE_ID", enumTEST_TYPE_NOT_DONE, ORAPARM_INPUT, ORATYPE_VARCHAR2 OraDatabase.Parameters.Add "TEST_SUMMARY", NULL, ORAPARM_INPUT, ORATYPE_VARCHAR2 OraDatabase.Parameters.Add "NUMOF_TEST", NULL, ORAPARM_INPUT, ORATYPE_CHAR OraDatabase.Parameters.Add "DPKG_PATH", NULL, ORAPARM_INPUT, ORATYPE_VARCHAR2 OraDatabase.Parameters.Add "RESULTS", NULL, ORAPARM_INPUT, ORATYPE_VARCHAR2 OraDatabase.Parameters.Add "COMPLETION_DATE", EuroDate ( Date ), ORAPARM_INPUT, ORATYPE_VARCHAR2 OraDatabase.Parameters.Add "COMPLETED_BY", objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "enumTEST_TYPE_AUTOMATIC", NULL, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "enumTEST_TYPE_NOT_DONE", NULL, ORAPARM_INPUT, ORATYPE_NUMBER ' OUT PARAMETERS OraDatabase.Parameters.Add "FILENAME", NULL, ORAPARM_OUTPUT, ORATYPE_VARCHAR2 objEH.ErrorRedirect = FALSE objEH.TryORA ( OraSession ) On Error Resume Next OraDatabase.ExecuteSQL _ "BEGIN New_Unit_Test ( :PV_ID,"&_ " :TEST_TYPE_ID,"&_ " :TEST_SUMMARY,"&_ " :NUMOF_TEST,"&_ " :DPKG_PATH,"&_ " :RESULTS,"&_ " :COMPLETION_DATE,"&_ " :COMPLETED_BY,"&_ " :enumTEST_TYPE_AUTOMATIC, "&_ " :enumTEST_TYPE_NOT_DONE, "&_ " :FILENAME "&_ " ); END;" objEH.CatchORA ( OraSession ) OraDatabase.Parameters.Remove "PV_ID" OraDatabase.Parameters.Remove "TEST_TYPE_ID" OraDatabase.Parameters.Remove "TEST_SUMMARY" OraDatabase.Parameters.Remove "NUMOF_TEST" OraDatabase.Parameters.Remove "DPKG_PATH" OraDatabase.Parameters.Remove "RESULTS" OraDatabase.Parameters.Remove "COMPLETION_DATE" OraDatabase.Parameters.Remove "COMPLETED_BY" OraDatabase.Parameters.Remove "enumTEST_TYPE_AUTOMATIC" OraDatabase.Parameters.Remove "enumTEST_TYPE_NOT_DONE" OraDatabase.Parameters.Remove "FILENAME" End Sub '------------------------------------------------------------------------------------------------ %> <% 'Process submition Call Get_Parent_Details ( Request("pv_id"), Request("rtag_id"), pkg_name, patch_version, view_id ) If CBool(QStrPar("action")) AND objAccessControl.UserLogedIn Then If Request("btn") = "AutoFill" Then Call Auto_Patch (parPv_id, Request("auto_patch_id_list") ) Else Call Add_Patch ( parPv_id, Request("FRversion") ) End If If objEH.Finally Then Call OpenInParentWindow ( "patches.asp?pv_id="& parPv_id &"&rtag_id="& parRtag_id ) Call Destroy_All_Objects Response.End End If End If %>