public SearchCriteriaQuery CreateCriteriaQuery(SearchCriteriaContract searchCriteriaContract, Dictionary <string, object> metadataParameters)
        {
            var wordListCriteria     = (WordListCriteriaContract)searchCriteriaContract;
            var responsiblesAlias    = string.Format("r{0}", Guid.NewGuid().ToString("N"));
            var responsibleTypeAlias = string.Format("t{0}", Guid.NewGuid().ToString("N"));
            var whereBuilder         = new StringBuilder();

            foreach (WordCriteriaContract wordCriteria in wordListCriteria.Disjunctions)
            {
                if (whereBuilder.Length > 0)
                {
                    whereBuilder.Append(" or");
                }

                var uniqueParameterName = string.Format("up{0}", Guid.NewGuid().ToString("N"));
                whereBuilder.AppendFormat(" {0}.Text like (:{1})", responsiblesAlias, uniqueParameterName);
                metadataParameters.Add(uniqueParameterName, CriteriaConditionBuilder.Create(wordCriteria));
            }

            return(new SearchCriteriaQuery
            {
                Join = string.Format("inner join bv.Responsibles {0} inner join {0}.ResponsibleType {1}", responsiblesAlias, responsibleTypeAlias),
                Where = string.Format("{0}.Text like 'Editor' and ({1})", responsibleTypeAlias, whereBuilder),
            });
        }
Example #2
0
        public SearchCriteriaQuery ProcessCriteria(SearchCriteriaContract searchCriteriaContract, Dictionary <string, object> metadataParameters)
        {
            ICriteriaImplementationBase criteriaImplementation;

            if (!m_criteriaImplementations.TryGetValue(searchCriteriaContract.Key, out criteriaImplementation))
            {
                throw new ArgumentException("Criteria key not found");
            }
            return(criteriaImplementation.CreateCriteriaQuery(searchCriteriaContract, metadataParameters));
        }
Example #3
0
 public static SearchCriteriaContract ConvertToRegexCriteria(SearchCriteriaContract searchCriteriaContract)
 {
     if (searchCriteriaContract is WordListCriteriaContract)
     {
         return(ConvertToRegexCriteria((WordListCriteriaContract)searchCriteriaContract));
     }
     if (searchCriteriaContract is TokenDistanceListCriteriaContract)
     {
         return(ConvertToRegexCriteria((TokenDistanceListCriteriaContract)searchCriteriaContract));
     }
     return(searchCriteriaContract);
 }
Example #4
0
        public SearchCriteriaQuery CreateCriteriaQuery(SearchCriteriaContract searchCriteriaContract, Dictionary <string, object> metadataParameters)
        {
            var datingListCriteriaContract = (DatingListCriteriaContract)searchCriteriaContract;

            var whereBuilder = new StringBuilder();

            foreach (DatingCriteriaContract datingCriteriaContract in datingListCriteriaContract.Disjunctions)
            {
                if (whereBuilder.Length > 0)
                {
                    whereBuilder.Append(" or ");
                }

                var notBeforeUsed = false;
                whereBuilder.Append("(");

                if (datingCriteriaContract.NotBefore != null)
                {
                    notBeforeUsed = true;

                    var uniqueParameterName = $"param{metadataParameters.Count}";
                    whereBuilder.AppendFormat("metadata.NotAfter >= (:{0})", uniqueParameterName);
                    metadataParameters.Add(uniqueParameterName, datingCriteriaContract.NotBefore.Value);
                }

                if (datingCriteriaContract.NotAfter != null)
                {
                    if (notBeforeUsed)
                    {
                        whereBuilder.Append(" and ");
                    }

                    var uniqueParameterName = $"param{metadataParameters.Count}";
                    whereBuilder.AppendFormat("metadata.NotBefore <= (:{0})", uniqueParameterName);
                    metadataParameters.Add(uniqueParameterName, datingCriteriaContract.NotAfter.Value);
                }
                whereBuilder.Append(")");
            }

            return(new SearchCriteriaQuery
            {
                CriteriaKey = CriteriaKey,
                Join = string.Empty,
                Where = whereBuilder.ToString(),
            });
        }
Example #5
0
        public SearchCriteriaQuery CreateCriteriaQuery(SearchCriteriaContract searchCriteriaContract, Dictionary <string, object> metadataParameters)
        {
            var wordListCriteria        = (WordListCriteriaContract)searchCriteriaContract;
            var projectResponsibleAlias = string.Format("prp{0:N}", Guid.NewGuid());
            var responsiblePersonAlias  = string.Format("rp{0:N}", Guid.NewGuid());
            var responsibleTypeAlias    = string.Format("rt{0:N}", Guid.NewGuid());
            var whereBuilder            = new StringBuilder();

            if (wordListCriteria.Disjunctions.Count > 0)
            {
                whereBuilder.Append('(');

                foreach (WordCriteriaContract wordCriteria in wordListCriteria.Disjunctions)
                {
                    if (whereBuilder.Length > 1)
                    {
                        whereBuilder.Append(" or");
                    }

                    var uniqueParameterName = $"param{metadataParameters.Count}";
                    whereBuilder.AppendFormat(" concat({0}.FirstName, ' ', {0}.LastName) like (:{1}) ", responsiblePersonAlias, uniqueParameterName);
                    whereBuilder.AppendFormat(" or concat({0}.LastName, ' ', {0}.FirstName) like (:{1}) ", responsiblePersonAlias, uniqueParameterName);
                    metadataParameters.Add(uniqueParameterName, CriteriaConditionBuilder.Create(wordCriteria));
                }

                whereBuilder.Append(')');
            }

            if (whereBuilder.Length > 0)
            {
                whereBuilder.Append(" and ");
            }

            var responsibleTypeParameter = $"param{metadataParameters.Count}";

            whereBuilder.AppendFormat("{0}.Type = :{1}", responsibleTypeAlias, responsibleTypeParameter);
            metadataParameters.Add(responsibleTypeParameter, ResponsibleTypeEnum.Editor);

            return(new SearchCriteriaQuery
            {
                CriteriaKey = CriteriaKey,
                Join = string.Format("inner join project.ResponsiblePersons {0} inner join {0}.ResponsiblePerson {1} inner join {0}.ResponsibleType {2}", projectResponsibleAlias, responsiblePersonAlias, responsibleTypeAlias),
                Where = whereBuilder.ToString(),
            });
        }
        public SearchCriteriaQuery CreateCriteriaQuery(SearchCriteriaContract searchCriteriaContract, Dictionary <string, object> metadataParameters)
        {
            var datingListCriteriaContract = (DatingListCriteriaContract)searchCriteriaContract;
            var manuscriptAlias            = string.Format("m{0}", Guid.NewGuid().ToString("N"));
            var whereBuilder = new StringBuilder();

            foreach (DatingCriteriaContract datingCriteriaContract in datingListCriteriaContract.Disjunctions)
            {
                if (whereBuilder.Length > 0)
                {
                    whereBuilder.Append(" or ");
                }

                var notBeforeUsed = false;
                whereBuilder.Append("(");

                if (datingCriteriaContract.NotBefore != null)
                {
                    notBeforeUsed = true;

                    var uniqueParameterName = string.Format("up{0}", Guid.NewGuid().ToString("N"));
                    whereBuilder.AppendFormat("{0}.NotAfter >= (:{1})", manuscriptAlias, uniqueParameterName);
                    metadataParameters.Add(uniqueParameterName, datingCriteriaContract.NotBefore.Value);
                }

                if (datingCriteriaContract.NotAfter != null)
                {
                    if (notBeforeUsed)
                    {
                        whereBuilder.Append(" and ");
                    }

                    var uniqueParameterName = string.Format("up{0}", Guid.NewGuid().ToString("N"));
                    whereBuilder.AppendFormat("{0}.NotBefore <= (:{1})", manuscriptAlias, uniqueParameterName);
                    metadataParameters.Add(uniqueParameterName, datingCriteriaContract.NotAfter.Value);
                }
                whereBuilder.Append(")");
            }

            return(new SearchCriteriaQuery
            {
                Join = string.Format("inner join bv.ManuscriptDescriptions {0}", manuscriptAlias),
                Where = whereBuilder.ToString(),
            });
        }
        public void AddCriteria(SearchCriteriaContract contract)
        {
            var wordListCriteria = contract as WordListCriteriaContract;

            if (contract.Key != CriteriaKey || wordListCriteria == null)
            {
                return;
            }

            var newCriteria = new ConjunctionCriteria();

            foreach (var wordCriteria in wordListCriteria.Disjunctions)
            {
                newCriteria.Disjunctions.Add(CriteriaConditionBuilder.Create(wordCriteria));
            }

            CriteriaList.Add(newCriteria);
        }
        public SearchCriteriaQuery CreateCriteriaQuery(SearchCriteriaContract searchCriteriaContract, Dictionary <string, object> metadataParameters)
        {
            var authorizationCriteria = (AuthorizationCriteriaContract)searchCriteriaContract;

            var bookAlias       = string.Format("ba{0}", Guid.NewGuid().ToString("N"));
            var permissionAlias = string.Format("pa{0}", Guid.NewGuid().ToString("N"));
            var groupAlias      = string.Format("ga{0}", Guid.NewGuid().ToString("N"));
            var userAlias       = string.Format("ua{0}", Guid.NewGuid().ToString("N"));

            var userUniqueParameterName = string.Format("up{0}", Guid.NewGuid().ToString("N"));

            metadataParameters.Add(userUniqueParameterName, authorizationCriteria.UserId);

            return(new SearchCriteriaQuery
            {
                Join = string.Format("inner join bv.Book {0} inner join {0}.Permissions {1} inner join {1}.Group {2} inner join {2}.Users {3}", bookAlias, permissionAlias, groupAlias, userAlias),
                Where = string.Format("{0}.Id = (:{1})", userAlias, userUniqueParameterName),
            });
        }
        public SearchCriteriaQuery CreateCriteriaQuery(SearchCriteriaContract searchCriteriaContract, Dictionary <string, object> metadataParameters)
        {
            var selectedCategoryContract = (SelectedCategoryCriteriaContract)searchCriteriaContract;
            var subcategoryIds           = m_categoryRepository.GetAllSubcategoryIds(selectedCategoryContract.SelectedCategoryIds);

            var categoryAlias = string.Format("c{0}", Guid.NewGuid().ToString("N"));
            var bookAlias     = string.Format("b{0}", Guid.NewGuid().ToString("N"));
            var whereBuilder  = new StringBuilder();

            var bookUniqueParameterName     = string.Format("up{0}", Guid.NewGuid().ToString("N"));
            var categoryUniqueParameterName = string.Format("up{0}", Guid.NewGuid().ToString("N"));

            whereBuilder.Append(" (");

            if (selectedCategoryContract.SelectedBookIds != null && selectedCategoryContract.SelectedBookIds.Count > 0)
            {
                whereBuilder.Append(string.Format("{0}.Id in (:{1})", bookAlias, bookUniqueParameterName));
                metadataParameters.Add(bookUniqueParameterName, selectedCategoryContract.SelectedBookIds);
            }

            if ((selectedCategoryContract.SelectedBookIds != null && selectedCategoryContract.SelectedBookIds.Count > 0) &&
                (subcategoryIds != null && subcategoryIds.Count > 0))
            {
                whereBuilder.Append(" or ");
            }

            if (subcategoryIds != null && subcategoryIds.Count > 0)
            {
                whereBuilder.Append(string.Format("{0}.Id in (:{1})", categoryAlias, categoryUniqueParameterName));
                metadataParameters.Add(categoryUniqueParameterName, subcategoryIds);
            }

            whereBuilder.Append(" )");

            return(new SearchCriteriaQuery
            {
                Join = string.Format("inner join bv.Categories {0} inner join bv.Book {1}", categoryAlias, bookAlias),
                Where = whereBuilder.ToString()
            });
        }
        public SearchCriteriaQuery CreateCriteriaQuery(SearchCriteriaContract searchCriteriaContract, Dictionary <string, object> metadataParameters)
        {
            HeadwordItem headwordItemAlias = null;
            var          wordListCriteria  = (WordListCriteriaContract)searchCriteriaContract;
            var          disjunction       = new Disjunction();

            foreach (WordCriteriaContract wordCriteria in wordListCriteria.Disjunctions)
            {
                var parameter   = CriteriaConditionBuilder.Create(wordCriteria);
                var restriction = Restrictions.Like(Projections.Property(() => headwordItemAlias.Headword), parameter, MatchMode.Exact);

                disjunction.Add(restriction);
            }

            return(new SearchCriteriaQuery
            {
                CriteriaKey = CriteriaKey,
                Join = string.Empty,
                Where = string.Empty,
                Restriction = disjunction,
            });
        }
        public SearchCriteriaQuery CreateCriteriaQuery(SearchCriteriaContract searchCriteriaContract, Dictionary <string, object> metadataParameters)
        {
            var wordListCriteria = (WordListCriteriaContract)searchCriteriaContract;
            var whereBuilder     = new StringBuilder();

            foreach (WordCriteriaContract wordCriteria in wordListCriteria.Disjunctions)
            {
                if (whereBuilder.Length > 0)
                {
                    whereBuilder.Append(" or");
                }

                var uniqueParameterName = string.Format("up{0}", Guid.NewGuid().ToString("N"));
                whereBuilder.AppendFormat(" bv.Title like (:{0})", uniqueParameterName);
                metadataParameters.Add(uniqueParameterName, CriteriaConditionBuilder.Create(wordCriteria));
            }

            return(new SearchCriteriaQuery
            {
                Join = string.Empty,
                Where = whereBuilder.ToString(),
            });
        }
        public SearchCriteriaQuery CreateCriteriaQuery(SearchCriteriaContract searchCriteriaContract, Dictionary <string, object> metadataParameters)
        {
            var authorizationCriteria = (AuthorizationCriteriaContract)searchCriteriaContract;

            var permissionAlias = string.Format("p{0:N}", Guid.NewGuid());
            var userGroupAlias  = string.Format("ug{0:N}", Guid.NewGuid());
            var userAlias       = string.Format("u{0:N}", Guid.NewGuid());

            var userParameterName = $"param{metadataParameters.Count}";

            metadataParameters.Add(userParameterName, authorizationCriteria.UserId);

            var flagParameterName = $"param{metadataParameters.Count}";

            metadataParameters.Add(flagParameterName, PermissionFlag.ShowPublished);

            return(new SearchCriteriaQuery
            {
                CriteriaKey = CriteriaKey,
                Join = string.Format("inner join project.Permissions {0} inner join {0}.UserGroup {1} inner join {1}.Users {2}", permissionAlias, userGroupAlias, userAlias),
                Where = $"{userAlias}.Id = (:{userParameterName}) and ({permissionAlias}.Flags & :{flagParameterName} = :{flagParameterName})",
            });
        }
        public SearchCriteriaQuery CreateCriteriaQuery(SearchCriteriaContract searchCriteriaContract, Dictionary <string, object> metadataParameters)
        {
            var selectedCategoryContract = (SelectedCategoryCriteriaContract)searchCriteriaContract;
            var projectIds = selectedCategoryContract.SelectedBookIds == null || selectedCategoryContract.SelectedBookIds.Count == 0
                ? null
                : selectedCategoryContract.SelectedBookIds;
            var subcategoryIds = selectedCategoryContract.SelectedCategoryIds == null || selectedCategoryContract.SelectedCategoryIds.Count == 0
                ? null
                : m_categoryRepository.InvokeUnitOfWork(x => x.GetAllSubcategoryIds(selectedCategoryContract.SelectedCategoryIds));

            if (subcategoryIds == null || subcategoryIds.Count == 0)
            {
                subcategoryIds = null;
            }

            var whereBuilder = new StringBuilder();
            var joinBuilder  = new StringBuilder();


            if (selectedCategoryContract.BookType != null)
            {
                var bookTypeParameterName = $"param{metadataParameters.Count}";

                joinBuilder.Append("inner join snapshot.BookTypes bookType ");
                whereBuilder.AppendFormat("bookType.Type = :{0}", bookTypeParameterName);
                metadataParameters.Add(bookTypeParameterName, selectedCategoryContract.BookType);
            }

            if (subcategoryIds != null || projectIds != null)
            {
                if (whereBuilder.Length > 0)
                {
                    whereBuilder.Append(" and");
                }

                whereBuilder.Append(" (");

                if (subcategoryIds != null)
                {
                    var categoryUniqueParameterName = $"param{metadataParameters.Count}";

                    //joinBuilder.Append("left join project.Categories category ");
                    //whereBuilder.AppendFormat("category.Id in (:{0})", categoryUniqueParameterName);
                    whereBuilder.AppendFormat(
                        "project.Id in (select project_c.Id from Project project_c inner join project_c.Categories category_c where category_c.Id in (:{0}))",
                        categoryUniqueParameterName);
                    metadataParameters.Add(categoryUniqueParameterName, subcategoryIds);
                }

                if (subcategoryIds != null && projectIds != null)
                {
                    whereBuilder.Append(" or ");
                }

                if (projectIds != null)
                {
                    var bookUniqueParameterName = $"param{metadataParameters.Count}";

                    whereBuilder.AppendFormat("project.Id in (:{0})", bookUniqueParameterName);
                    metadataParameters.Add(bookUniqueParameterName, projectIds);
                }

                whereBuilder.Append(" )");
            }

            return(new SearchCriteriaQuery
            {
                CriteriaKey = CriteriaKey,
                Join = joinBuilder.ToString(),
                Where = whereBuilder.ToString()
            });
        }
Example #14
0
        public bool IsCriteriaSupported(SearchCriteriaContract searchCriteriaContract)
        {
            var criteriaKey = searchCriteriaContract.Key;

            return(m_supportedCriteriaSet.Contains(criteriaKey));
        }
Example #15
0
        public bool IsCriteriaSupported(SearchCriteriaContract searchCriteriaContract)
        {
            var criteriaKey = searchCriteriaContract.Key;

            return(m_criteriaImplementations.ContainsKey(criteriaKey));
        }