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), }); }
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)); }
public static SearchCriteriaContract ConvertToRegexCriteria(SearchCriteriaContract searchCriteriaContract) { if (searchCriteriaContract is WordListCriteriaContract) { return(ConvertToRegexCriteria((WordListCriteriaContract)searchCriteriaContract)); } if (searchCriteriaContract is TokenDistanceListCriteriaContract) { return(ConvertToRegexCriteria((TokenDistanceListCriteriaContract)searchCriteriaContract)); } return(searchCriteriaContract); }
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(), }); }
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() }); }
public bool IsCriteriaSupported(SearchCriteriaContract searchCriteriaContract) { var criteriaKey = searchCriteriaContract.Key; return(m_supportedCriteriaSet.Contains(criteriaKey)); }
public bool IsCriteriaSupported(SearchCriteriaContract searchCriteriaContract) { var criteriaKey = searchCriteriaContract.Key; return(m_criteriaImplementations.ContainsKey(criteriaKey)); }