%
'=====================================================
' _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
'============================================================
%>