Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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
            }
        }
Esempio n. 3
0
        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();
        }
Esempio n. 4
0
        /// <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;
 }
Esempio n. 6
0
        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();
        }
Esempio n. 7
0
 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));
     }
 }
Esempio n. 8
0
        /// <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));
                }
            }
        }
Esempio n. 9
0
 /// <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;
 }
Esempio n. 10
0
 /// <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?
 }
Esempio n. 11
0
 /// <summary>
 /// Give the IWITDiffProvider a chance to cleanup any reources allocated during InitializeForDiff()
 /// </summary>
 public void Cleanup()
 {
     m_cqRecordFilter      = null;
     m_getWITDiffItemsDone = false;
 }