<% '===================================================== ' _form_new_version_page.asp ' ' Performs: New Package - First Version ' New Version ' Rename Version (in an Iframe) '===================================================== %> <% '------------ Variable Definition ------------- Dim parPv_id Dim rsLocRel Dim parPage_title Dim objPkgInfo Dim rsTemp2 Dim rsLatest Dim aVersions Dim lastRow, i Dim objSortHelper Dim newPackage Dim majorState Dim minorState Dim patchState Dim parBase_view_id Dim verNumber Dim parPkgName Dim parRename Dim rFile Dim disableBuildType Dim bCanRenamePackage Dim parPkgId Dim bNewerVersions Dim sNewerVersionsOptions '------------ Constants Declaration ----------- '----------------------------------------------------------------------------------------------------------------------------- Sub GetPackageInfo( nPvId, outPkgInfo ) Dim rsTemp, Query_String If (IsEmpty(nPvId) OR newPackage> 0) Then Exit Sub Query_String = _ " SELECT pv.pv_id, pkg.pkg_id, pkg.pkg_name, pv.pkg_version, pv.v_ext, pv.change_type, pv.build_type, pv.is_patch"&_ " FROM packages pkg, package_versions pv"&_ " WHERE pkg.pkg_id = pv.pkg_id AND pv.pv_id ="& nPvId Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then outPkgInfo.Item("pv_id") = rsTemp.Fields("pv_id") outPkgInfo.Item("pkg_id") = rsTemp.Fields("pkg_id") outPkgInfo.Item("pkg_name") = rsTemp.Fields("pkg_name") outPkgInfo.Item("pkg_version") = rsTemp.Fields("pkg_version") outPkgInfo.Item("change_type") = rsTemp.Fields("change_type") outPkgInfo.Item("build_type") = rsTemp.Fields("build_type") If rsTemp.Fields("is_patch") = "Y" Then outPkgInfo.Item("is_patch") = "true" Else outPkgInfo.Item("is_patch") = "false" End If if rsTemp.Fields("v_ext") <> "" Then outPkgInfo.Item("v_ext") = rsTemp.Fields("v_ext") Else outPkgInfo.Item("v_ext") = "" End If End If rsTemp.Close Set rsTemp = nothing End Sub '----------------------------------------------------------------------------------------------------------------------------- Function Get_Latest_All_Ext ( NNpkg_id, nPv_id ) Get_Latest_All_Ext = _ " SELECT pv.pkg_version, pv.dlocked,"&_ " DECODE ( pv.pv_id, "& nPv_id &", 'selected', NULL ) AS selected"&_ " FROM PACKAGES pkg, package_versions pv"&_ " WHERE pkg.pkg_id = pv.pkg_id AND pkg.pkg_id = "& NNpkg_id End Function '----------------------------------------------------------------------------------------------------------------------------- ' If there is exactly one version of this package, then it can be renamed ' Return 0 or 1 ' Function CanRenamePackage(NNpkg_id) Dim rsTemp, Query_String, count CanRenamePackage = 0 Query_String = "select count(*) as count from package_versions where pkg_id=" & NNpkg_id Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then count = rsTemp.Fields("count") If count = 1 Then CanRenamePackage = 1 End If End If rsTemp.Close Set rsTemp = nothing End Function '------------------------------------------------------------------------------------------------------------- ' Returns TRUE if the specified version has a COTS extension ' Really determines if the extension has to be strict Major.Minor.PatchBuild ' or is allowed to be more relaxes. As in COTS and TOOL packages. ' ' Read from the database to determine type ' If we cannot determine the project suffix then assume the worst ' Function HasCotsExtension(aExt) Dim rsQry, Query_String HasCotsExtension = FALSE if aExt <> "" Then Query_String = "SELECT EXT_NAME FROM PROJECT_EXTENTIONS pe WHERE " &_ "pe.IS_COTS='Y' AND pe.EXT_NAME='" & LCase(aExt) & "'" Set rsQry = OraDatabase.DbCreateDynaset( Query_String, ORADYN_DEFAULT ) If ((NOT rsQry.BOF) AND (NOT rsQry.EOF)) Then HasCotsExtension = TRUE End If rsQry.Close Else HasCotsExtension = TRUE end If Set rsQry = Nothing End Function '------------------------------------------------------------------------------------------------------------- 'Returns TRUE if the specified version has a patch-build number. Function HasPatchBuildNumber(aversion) 'test for a version with a patch build number, ie a dot and at least 4 digits before the extenstion. Dim re: Set re = New RegExp re.Pattern = "\.\d{4,}\.[^\.]+$" HasPatchBuildNumber = re.Test(aversion) Set re = Nothing End Function '------------------------------------------------------------------------------------------------------------- 'Returns TRUE if the specified version has a well formed version number Function HasWellFormedVersion(aversion) 'If a package has a major.minor.patch-build number then it is well formed Dim re: Set re = New RegExp re.Pattern = "^\d+\.\d+\.\d{4,}\.[^\.]+$" HasWellFormedVersion = re.Test(aversion) Set re = Nothing End Function '----------------------------------------------------------------------------------------------------------------------------- Sub Get_All_Licences ( NNnewlicence_id ) Dim rsTemp, Query_String, selected Response.write "" Query_String = _ " SELECT licence, name"&_ " FROM licences "&_ " ORDER BY name ASC" Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) selected = "" If NNnewlicence_id = Cstr( rsTemp.Fields("name")) Then selected = " selected" End If Response.write "" rsTemp.MoveNext WEnd rsTemp.Close Set rsTemp = nothing End Sub '----------------------------------------------------------------------------------------------------------------------------- Sub Get_All_Base_Views ( NNnewgroup_id ) Dim rsTemp, Query_String Query_String = _ " SELECT vi.view_id, vi.view_name "&_ " FROM views vi "&_ " WHERE UPPER(vi.base_view) = 'Y'"&_ " ORDER BY vi.view_name ASC" Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) If NNnewgroup_id = Cstr( rsTemp.Fields("view_id")) Then Response.write "" Else Response.write "" End If rsTemp.MoveNext WEnd rsTemp.Close Set rsTemp = nothing End Sub '----------------------------------------------------------------------------------------------------------------------------- Sub Get_All_Personal_Views ( NNuser_id ) Dim rsTemp, Query_String If NNuser_id = "" Then Exit Sub Query_String = _ " SELECT vi.view_id, vi.view_name"&_ " FROM view_settings vs,"&_ " views vi"&_ " WHERE vs.view_id = vi.view_id"&_ " AND vs.user_id = vi.owner_id "&_ " AND vs.user_id = "& NNuser_id &_ " AND vi.base_view = 'N'"&_ " ORDER BY UPPER(vi.view_name)" Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Response.write "" rsTemp.MoveNext WEnd rsTemp.Close Set rsTemp = nothing End Sub '----------------------------------------------------------------------------------------------------------------------------- Sub Get_Newer_Versions() Dim rsTemp, Query_String, el bNewerVersions = False If isNULL(parPv_id) OR parRename Then Exit Sub Query_String = _ "SELECT" &_ " pv.pv_id," &_ " pv.pkg_version," &_ " pv.dlocked," &_ " TO_CHAR( pv.created_stamp,'DD-Mon-YYYY HH24:MI:SS' ) AS created_stamp" &_ " FROM" &_ " package_versions pv," &_ " package_versions pvc" &_ " WHERE" &_ " pv.created_stamp> pvc.created_stamp" &_ " AND pv.pkg_id = pvc.pkg_id" &_ " AND NVL(pvc.v_ext, 'isNULL') = NVL(pv.v_ext, 'isNULL')" &_ " AND pv.build_type != 'Y'" &_ " AND pvc.pv_id = " & parPv_id &_ " ORDER by pv.created_stamp desc" Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0)) sNewerVersionsOptions = "" While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) bNewerVersions = True el = IIF(rsTemp("dlocked") = "Y", "R ", "    ") & rsTemp("pkg_version") & "  " & rsTemp("created_stamp") sNewerVersionsOptions = sNewerVersionsOptions & "" rsTemp.MoveNext WEnd rsTemp.Close Set rsTemp = nothing End Sub '----------------------------------------------------------------------------------------------------------------------------- %> <% '===================== MAIN LINE ============================ Dim bDisableAuto, bPatchOnly, bIsCots, bIsAuto '------------ Variable Init ------------------- parPv_id = QStrPar("pv_id") parBase_view_id = Request("base_view_id") parPkgName = QStrPar("pkgName") parRename = QStrPar("renameMode") rFile = QStrPar("rFile") bCanRenamePackage = 0 parPkgId = 0 If IsEmpty(rFile) OR rFile = "" Then rFile="dependencies.asp" End If newPackage = 0 parPage_title = "NEW VERSION" If ( parPkgName <> "" OR IsEmpty(parPv_id) ) Then newPackage = 1 parPv_id = NULL End if majorState = "" minorState = "" patchState = "checked" ' The build_type will be displayed but not enabled unless the user ' is allowed to created manually built packages disableBuildType = FALSE If parRename <> "" OR NOT canActionControlInProject("ApproveForManualBuild") Then disableBuildType = TRUE End If Set objPkgInfo = CreateObject("Scripting.Dictionary") If parRename <> "" Then If parRename <> 2 Then parPage_title = "RENAME VERSION" Else parPage_title = "VERSION CHANGE TYPE" End If ' Package already exists Call GetPackageInfo( parPv_id, objPkgInfo ) parPkgName = objPkgInfo.Item("pkg_name") If parRename <> 2 Then parPkgId = objPkgInfo.Item("pkg_id") bCanRenamePackage = CanRenamePackage(parPkgId) End If ' Extract version number without extension verNumber = objPkgInfo.Item("pkg_version") verNumber = Mid( verNumber,1, Len(verNumber) - Len(objPkgInfo.Item("v_ext"))) 'Determine current version mechanism: auto, manual bIsAuto = objPkgInfo.Item("change_type") <> "F" bIsCots = HasCotsExtension(objPkgInfo.Item("v_ext")) 'Disable the "Auto" build option if the package is a COTS package and the version doesn't have a patch-build number. bDisableAuto = bIsCots and not HasPatchBuildNumber(objPkgInfo.Item("pkg_version")) and not bIsAuto 'Enable only the "Patch Change" option if the package is a COTS package and the version has a patch-build number. bPatchOnly = bIsCots and not HasWellFormedVersion(objPkgInfo.Item("pkg_version")) and HasPatchBuildNumber(objPkgInfo.Item("pkg_version")) ' Use existing change type and build type If bDisableAuto Then bIsAuto = False End If majorState = "" minorState = "" patchState = "" If objPkgInfo.Item("change_type") = "M" Then majorState = "checked" ElseIf objPkgInfo.Item("change_type") = "N" Then minorState = "checked" Else patchState = "checked" End If ElseIf NOT (newPackage> 0 ) Then ' Package already exists ' Creating a new Version of an existing Package ' Set build_type to Auto - New Versions start in Auto Call GetPackageInfo( parPv_id, objPkgInfo ) objPkgInfo.Item("build_type") = "A" parPkgName = objPkgInfo.Item("pkg_name") ' Extract version number without extension verNumber = objPkgInfo.Item("pkg_version") verNumber = Mid( verNumber,1, Len(verNumber) - Len(objPkgInfo.Item("v_ext"))) bIsCots = HasCotsExtension(objPkgInfo.Item("v_ext")) 'Disable the "Auto" build option if the package is a COTS package and the version doesn't have a patch-build number. bDisableAuto = bIsCots and not HasPatchBuildNumber(objPkgInfo.Item("pkg_version")) 'Enable only the "Patch Change" option if the package is a COTS package and the version has a patch-build number. bPatchOnly = bIsCots and not HasWellFormedVersion(objPkgInfo.Item("pkg_version")) and HasPatchBuildNumber(objPkgInfo.Item("pkg_version")) 'if "Auto" build option is disabled then select the Manual option bIsAuto = NOT bDisableAuto If bDisableAuto Then objPkgInfo.Item("build_type") = "M" End If Else ' If New Package and First version parPage_title = "NEW PACKAGE and FIRST VERSION" bIsCots = FALSE bDisableAuto = FALSE bPatchOnly = FALSE bIsAuto = TRUE majorState = "checked" minorState = "" patchState = "" verNumber = "1.0.0000" objPkgInfo.Item("is_patch") = "false" End If '============================================================ %>
<%If NOT bInIframe Then %> <%Else%>
<%=parPage_title%>
<%End If%>
<% if newPackage> 0 OR bCanRenamePackage> 0 Then %> <% Else %> <% End If %> <% if newPackage> 0 Then %> <%If QStrPar("Pview") <> "disable" Then%> <%End If%> <% End If %> <% Dim flagAuto, flagMan if bDisableAuto Then flagAuto = "disabled" flagMan = "checked" Else If bIsAuto Then flagAuto = "checked" flagMan = "" Else flagAuto = "" flagMan = "checked" End if End if %> <%If NOT parRename <> "" Then%> <%End If%> <%If NOT ((newPackage> 0) OR bCanRenamePackage> 0) Then %> <%End If%>
Package Name <%=parPkgName%>
To Base View
To Personal View
Software Licence<%=Quick_Help("Licence")%>
Build Type<%=Quick_Help("BuildType")%> Auto Manual
Version Number Assignment<%=Quick_Help("ChangeType")%> onclick="changeToAutoVersionNumberAssignment();"> Auto onclick="changeToManualVersionNumberAssignment();"> Manual
New Version Number <%If NOT newPackage> 0 Then%>  Existing Versions<%=Quick_Help("Existing")%> <%End If%>
Version Extension
Reason For This Version
Change Type
<%If bPatchOnly Then majorState = "disabled" %> > Major Change   A major number change indicates the contract of the package has changed in a non-backwardly compatible manner.

<%If bPatchOnly Then minorState = "disabled" %> > Minor Change   A minor number change indicates the contract of the package has changed in a backwardly compatible manner.

> Patch Change   A patch number change indicates the package has changed internally.
<%If not isNull(parPv_id) Then Get_Newer_Versions If bNewerVersions Then%>
Newer versions of this package exist. Considerations:
  • Use the latest version instead
  • Branch the current version
  • Base the 'new' version on the latest version
<%End If End If%>
ERROR: Page Java script did not load