Beispiel #1
0
        protected override WebResponse <Party> EntityFind(Party entity)
        {
            var search = SearchBuilder.CreateSearch();

            var searchCriteria = search.AddSearchCriteria(SearchCombinator.And)
                                 .AddCriteria("Name", SearchCondition.Equals, entity.Details.Name);

            if (!string.IsNullOrWhiteSpace(entity.Details.Role))
            {
                searchCriteria.AddCriteria("Role", SearchCondition.Equals, entity.Details.Role);
            }

            var results = Client.Search <Party>(search);

            if (results.IsValid)
            {
                var se = results.Message.FirstOrDefault();

                // Call again to get the ETag for the update
                return(Client.Get <Party>(se.ToMdmKey()));
            }

            return(new WebResponse <Party> {
                Code = results.Code, IsValid = results.IsValid, Fault = results.Fault
            });
        }
        protected override Search CreateSearch()
        {
            var search = SearchBuilder.CreateSearch().NotMultiPage().NoMaxPageSize();

            search.SearchOptions.OrderBy = "orderby";
            return(search);
        }
        private IDictionary <string, List <MdmId> > BuildCommodityInstrumentTypeLookups()
        {
            var search = SearchBuilder.CreateSearch();

            var webResponse = Client.Search <CommodityInstrumentType>(search);

            if (!webResponse.IsValid)
            {
                throw new Exception(String.Format("Unable to obtain search results for CommodityInstrumentType: {0}", webResponse.Fault.Message));
            }

            var dictionary = new Dictionary <string, List <MdmId> >();

            foreach (var result in webResponse.Message)
            {
                MdmId adcCommodityId = result.Identifiers.FirstOrDefault(x => x.SystemName == "ADC");
                if (adcCommodityId != null)
                {
                    string adcCommodity = AdcCommodity(adcCommodityId.Identifier);

                    if (!dictionary.ContainsKey(adcCommodity))
                    {
                        dictionary.Add(adcCommodity, new List <MdmId>());
                    }

                    MdmId nexusId = result.Identifiers.First(x => x.IsMdmId);
                    dictionary[adcCommodity].Add(nexusId);
                }
            }

            return(dictionary);
        }
Beispiel #4
0
        private void OnIsActiveChanged(object sender, EventArgs eventArgs)
        {
            if (this.isActive)
            {
                Search search = SearchBuilder.CreateSearch();

                var context = MyRegion(this.regionManager.Regions).Context as Tuple <int, DateTime?, string>;
                search.AsOf = context.Item2;

                string field;
                switch (context.Item3)
                {
                case "Location":
                    field = "Parent.Id";
                    break;

                default:
                    field = context.Item3 + ".Id";
                    break;
                }

                if (field.Contains("|"))
                {
                    search.SearchFields.Combinator = SearchCombinator.Or;
                    var fields = field.Split(new[] { '|' });

                    foreach (string f in fields)
                    {
                        search.AddSearchCriteria(SearchCombinator.And)
                        .AddCriteria(f, SearchCondition.NumericEquals, context.Item1.ToString());
                    }
                }
                else
                {
                    search.AddSearchCriteria(SearchCombinator.And)
                    .AddCriteria(field, SearchCondition.NumericEquals, context.Item1.ToString());
                }

                this.entityService.ExecuteAsyncSearch <Location>(
                    this.search = search,
                    response =>
                {
                    IList <Location> searchResults = response;
                    this.Locations =
                        new ObservableCollection <LocationViewModel>(
                            searchResults.Select(
                                x =>
                                new LocationViewModel(
                                    new EntityWithETag <Location>(x, null),
                                    this.eventAggregator)).OrderBy(y => y.Name));
                },
                    this.eventAggregator,
                    false);
                return;
            }

            this.Locations = new ObservableCollection <LocationViewModel>();
        }
        public void find_by_lessthan()
        {
            var search = SearchBuilder.CreateSearch(SearchCombinator.And);
            search.AddSearchCriteria(SearchCombinator.And)
                  .AddCriteria("Balance", SearchCondition.LessThan, "120", true);
            var result = new QueryFactory().CreateQuery(search);

            Assert.AreEqual("(Balance < 120)", result);
        }
        public void find_by_equality_isnumeric()
        {
            var search = SearchBuilder.CreateSearch(SearchCombinator.And);
            search.AddSearchCriteria(SearchCombinator.And)
                  .AddCriteria("Balance", SearchCondition.Equals, "120", true);
            var result = new QueryFactory().CreateQuery(search);

            Assert.AreEqual("(Balance = 120)", result);
        }
        public void find_by_equality()
        {
            var search = SearchBuilder.CreateSearch(SearchCombinator.And);
            search.AddSearchCriteria(SearchCombinator.Or)
                  .AddCriteria("Name", SearchCondition.Equals, "TestParty");
            var result = new QueryFactory().CreateQuery(search);

            Assert.AreEqual("(Name = \"TestParty\")", result);
        }
        public void find_party_by_name_and_faxnumber()
        {
            var search = SearchBuilder.CreateSearch(SearchCombinator.And);
            search.AddSearchCriteria(SearchCombinator.And)
                  .AddCriteria("Name", SearchCondition.Equals, "TestParty")
                  .AddCriteria("FaxNumber", SearchCondition.Equals, "01302555555");

            var result = new QueryFactory().CreateQuery(search);
            Assert.AreEqual("(Name = \"TestParty\" And FaxNumber = \"01302555555\")", result);
        }
        public void find_party_by_two_wildcards_anded()
        {
            var search = SearchBuilder.CreateSearch(SearchCombinator.And);
            search.AddSearchCriteria(SearchCombinator.And)
                  .AddCriteria("Name", SearchCondition.Contains, "Test")
                  .AddCriteria("Name", SearchCondition.Contains, "Party");

            var result = new QueryFactory().CreateQuery(search);
            Assert.AreEqual("(Name.Contains(\"Test\") And Name.Contains(\"Party\"))", result);
        }
        public void KeysForSameSearchButDifferentEntitiesAreDifferent()
        {
            var search = SearchBuilder.CreateSearch();

            search.AddSearchCriteria(SearchCombinator.And)
            .AddCriteria("Name", SearchCondition.Equals, "bing", true);
            var key1 = search.ToKey <Person>();
            var key2 = search.ToKey <Party>();

            Assert.AreNotEqual(key1, key2);
        }
        protected static void Establish_context()
        {
            client = new HttpClient();

            Search search = SearchBuilder.CreateSearch();

            search.AddSearchCriteria(SearchCombinator.Or).AddCriteria(
                "x", SearchCondition.Equals, Guid.NewGuid().ToString());

            content = HttpContentExtensions.CreateDataContract(search);
        }
        public void KeysForSameSearchAreTheSame()
        {
            var search = SearchBuilder.CreateSearch();

            search.AddSearchCriteria(SearchCombinator.And)
            .AddCriteria("TargetPerson.Id", SearchCondition.Equals, "1", true)
            .AddCriteria("PartyAccountabilityType", SearchCondition.Equals, "PartyRole", false);
            var key1 = search.ToKey <PartyRole>();
            var key2 = search.ToKey <PartyRole>();

            Assert.AreEqual(key1, key2);
        }
        public void KeysForDifferentVersionsAreDifferent()
        {
            var search = SearchBuilder.CreateSearch();

            search.AddSearchCriteria(SearchCombinator.And)
            .AddCriteria("TargetSourceSystem.Id", SearchCondition.Equals, "1", true)
            .AddCriteria("SourceSystemType", SearchCondition.Equals, "SourceSystem", false);
            var key1 = search.ToKey <int>();
            var key2 = search.ToKey <int>(2);

            Assert.AreNotEqual(key1, key2);
        }
        public void KeyIsNotAffectedByUrlEncoding()
        {
            var search = SearchBuilder.CreateSearch();

            search.AddSearchCriteria(SearchCombinator.And)
            .AddCriteria("TargetPerson.Id", SearchCondition.Equals, "1", true)
            .AddCriteria("PartyAccountabilityType", SearchCondition.Equals, "PartyRole", false);
            var key1          = search.ToKey <PartyRole>();
            var urlEncodedKey = HttpUtility.UrlEncode(key1);

            Assert.AreEqual(key1, urlEncodedKey);
        }
        public void CreateOrMappingSearch()
        {
            var expected = new Search
            {
                SearchFields  = { Combinator = SearchCombinator.Or },
                SearchOptions = { IsMappingSearch = true },
            };

            var candidate = SearchBuilder.CreateSearch(SearchCombinator.Or, true);

            this.Check(expected, candidate);
        }
        public void KeyIsNotAffectedByUrlEncoding()
        {
            var search = SearchBuilder.CreateSearch();

            search.AddSearchCriteria(SearchCombinator.And)
            .AddCriteria("TargetSourceSystem.Id", SearchCondition.Equals, "1", true)
            .AddCriteria("SourceSystemType", SearchCondition.Equals, "SourceSystem", false);
            var key1          = search.ToKey <int>();
            var urlEncodedKey = HttpUtility.UrlEncode(key1);

            Assert.AreEqual(key1, urlEncodedKey);
        }
        public void CreateAndSearch()
        {
            var expected = new Search
            {
                SearchFields  = { Combinator = SearchCombinator.And },
                SearchOptions = { IsMappingSearch = false },
            };

            var candidate = SearchBuilder.CreateSearch();

            this.Check(expected, candidate);
        }
        public void find_party_with_two_search_criteria()
        {
            var search = SearchBuilder.CreateSearch(SearchCombinator.Or);
            search.AddSearchCriteria(SearchCombinator.And)
                  .AddCriteria("Name",  SearchCondition.Equals, "Test")
                  .AddCriteria("FaxNumber", SearchCondition.Contains, "01302");
            search.AddSearchCriteria(SearchCombinator.And)
                  .AddCriteria("Name", SearchCondition.Equals, "Bob")
                  .AddCriteria("FaxNumber", SearchCondition.Contains, "01942");

            var result = new QueryFactory().CreateQuery(search);
            Assert.AreEqual("(Name = \"Test\" And FaxNumber.Contains(\"01302\")) Or (Name = \"Bob\" And FaxNumber.Contains(\"01942\"))", result);
        }
        protected static void Establish_context()
        {
            entity1 = Script.PartyData.CreateBasicEntityWithOneMapping();

            client = new HttpClient();

            Search search = SearchBuilder.CreateSearch(isMappingSearch: true);

            search.AddSearchCriteria(SearchCombinator.And).AddCriteria(
                "MappingValue", SearchCondition.Equals, entity1.Mappings[0].MappingValue).AddCriteria(
                "System.Name", SearchCondition.Equals, "Endur");

            content = HttpContentExtensions.CreateDataContract(search);
        }
        private Search BuildNameSearch()
        {
            var search = SearchBuilder.CreateSearch();

            search.AsOf = this.AsOf;

            if (!string.IsNullOrEmpty(this.NameSearch))
            {
                search.AddSearchCriteria(SearchCombinator.And)
                .AddCriteria(this.SelectedMenuItem.SearchKey, SearchCondition.Contains, this.NameSearch);
            }

            return(search);
        }
Beispiel #21
0
        protected static void Establish_context()
        {
            entity1 = ExchangeData.CreateBasicEntityWithOneMapping();
            entity2 = ExchangeData.CreateBasicEntityWithOneMapping();

            client = new HttpClient();

            Search search = SearchBuilder.CreateSearch(isMappingSearch: true);

            search.AddSearchCriteria(SearchCombinator.Or).AddCriteria(
                "MappingValue", SearchCondition.Equals, entity1.Mappings[0].MappingValue).AddCriteria(
                "MappingValue", SearchCondition.Equals, entity2.Mappings[0].MappingValue);

            content = HttpContentExtensions.CreateDataContract(search);
        }
Beispiel #22
0
        private WebResponse <Portfolio> EntityFind(Portfolio entity)
        {
            if (entity == null)
            {
                return(new WebResponse <Portfolio> {
                    IsValid = false
                });
            }

            var search = SearchBuilder.CreateSearch();

            search.AddSearchCriteria(SearchCombinator.And)
            .AddCriteria("PortfolioType", SearchCondition.Equals, entity.Details.PortfolioType, false)
            .AddCriteria("Name", SearchCondition.Equals, entity.Details.Name, false);

            var results = Client.Search <Portfolio>(search);

            if (results.IsValid)
            {
                var se = results.Message.FirstOrDefault();

                // Call again to get the ETag for the update
                return(Client.Get <Portfolio>(se.ToMdmKey()));
            }

            if (results.Fault.Message.Contains("Unable to connect to the remote server"))
            {
                // Try again
                Thread.Sleep(30000);
                this.logger.WarnFormat(
                    "Try again for Portfolio: {0}-{1}",
                    entity.Details.PortfolioType,
                    entity.Details.Name);
                results = this.Client.Search <Portfolio>(search);
                if (results.IsValid)
                {
                    var se = results.Message.FirstOrDefault();

                    // Call again to get the ETag for the update
                    return(this.Client.Get <Portfolio>(se.ToMdmKey()));
                }
            }

            return(new WebResponse <Portfolio> {
                Code = results.Code, IsValid = results.IsValid, Fault = results.Fault
            });
        }
        /// <summary>
        /// Create a mapping search.
        /// </summary>
        /// <param name="systemName">System name to use</param>
        /// <param name="identifier">Identifier to use</param>
        /// <returns>A new mapping search</returns>
        public static Search MappingSearch(this string systemName, string identifier = null)
        {
            var search = SearchBuilder.CreateSearch(isMappingSearch: true);

            search.SearchOptions.ResultsPerPage = null;
            search.SearchOptions.MultiPage      = false;

            search.AddSearchCriteria(SearchCombinator.And)
            .AddCriteria("System.Name", SearchCondition.Equals, systemName);

            if (!string.IsNullOrEmpty(identifier))
            {
                search.SearchFields.Criterias[0].AddCriteria("Mapping", SearchCondition.Equals, identifier);
            }

            return(search);
        }
        private Search BuildMappingSearch()
        {
            var search = SearchBuilder.CreateSearch(SearchCombinator.Or, true);

            search.AsOf = this.AsOf;

            if (this.ShouldAddMappingValueSearchCriteria())
            {
                this.AddMappingValueSearchCriteria(search);
            }

            if (this.ShouldAddMdmIdSearchCriteria())
            {
                this.AddMdmIdSearchCriteria(search);
            }

            return(search);
        }
        public void SearchKeysAreReversible()
        {
            var search = SearchBuilder.CreateSearch();

            search.AddSearchCriteria(SearchCombinator.And)
            .AddCriteria("TargetPerson.Id", SearchCondition.Equals, "1", true)
            .AddCriteria("PartyAccountabilityType", SearchCondition.Equals, "PartyRole", false);
            var key1      = search.ToKey <PartyRole>();
            var candidate = key1.ToSearch <PartyRole>();

            Assert.AreEqual(candidate.SearchFields.Combinator, SearchCombinator.And);
            Assert.AreEqual(candidate.SearchFields.Criterias[0].Criteria[0].Field, "TargetPerson.Id");
            Assert.AreEqual(candidate.SearchFields.Criterias[0].Criteria[1].Field, "PartyAccountabilityType");
            Assert.AreEqual(candidate.SearchFields.Criterias[0].Criteria[0].Condition, SearchCondition.Equals);
            Assert.AreEqual(candidate.SearchFields.Criterias[0].Criteria[1].Condition, SearchCondition.Equals);
            Assert.AreEqual(candidate.SearchFields.Criterias[0].Criteria[0].ComparisonValue, "1");
            Assert.AreEqual(candidate.SearchFields.Criterias[0].Criteria[1].ComparisonValue, "PartyRole");
        }
Beispiel #26
0
        public void ServiceInvokedOnFirstCall()
        {
            // Arrange
            var search = SearchBuilder.CreateSearch();

            search.AddSearchCriteria(SearchCombinator.And)
            .AddCriteria("A", SearchCondition.Equals, "34", false);

            this.searchResult = new PagedWebResponse <IList <SourceSystem> >();
            this.mdmService.Setup(x => x.Search(search)).Returns(this.searchResult);

            // Act
            var result = this.cacheService.Search(search);

            // Assert
            Assert.AreEqual(this.searchResult, result);
            this.mdmService.Verify(x => x.Search(search), Times.AtMostOnce());
        }
        public void SearchKeysForHigherVersionsAreReverisble()
        {
            var search = SearchBuilder.CreateSearch();

            search.AddSearchCriteria(SearchCombinator.And)
            .AddCriteria("TargetSourceSystem.Id", SearchCondition.Equals, "1", true)
            .AddCriteria("SourceSystemType", SearchCondition.Equals, "SourceSystem", false);
            var key1      = search.ToKey <int>(2);
            var candidate = key1.ToSearch <int>();

            Assert.AreEqual(candidate.SearchFields.Combinator, SearchCombinator.And);
            Assert.AreEqual(candidate.SearchFields.Criterias[0].Criteria[0].Field, "TargetSourceSystem.Id");
            Assert.AreEqual(candidate.SearchFields.Criterias[0].Criteria[1].Field, "SourceSystemType");
            Assert.AreEqual(candidate.SearchFields.Criterias[0].Criteria[0].Condition, SearchCondition.Equals);
            Assert.AreEqual(candidate.SearchFields.Criterias[0].Criteria[1].Condition, SearchCondition.Equals);
            Assert.AreEqual(candidate.SearchFields.Criterias[0].Criteria[0].ComparisonValue, "1");
            Assert.AreEqual(candidate.SearchFields.Criterias[0].Criteria[1].ComparisonValue, "SourceSystem");
        }
Beispiel #28
0
        public void InvalidResponseIsReturned()
        {
            // Arrange
            var search = SearchBuilder.CreateSearch();

            search.AddSearchCriteria(SearchCombinator.And)
            .AddCriteria("A", SearchCondition.Equals, "34", false);

            this.searchResult = new PagedWebResponse <IList <SourceSystem> > {
                IsValid = false
            };
            this.mdmService.Setup(x => x.Search(search)).Returns(this.searchResult);

            // Act
            var result = this.cacheService.Search(search);

            // Assert
            Assert.AreEqual(this.searchResult, result);
        }
        public void DifferContentHasDifferentSerialization()
        {
            var searchA = SearchBuilder.CreateSearch();

            searchA.AddSearchCriteria(SearchCombinator.And)
            .AddCriteria("A", SearchCondition.Equals, "34", true)
            .AddCriteria("B", SearchCondition.Equals, "Test");

            var searchB = SearchBuilder.CreateSearch();

            searchB.AddSearchCriteria(SearchCombinator.And)
            .AddCriteria("A", SearchCondition.Equals, "34", false)
            .AddCriteria("B", SearchCondition.Equals, "Test");

            var expected  = searchA.DataContractSerialize();
            var candidate = searchB.DataContractSerialize();

            Assert.AreNotEqual(expected, candidate);
        }
Beispiel #30
0
        public void SearchForEntity()
        {
            Search search = SearchBuilder.CreateSearch();

            search.AsOf = this.AsOf;
            search.AddSearchCriteria(SearchCombinator.And)
            .AddCriteria("Name", SearchCondition.Contains, this.EntitySearchText);

            search.SearchOptions.OrderBy = "Name";
            this.entityService.ExecuteAsyncSearch <Broker>(
                search,
                response =>
            {
                IList <Broker> searchResults = response;
                this.Brokers =
                    new ObservableCollection <SelectorViewModel>(
                        searchResults.Select(x => new SelectorViewModel(x.MdmId().Value, x.Details.Name))
                        .OrderBy(y => y.Name));
            },
                this.eventAggregator);
        }