%@LANGUAGE="VBSCRIPT"%>
<%
Option explicit
Response.Expires = 0 ' always load the page, dont store
%>
<%
'=====================================================
' Import Issues
'=====================================================
%>
<%
' Set rfile parameter. This is a return page after Login
Call objPMod.StoreParameter ( "rfile", "fixed_issues.asp" )
'------------ ACCESS CONTROL ------------------
%>
<%
'------------ Variable Definition -------------
Dim parPv_id
Dim parFRiss_db
Dim parFRiss_id
Dim parFRiss_num
Dim rsCQ
Dim rspPage ' current page number for multiple page results
Dim rspTotal ' total number of records
Dim rspCount ' Record counter
Dim rspTotalPages ' Total number of pages required to display results
Dim imported
Dim retVal
Dim rsCQTemp
Dim SQLstr
Dim parPackage
Dim parProject
Dim parProduct
Dim parSkipOpen
Dim disabled
Dim IsOptionUsed
Dim parCategMain
Dim parCategMinor
Dim parIStates
Dim parTitle
Dim parDoQuery
Dim oIStates
Dim checked
'------------ Constants Declaration -----------
Const rspMax = 100 ' maximum number of records displayed
Const LENUM_ALL = "ALL"
Const LCONST_STAR = "*"
'------------ Variable Init -------------------
parPv_id = Request("pv_id")
parRtag_id = Request("rtag_id")
rspPage = Request("rpg")
parFRiss_db = Request("FRiss_db")
parFRiss_id = Request("FRiss_id")
parFRiss_num = Request("FRiss_num")
parPackage = Request("package")
parProject = Request("project")
parProduct = Request("product")
parCategMain = Request("categmain")
parCategMinor = Request("categminor")
parSkipOpen = Request("skip_open")
parIStates = Request("istates")
parTitle = Request("title")
parDoQuery = Request("doQuery")
Set rsCQ = Server.CreateObject("ADODB.Recordset")
imported = FALSE
IsOptionUsed = FALSE
'-- CONDITIONS --------------------------------
If rspPage = "" Then rspPage = 1
If ( Request("btn") = "Filter" ) OR ( Request("btn") = "Find" ) Then rspPage = 1
If (parFRiss_num = "") Then parFRiss_num = LENUM_ALL
If (parTitle = "") Then parTitle = LCONST_STAR ' Default
If parFRiss_db = "" Then parFRiss_db = enumCLEARQUEST_DEVI_ID ' Default
If CInt(parFRiss_db) = enumCLEARQUEST_DEVI_ID Then
If (parPackage <> "") OR (parProject <> "") OR (parProduct <> "") OR (parTitle <> LCONST_STAR) Then IsOptionUsed = TRUE
Else
If (parCategMain <> "") OR (parCategMinor <> "") Then IsOptionUsed = TRUE
End If
If (parDoQuery = "") Then parDoQuery = "0"
' Get DEVI issue states checked
Set oIStates = GetIStates()
'----------------------------------------------
'Response.write "parPackage="& parPackage &", parProject="& parProject &", parProduct="& parProduct &", parSkipOpen="& parSkipOpen &"
"
'Response.write "parPv_id="& parPv_id &", parRtag_id="& parRtag_id &", rspPage="& rspPage &", parFRiss_db="& parFRiss_db &", parFRiss_id="& parFRiss_id &", parFRiss_num="& parFRiss_num
'Response.write "parIStates="& parIStates &", parSkipOpen="& parSkipOpen
%>
<%
'------------------------------------------------------------------------------------------------------------------------------------
Function GetIStates()
Dim IStates, aStates, stateId
Set IStates = CreateObject("Scripting.Dictionary")
If parIStates = "" Then
IStates.Item ("ALL") = "checked"
Else
aStates = Split( Replace( parIStates, " ", "" ), ",")
For Each stateId In aStates
IStates.Item (CStr(stateId)) = "checked"
Next
End If
Set GetIStates = IStates
End Function
'------------------------------------------------------------------------------------------------------------------------------------
Function Get_Issues ( NNiss_db, NNiss_num, NNrecordCount, OOrsCQ )
Dim SQLstr, issARR, iss_num, col_name, Title
If CInt(NNiss_db) = enumCLEARQUEST_DEVI_ID Then
SQLstr = _
" SELECT si.dbid AS iss_id, si.new_num AS iss_num, si.headline AS summary, sd.NAME AS state"&_
" FROM CQ_DEVI.admin.software_issue si,"&_
" CQ_DEVI.admin.STATEDEF sd"&_
" WHERE si.STATE = sd.ID "
End If
'-- User filter --
If (CInt(NNiss_db) = enumCLEARQUEST_DEVI_ID) Then
' Add package Filter
If (parPackage <> "") Then
SQLstr = SQLstr &" AND si.package_ref = '"& Replace( parPackage, "'","''" ) &"'"
End If
' Add project Filter
If (parProject <> "") Then
SQLstr = SQLstr &" AND si.project = '"& Replace( parProject, "'","''" ) &"'"
End If
' Add product Filter
If (parProduct <> "") Then
SQLstr = SQLstr &" AND si.product = '"& Replace( parProduct, "'","''" ) &"'"
End If
' Add Issue State Filter
If (parIStates <> "") Then
SQLstr = SQLstr &" AND sd.id IN ("& parIStates &")"
End If
' Add Title keyword search
If ( parTitle <> LCONST_STAR ) Then
Title = Replace( parTitle, "'", "''" )
Title = Replace( Title, "*", "%" )
SQLstr = SQLstr &" AND si.headline LIKE ( '"& Title &"' )"
End If
End If
'-- Keyword search --
If ( NNiss_num <> LENUM_ALL ) Then
issARR = Split( Replace( NNiss_num, " ", ""), "," )
col_name = "new_num"
SQLstr = SQLstr & " AND ( "
For Each iss_num IN issARR
SQLstr = SQLstr &" ("& col_name &" LIKE '%"& iss_num &"%') OR"
Next
SQLstr = Left( SQLstr, Len(SQLstr) - 2 ) ' Remove last 'OR'
SQLstr = SQLstr & " ) "
End If
'-- Get record count ---
NNrecordCount = Get_Record_Count( SQLstr )
'-- Order by --
If CInt(NNiss_db) = enumCLEARQUEST_DEVI_ID Then
SQLstr = SQLstr &" ORDER BY si.submit_date DESC"
End If
'Response.write SQLstr
OOrsCQ.ActiveConnection = CQ_conn
OOrsCQ.Source = SQLstr
OOrsCQ.CursorType = 0
OOrsCQ.CursorLocation = 2
OOrsCQ.LockType = 3
On Error Resume Next
OOrsCQ.Open()
Get_Issues = Err.Number
End Function
'------------------------------------------------------------------------------------------------------------------------------------
Function Get_Record_Count ( SSsql )
Dim rsTemp
Set rsTemp = Server.CreateObject("ADODB.Recordset")
rsTemp.ActiveConnection = CQ_conn
rsTemp.Source = _
" SELECT COUNT(*) as record_count "&_
" FROM ("& SSsql &") ct"
rsTemp.CursorType = 0
rsTemp.CursorLocation = 2
rsTemp.LockType = 3
rsTemp.Open()
If (NOT rsTemp.BOF) AND (NOT rsTemp.EOF) Then
Get_Record_Count = rsTemp("record_count")
Else
Get_Record_Count = 0
End If
rsTemp.Close
Set rsTemp = nothing
End Function
'------------------------------------------------------------------------------------------------------------------------------------
Sub Get_CQ_Issues_States ( sIssIdList, nIssDB, outObjCQissState )
Dim rsTemp, SQLstr
Set rsTemp = Server.CreateObject("ADODB.Recordset")
rsTemp.ActiveConnection = CQ_conn
If CInt(nIssDB) = enumCLEARQUEST_DEVI_ID Then
SQLstr = _
" SELECT si.dbid, sd.name AS state_name, si.state AS state_id"&_
" FROM CQ_DEVI.admin.software_issue si,"&_
" CQ_DEVI.admin.statedef sd"&_
" WHERE si.STATE = sd.ID"&_
" AND si.dbid IN ("& sIssIdList &")"
End If
rsTemp.Source = SQLstr
rsTemp.CursorType = 0
rsTemp.CursorLocation = 2
rsTemp.LockType = 3
rsTemp.Open()
While (NOT rsTemp.BOF) AND (NOT rsTemp.EOF)
outObjCQissState.Add CStr(rsTemp("dbid")), CStr(rsTemp("state_name"))
rsTemp.MoveNext
WEnd
rsTemp.Close
Set rsTemp = nothing
End Sub
'------------------------------------------------------------------------------------------------------------------------------------
Function Is_Pkg_Official ( nPv_id )
Dim rsTemp, Query_String
Query_String = _
" SELECT dlocked"&_
" FROM package_versions "&_
" WHERE pv_id = "& nPv_id
Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
If rsTemp("dlocked") = "Y" Then
Is_Pkg_Official = TRUE
Else
Is_Pkg_Official = FALSE
End If
rsTemp.Close
Set rsTemp = nothing
End Function
'------------------------------------------------------------------------------------------------------------------------------------
Function Set_Issue_State ( sCQState )
If parSkipOpen <> "" Then
Set_Issue_State = enumISSUES_STATE_FIXED
Else
Set_Issue_State = enumISSUES_STATE_IMPORTED
End If
End Function
'------------------------------------------------------------------------------------------------------------------------------------
Sub Import_Issues ( NNpv_id, NNiss_db, NNiss_id_list )
Dim issArr, iss_id, oCQissState, iss_num, iss_state, iss_state_human_readable
If NNiss_id_list = "" Then Exit Sub
Set oCQissState = CreateObject("Scripting.Dictionary")
issArr = Split ( NNiss_id_list, ",")
Call Get_CQ_Issues_States ( NNiss_id_list, NNiss_db, oCQissState )
objEH.TryORA ( OraSession )
On Error Resume Next
For Each iss_id In issArr
iss_num = GetIssueNumber ( NNiss_db, iss_id )
iss_state = Set_Issue_State ( oCQissState.Item (Trim(iss_id)) )
If Err.Number = 0 Then
OraDatabase.ExecuteSQL _
" INSERT INTO cq_issues ( pv_id, iss_db, iss_id, iss_state, mod_date )"&_
" VALUES ( "& NNpv_id &", "& NNiss_db &", "& iss_id &", "& iss_state &", "& ORA_SYSDATE &")"
If iss_state = 0 Then
iss_state_human_readable = "No"
Else
iss_state_human_readable = "Yes"
End If
If Err.Number = 0 Then
OraDatabase.ExecuteSQL _
"BEGIN Log_Action ( "& NNpv_id &", 'issue_add', "& objAccessControl.UserId &", 'Issue number: "& iss_num &", Fixed: "& iss_state_human_readable &"' ); END;"
End If
End If
Next
objEH.CatchORA ( OraSession )
End Sub
'------------------------------------------------------------------------------------------------------------------------------------
%>
<%
'Process submition
If CBool(Request("action")) AND (Request("btn") = "Import") AND objAccessControl.UserLogedIn Then
Call Import_Issues ( parPv_id, parFRiss_db, parFRiss_id )
imported = TRUE
Call OpenInParentWindow ("fixed_issues.asp?pv_id="& parPv_id &"&rtag_id="& parRtag_id)
End If
%>
<%
'-------------- Main Line ---------------
If parDoQuery <> "0" Then
retVal = Get_Issues ( parFRiss_db, parFRiss_num, rspTotal, rsCQ )
End If
' total number of pages required
rspTotalPages = rspTotal \ rspMax
If (rspTotal Mod rspMax) > 0 Then rspTotalPages = rspTotalPages + 1
%>