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)); } }
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)); } }
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); } }
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); }