2015-12-23 4 views
0

Ниже моего кода, который получает информацию об истории ошибок из QC. У меня проблема сКак получить информацию истории из QC с использованием OTA

AuditPropertyFactoryFilter, который не фильтрует. AuditPropertyFactory имеет более тысячи строк.

Если я комментирую var changesList = auditPropertyFactory.NewList(changesHistoryFilter.Text); и раскомментируйте следующую строку , auditPropertyFactory имеет несколько строк только, но не фильтруется, как мне нужно.

Может ли кто-нибудь получить совет?

public List<QCBugHistory> retrieveHistoryFromBug(string bugId) 
    { 
     List<QCBugHistory> history = new List<QCBugHistory>(); 
     try 
     { 
      TDConnection qcConnection = new TDConnection(); 
      qcConnection.InitConnectionEx(qcUrl); 
      qcConnection.ConnectProjectEx(qcDomain, qcProject, qcLogin); 
      if (qcConnection.Connected) 
      { 
       AuditRecordFactory auditFactory = qcConnection.AuditRecordFactory as AuditRecordFactory; 
       TDFilter historyFilter = auditFactory.Filter; 
       historyFilter["AU_ENTITY_TYPE"] = "BUG"; 
       historyFilter["AU_ENTITY_ID"] = bugId; 
       historyFilter["AU_ACTION"] = "Update"; 
       historyFilter.Order["AU_TIME"] = 1; 
       historyFilter.OrderDirection["AU_TIME"] = 1; 
       var auditRecordList = auditFactory.NewList(historyFilter.Text); 
       log.Info("кол-во в истории " + auditRecordList.Count); 

       if (auditRecordList.Count > 0) 
       { 
        foreach (AuditRecord audit in auditRecordList) 
        { 
         QCBugHistory bugHistory = new QCBugHistory(); 
         bugHistory.actionType = audit["AU_ACTION"]; 
         bugHistory.changeDate = audit["AU_TIME"]; 

         AuditPropertyFactory auditPropertyFactory = audit.AuditPropertyFactory; 

         var changesHistoryFilter = auditPropertyFactory.Filter; 
         changesHistoryFilter["AP_PROPERTY_NAME"] = "Status"; 

         var changesList = auditPropertyFactory.NewList(changesHistoryFilter.Text); 
         //var changesList = auditPropertyFactory.NewList(""); 
         if (changesList.Count > 0) 
         { 
          foreach (AuditProperty prop in changesList) 
          { 
           //prop.EntityID 
           if (prop["AP_PROPERTY_NAME"] == "Status") 
           { 
            bugHistory.oldValue = prop["AP_OLD_VALUE"]; 
            bugHistory.newValue = prop["AP_NEW_VALUE"]; 
            history.Add(bugHistory); 
           } 
          } 
         } 

        } 
       } 
      } 
     } 
     catch (Exception e) 
     { 
      log.Error("Проблема соединения и получения данных из QC ", e); 
     } 

     return history; 
    }  
+0

Прошу прощения за чистое описание. Чтобы отфильтровать AuditPropertyFactory, я использую это условие, если (prop ["AP_PROPERTY_NAME"] == "Статус") вместо использования класса фильтра – Ilya

ответ

0

Тест (в C#):


1), имеющего только BUG ID параметров (BUGID ниже):

BugFactory bgFact = TDCONNECTION.BugFactory; 
TDFilter bgFilt = bgFact.Filter; 
bgFilt["BG_BUG_ID"] = BUGID; // This is a STRING 

List bugs = bgFilt.NewList(); 

Bug bug = bugs[1]; // is 1-based 
bug.History; 

2) Наличие Bug сам объект, просто выполните:

bug.History; 
+0

Моя проблема заключается в том, что фильтр "changesHistoryFilter [" AP_PROPERTY_NAME "] не работает. я должен использовать оператор if для получения необходимых мне данных. Я хотел использовать фильтр выше и строку "var changesList = auditPropertyFactory.NewList (" "); для получения необходимых данных, но это не сработает. – Ilya

 Смежные вопросы

  • Нет связанных вопросов^_^