Example #1
0
 public void SearchInstruments(SearchRequest searchRequest,
                               OnSearchResponse searchCallback,
                               OnFailure onFailure)
 {
     try
     {
         SearchResponseHandler handler = new SearchResponseHandler();
         Response response             = _httpInvoker.GetInSession(_baseUri, searchRequest, _xmlParser, handler, _sessionId);
         if (response.IsOk)
         {
             if (handler.IsOk)
             {
                 searchCallback(handler.Instruments, handler.HasMoreResults);
             }
             else
             {
                 onFailure(new FailureResponse(false, handler.Message, "", null));
             }
         }
         else
         {
             onFailure(new FailureResponse(true, "HttpStatus: " + response.Status + ", for: " + _baseUri + searchRequest.Uri));
         }
     }
     catch (Exception e)
     {
         onFailure(new FailureResponse(e, "URI: " + _baseUri + searchRequest.Uri));
     }
 }
Example #2
0
 public void SearchInstruments(SearchRequest searchRequest, OnSearchResponse searchCallback, OnFailure onFailure)
 {
     try
     {
         SearchResponseHandler searchResponseHandler = new SearchResponseHandler();
         Response inSession = this._httpInvoker.GetInSession(this._baseUri, (IRequest)searchRequest, this._xmlParser, (Handler)searchResponseHandler, this._sessionId);
         if (inSession.IsOk)
         {
             if (searchResponseHandler.IsOk)
             {
                 searchCallback(searchResponseHandler.Instruments, searchResponseHandler.HasMoreResults);
             }
             else
             {
                 onFailure(new FailureResponse(false, searchResponseHandler.Message, "", (Exception)null));
             }
         }
         else
         {
             onFailure(new FailureResponse(true, "HttpStatus: " + (object)inSession.Status + ", for: " + this._baseUri + searchRequest.Uri));
         }
     }
     catch (Exception ex)
     {
         onFailure(new FailureResponse(ex, "URI: " + this._baseUri + searchRequest.Uri));
     }
 }
Example #3
0
        void dispatcher_SearchRequestAsked(List <IRequestObject> selectedObjects, SearchResponseHandler callback)
        {
            //该函数进行下列具体实现:首先进行Object中种类的识别和搜索。
            //进行识别完毕后,如果是资源占多数,则调用资源搜索的函数。
            //进行识别完毕后,如果是标签占多数,则调用标签搜索的函数。
            SearchResponseArgs e = new SearchResponseArgs();

            e.Result           = new List <IRequestObject>();
            e.Result_Attribute = new List <bool>();
            int             numberOfResources = 0;
            int             numberOfTags      = 0;
            List <Tag>      selectedTags      = new List <Tag>();
            List <Resource> selectedResources = new List <Resource>();

            foreach (IRequestObject reobj in selectedObjects)
            {
                if (reobj is Tag)
                {
                    numberOfTags++;
                    selectedTags.Add((Tag)reobj);
                }
                else
                {
                    numberOfResources++;
                    selectedResources.Add((Resource)reobj);
                }
            }
            //系统默认如果圈住的资源数目大于或等于标签数目,则系统进行资源的搜索。
            if (numberOfResources < numberOfTags)
            {
                List <Resource> res = coronaService.SearchResourcesFromTags(selectedTags);
                List <Resource> resourceToBeRemoved = new List <Resource>();
                foreach (Resource resc in res)
                {
                    //此处出现异常。需在遍历的时候,首先应该确定出应该删除的资源,并将其存储。
                    if (!File.Exists(resc.ResourcePath))
                    {
                        resourceToBeRemoved.Add(resc);
                    }
                }
                //确定完需要删除的Resource并将其一一删除。
                foreach (Resource resc in resourceToBeRemoved)
                {
                    rescControl.CheckResource(resc, coronaService);
                    res.Remove(resc);
                }
                foreach (Resource resc in res)
                {
                    e.Result.Add(rescControl.WrapResource(resc));
                    e.Result_Attribute.Add(true);
                }
                List <Tag> tags = coronaService.SearchTagsFromTags(selectedTags);
                foreach (Tag tag in tags)
                {
                    e.Result.Add(tag);
                    e.Result_Attribute.Add(false);
                }
            }
            else
            {
                List <Tag> tags = coronaService.SearchTagsFromResources(selectedResources);
                foreach (Tag tag in tags)
                {
                    e.Result.Add(tag);
                    e.Result_Attribute.Add(true);
                }
                foreach (Resource resc in selectedResources)
                {
                    e.Result.Add(rescControl.WrapResource(resc));
                    e.Result_Attribute.Add(false);
                }
            }
            if (callback != null)
            {
                callback(e);
            }
        }
Example #4
0
        void dispatcher_SearchRequestAsked(List<IRequestObject> selectedObjects, SearchResponseHandler callback)
        {
            //该函数进行下列具体实现:首先进行Object中种类的识别和搜索。
            //进行识别完毕后,如果是资源占多数,则调用资源搜索的函数。
            //进行识别完毕后,如果是标签占多数,则调用标签搜索的函数。
            SearchResponseArgs e = new SearchResponseArgs();
            e.Result = new List<IRequestObject>();
            e.Result_Attribute = new List<bool>();
            int numberOfResources=0;
            int numberOfTags=0;
            List<Tag> selectedTags=new List<Tag>();
            List<Resource> selectedResources=new List<Resource>();
            foreach (IRequestObject reobj in selectedObjects)
            {

                if (reobj is Tag)
                {
                    numberOfTags++;
                    selectedTags.Add((Tag)reobj);
                }
                else
                {
                    numberOfResources++;
                    selectedResources.Add((Resource)reobj);
                }
            }
            //系统默认如果圈住的资源数目大于或等于标签数目,则系统进行资源的搜索。
            if (numberOfResources < numberOfTags)
            {
                List<Resource> res = coronaService.SearchResourcesFromTags(selectedTags);
                List<Resource> resourceToBeRemoved = new List<Resource>();
                foreach(Resource resc in res)
                {
                    //此处出现异常。需在遍历的时候,首先应该确定出应该删除的资源,并将其存储。
                    if (!File.Exists(resc.ResourcePath))
                    {
                        resourceToBeRemoved.Add(resc);
                    }
                }
                //确定完需要删除的Resource并将其一一删除。
                foreach (Resource resc in resourceToBeRemoved)
                {
                    rescControl.CheckResource(resc, coronaService);
                    res.Remove(resc);
                }
                foreach (Resource resc in res)
                {
                    e.Result.Add( rescControl.WrapResource(resc) ) ;
                    e.Result_Attribute.Add(true);
                }
                List<Tag> tags = coronaService.SearchTagsFromTags(selectedTags);
                foreach (Tag tag in tags)
                {
                    e.Result.Add(tag);
                    e.Result_Attribute.Add(false);
                }
            }
            else
            {
                List<Tag> tags =coronaService.SearchTagsFromResources(selectedResources);
                foreach (Tag tag in tags)
                {
                    e.Result.Add(tag);
                    e.Result_Attribute.Add(true);
                }
                foreach (Resource resc in selectedResources)
                {
                    e.Result.Add( rescControl.WrapResource(resc) );
                    e.Result_Attribute.Add(false);
                }
            }
            if (callback != null)
                callback(e);
        }