コード例 #1
0
        private ResultSearchCriteriaContract GetFilteredResultSearchCriterias(IList <SearchCriteriaContract> searchCriterias)
        {
            ResultRestrictionCriteriaContract resultRestrictionCriteriaContract = null;
            ResultCriteriaContract            resultCriteriaContract            = null;

            RegexCriteriaBuilder.ConvertWildcardToRegex(searchCriterias);
            var filteredCriterias = new List <SearchCriteriaContract>();

            foreach (var searchCriteriaContract in searchCriterias)
            {
                if (m_searchCriteriaDirector.IsCriteriaSupported(searchCriteriaContract))
                {
                    filteredCriterias.Add(RegexCriteriaBuilder.ConvertToRegexCriteria(searchCriteriaContract));
                }
                else if (searchCriteriaContract.Key == CriteriaKey.ResultRestriction)
                {
                    resultRestrictionCriteriaContract = (ResultRestrictionCriteriaContract)searchCriteriaContract;
                }
                else if (searchCriteriaContract.Key == CriteriaKey.Result)
                {
                    resultCriteriaContract = (ResultCriteriaContract)searchCriteriaContract;
                }
            }

            return(new ResultSearchCriteriaContract
            {
                ConjunctionSearchCriterias = filteredCriterias,
                ResultSpecifications = resultCriteriaContract,
                ResultBooks = resultRestrictionCriteriaContract != null
                    ? resultRestrictionCriteriaContract.ResultBooks
                    : null,
            });
        }
コード例 #2
0
        private void AdjustStartIndexes(ResultCriteriaContract resultCriteriaContract)
        {
            if (resultCriteriaContract != null)
            {
                if (resultCriteriaContract.Start.HasValue)
                {
                    resultCriteriaContract.Start++;
                }

                if (resultCriteriaContract.HitSettingsContract != null && resultCriteriaContract.HitSettingsContract.Start.HasValue)
                {
                    resultCriteriaContract.HitSettingsContract.Start++;
                }
            }
        }
コード例 #3
0
ファイル: SearchManager.cs プロジェクト: daliboris/ITJakub
        private FilteredCriterias FilterSearchCriterias(IList <SearchCriteriaContract> searchCriterias)
        {
            ResultCriteriaContract resultCriteria = null;
            var nonMetadataCriterias = new List <SearchCriteriaContract>();
            var metadataCriterias    = new List <SearchCriteriaContract>();
            var conjunction          = new List <SearchCriteriaQuery>();
            var metadataParameters   = new Dictionary <string, object>();

            foreach (var searchCriteriaContract in searchCriterias)
            {
                if (m_searchCriteriaDirector.IsCriteriaSupported(searchCriteriaContract))
                {
                    var criteriaQuery = m_searchCriteriaDirector.ProcessCriteria(searchCriteriaContract,
                                                                                 metadataParameters);
                    conjunction.Add(criteriaQuery);
                    metadataCriterias.Add(searchCriteriaContract);
                }
                else
                {
                    nonMetadataCriterias.Add(searchCriteriaContract);

                    if (searchCriteriaContract.Key == CriteriaKey.Result)
                    {
                        resultCriteria = (ResultCriteriaContract)searchCriteriaContract;
                    }
                }
            }

            return(new FilteredCriterias
            {
                ResultCriteria = resultCriteria,
                MetadataParameters = metadataParameters,
                NonMetadataCriterias = nonMetadataCriterias,
                MetadataCriterias = metadataCriterias,
                ConjunctionQuery = conjunction
            });
        }