public CQRecordStoredQueryQuery( Session userSession, CQRecordFilter recordFilter, string hwmStr, IServiceProvider serviceProvider) : base(userSession, recordFilter, serviceProvider) { if (!(recordFilter is CQRecordStoredQueryFilter)) { throw new ArgumentException("recordFilter is not CQRecordStoredQueryFilter"); } ClearQuestMigrationContext cqContext = serviceProvider.GetService(typeof(ClearQuestMigrationContext)) as ClearQuestMigrationContext; m_queryTimeDelimiter = (cqContext == null) ? ClearQuestConstants.CQQueryDefaultTimeDelimiter : cqContext.CQQueryTimeDelimiter; m_queryDef = CQWrapper.GetQueryDef( CQWrapper.GetWorkSpace(m_userSession), ((CQRecordStoredQueryFilter)m_recordFilter).StoredQueryName); string originalQueryString = NormalizeSqlQuery(m_queryDef.SQL); if (string.IsNullOrEmpty(hwmStr)) { m_queryStr = originalQueryString; } else { m_queryStr = UtilityMethods.Format(QueryBase, originalQueryString, m_queryTimeDelimiter, hwmStr, m_queryTimeDelimiter); } Query(); }
private void ComputeDeltaPerRecordType( CQRecordFilter filter, string hwmTime) { CQRecordQueryBase recordQuery = CQRecordQueryFactory.CreatQuery(m_userSession, filter, hwmTime, this); foreach (OAdEntity record in recordQuery) { // HACK HACK if (record != null) // this if check is HACK { try { ComputeDeltaPerRecord(record); } catch (Exception ex) // eating exception is HACK { TraceManager.TraceInformation(string.Format("Workaround for XML save exception : {0}", ex.Message)); TraceManager.TraceException(ex); } } // HACK HACK } }
public CQRecordStoredQueryQuery( Session userSession, CQRecordFilter recordFilter, string hwmStr, IServiceProvider serviceProvider) : base(userSession, recordFilter, serviceProvider) { if (!(recordFilter is CQRecordStoredQueryFilter)) { throw new ArgumentException("recordFilter is not CQRecordStoredQueryFilter"); } m_queryDef = CQWrapper.GetQueryDef( CQWrapper.GetWorkSpace(m_userSession), ((CQRecordStoredQueryFilter)m_recordFilter).StoredQueryName); string originalQueryString = NormalizeSqlQuery(m_queryDef.SQL); if (string.IsNullOrEmpty(hwmStr)) { m_queryStr = originalQueryString; } else { m_queryStr = UtilityMethods.Format(QueryBase, originalQueryString, hwmStr); } Query(); }
/// <summary> /// Enumerate the diff items found based on the query passed in as well as the filterString and version passed /// to InitializeForDiff. The return type is IEnumerable<> so that adapter implementations do not need download and keep /// all of the IWITDiffItems in memory at once. /// </summary> /// <param name="queryCondition">A string that specifies a query used to select a subset of the work items defined by /// the set that the filter string identified.</param> /// <returns>An enumeration of IWITDiffItems each representing a work item to be compared by the WIT Diff operation</returns> public IEnumerable <IWITDiffItem> GetWITDiffItems(string queryCondition) { if (m_getWITDiffItemsDone) { yield break; } if (m_cqRecordFilter is CQRecordStoredQueryFilter) { if (!string.IsNullOrEmpty(queryCondition)) { throw new NotImplementedException("Query conditions on the ServerDiff operation are not supported with ClearQuest stored queries are used"); } } else { if (!string.IsNullOrEmpty(queryCondition)) { m_cqRecordFilter = new CQRecordFilter(m_cqRecordFilter.RecordType, m_cqRecordFilter.SelectFromTable, queryCondition); } } CQRecordQueryBase recordQuery = CQRecordQueryFactory.CreateQuery(m_userSession, m_cqRecordFilter, null, this); foreach (OAdEntity record in recordQuery) { if (record != null) // this if check is HACK { OAdHistoryFields histFields = CQWrapper.GetHistoryFields(record); int historyFldCount = CQWrapper.HistoryFieldsCount(histFields); yield return(new CQWITDiffItem(this, record, historyFldCount - 1)); } } m_getWITDiffItemsDone = true; }
public CQRecordQueryBase( Session userSession, CQRecordFilter recordFilter, IServiceProvider serviceProvider) { m_userSession = userSession; m_recordFilter = recordFilter; m_serviceProvider = serviceProvider; }
public CQRecordSqlQuery( Session userSession, CQRecordFilter recordFilter, string hwmStr, IServiceProvider serviceProvider) : base(userSession, recordFilter, serviceProvider) { List <CQRecordFilter> recordFilters = new List <CQRecordFilter>(); recordFilters.Add(recordFilter); BuildQueryString(recordFilters, hwmStr); Query(); }
public static CQRecordQueryBase CreateQuery( Session userSession, CQRecordFilter recordFilter, string hwmStr, IServiceProvider serviceProvider) { if (recordFilter is CQRecordStoredQueryFilter) { return(new CQRecordStoredQueryQuery( userSession, recordFilter, hwmStr, serviceProvider)); } else { return(new CQRecordSqlQuery( userSession, recordFilter, hwmStr, serviceProvider)); } }
/// <summary> /// Enumerate the diff items found based on the query passed in as well as the filterString and version passed /// to InitializeForDiff. The return type is IEnumerable<> so that adapter implementations do not need download and keep /// all of the IWITDiffItems in memory at once. /// </summary> /// <param name="queryCondition">A string that specifies a query used to select a subset of the work items defined by /// the set that the filter string identified.</param> /// <returns>An enumeration of IWITDiffItems each representing a work item to be compared by the WIT Diff operation</returns> public IEnumerable <IWITDiffItem> GetWITDiffItems(string queryCondition) { List <CQRecordFilter> recordFilters = new List <CQRecordFilter>(); recordFilters.Add(m_cqRecordFilter); if (!string.IsNullOrEmpty(queryCondition)) { CQRecordFilter queryConditionRecordFilter = new CQRecordFilter(m_cqRecordFilter.RecordType, m_cqRecordFilter.SelectFromTable, queryCondition); recordFilters.Add(queryConditionRecordFilter); } CQRecordSqlQuery recordQuery = new CQRecordSqlQuery(m_userSession, recordFilters, null, this); foreach (OAdEntity record in recordQuery) { if (record != null) // this if check is HACK { OAdHistoryFields histFields = CQWrapper.GetHistoryFields(record); int historyFldCount = CQWrapper.HistoryFieldsCount(histFields); yield return(new CQWITDiffItem(this, record, historyFldCount - 1)); } } }
/// <summary> /// The implementation can perform any one-time initialization here. /// Some adapter implementations may not need to perform any such initialization. /// It takes as optional arguments a filterString and a version that would be applied during subsequent queries. /// </summary> /// <param name="filterString">A string that specifies some filtering condition; if null or empty no additional filtering is applied</param> /// <param name="version">The version of the item; if null or empty, the tip version is accessed</param> /// <param name="provideForContentComparison">If true, any IDiffItem returned by any method should include the contents of the work item for comparison purposed. /// If false, detailed content data can be left out. /// </param> public void InitializeForDiff(string filterString, bool provideForContentComparison) { m_cqRecordFilter = CQRecordFilters.ParseFilterPath(filterString, m_userSession); m_provideForContentComparison = provideForContentComparison; }
/// <summary> /// Give the IWITDiffProvider a chance to cleanup any reources allocated during InitializeForDiff() /// </summary> public void Cleanup() { m_cqRecordFilter = null; // TODO: Close down stuff opened in InitializeClient, or need a TerminateClient() for that? }
/// <summary> /// Give the IWITDiffProvider a chance to cleanup any reources allocated during InitializeForDiff() /// </summary> public void Cleanup() { m_cqRecordFilter = null; m_getWITDiffItemsDone = false; }