private bool IsHeadwordChanged(HeadwordResource dbHeadword, IList <BookHeadwordData> headwordDataList, long bookVersionId) { var headwordData = headwordDataList.First(); if (dbHeadword.DefaultHeadword != headwordData.DefaultHeadword || dbHeadword.Sorting != headwordData.SortOrder || dbHeadword.BookVersion?.Id != bookVersionId || dbHeadword.HeadwordItems.Count != headwordDataList.Count) // lazy fetching collection { return(true); } var dbHeadwordItems = dbHeadword.HeadwordItems.OrderBy(x => x.HeadwordOriginal).ToArray(); for (int i = 0; i < headwordDataList.Count; i++) { var headword1 = dbHeadwordItems[i]; var headword2 = headwordDataList[i]; if (headword1.Headword != headword2.Headword || headword1.HeadwordOriginal != headword2.HeadwordOriginal) { return(true); } } return(false); }
public string GetHeadwordText(HeadwordResource headwordResource, TextFormatEnumContract format) { var transformation = GetTransformationOrDefault(format, BookTypeEnum.Dictionary); using (var ssc = m_communicationProvider.GetSearchServiceClient()) { var project = headwordResource.Resource.Project; var bookVersion = headwordResource.BookVersion; var result = ssc.GetDictionaryEntryByXmlId(project.ExternalId, bookVersion.ExternalId, headwordResource.ExternalId, transformation.Name, transformation.OutputFormat, transformation.ResourceLevel); return(result); } }
public virtual IList <string> GetHeadwordAutocomplete(string queryString, ProjectTypeEnum projectType, BookTypeEnum?bookType, IList <int> selectedCategoryIds, IList <long> selectedProjectIds, int count, int userId) { queryString = EscapeQuery(queryString); HeadwordResource headwordResourceAlias = null; Resource resourceAlias = null; Project projectAlias = null; Snapshot snapshotAlias = null; Permission permissionAlias = null; UserGroup userGroupAlias = null; User userAlias = null; BookType bookTypeAlias = null; Category categoryAlias = null; var query = GetSession().QueryOver <HeadwordItem>() .JoinAlias(x => x.HeadwordResource, () => headwordResourceAlias) .JoinAlias(() => headwordResourceAlias.Resource, () => resourceAlias) .JoinAlias(() => resourceAlias.Project, () => projectAlias) .JoinAlias(() => projectAlias.LatestPublishedSnapshot, () => snapshotAlias) .JoinAlias(() => projectAlias.Permissions, () => permissionAlias) .JoinAlias(() => permissionAlias.UserGroup, () => userGroupAlias) .JoinAlias(() => userGroupAlias.Users, () => userAlias) .Where(() => headwordResourceAlias.Id == resourceAlias.LatestVersion.Id && !resourceAlias.IsRemoved && userAlias.Id == userId && projectAlias.ProjectType == projectType && projectAlias.IsRemoved == false) .And(BitwiseExpression.On(() => permissionAlias.Flags).HasBit(PermissionFlag.ShowPublished)) .AndRestrictionOn(x => x.Headword).IsLike(queryString, MatchMode.Start) .Select(Projections.Distinct(Projections.Property <HeadwordItem>(x => x.Headword))) .OrderBy(x => x.Headword).Asc; if (bookType != null) { query.JoinAlias(() => snapshotAlias.BookTypes, () => bookTypeAlias) .Where(() => bookTypeAlias.Type == bookType.Value); } if (selectedCategoryIds.Count > 0 || selectedProjectIds.Count > 0) { query.JoinAlias(() => projectAlias.Categories, () => categoryAlias, JoinType.LeftOuterJoin) .Where(Restrictions.Or( Restrictions.InG(Projections.Property(() => categoryAlias.Id), selectedCategoryIds), Restrictions.InG(Projections.Property(() => projectAlias.Id), selectedProjectIds) )); } return(query .Take(count) .List <string>()); }
private void CreateHeadwordResource(int version, Resource resource, List <BookHeadwordData> headwordDataList, User user, DateTime now, BookVersionResource bookVersion, Dictionary <string, PageResource> dbPagesByImage) { var firstHeadwordData = headwordDataList.First(); var newDbHeadword = new HeadwordResource { Resource = resource, BookVersion = bookVersion, Comment = null, CreateTime = now, CreatedByUser = user, VersionNumber = version, HeadwordItems = null, // Headword Items are created in following for-each ExternalId = firstHeadwordData.XmlEntryId, DefaultHeadword = firstHeadwordData.DefaultHeadword, Sorting = firstHeadwordData.SortOrder, }; resource.LatestVersion = newDbHeadword; m_resourceRepository.Create(newDbHeadword); m_importedResourceVersionIds.Add(newDbHeadword.Id); foreach (var bookHeadwordData in headwordDataList) { var dbPage = GetPageResourceByImage(dbPagesByImage, bookHeadwordData.Image); var newDbHeadwordItem = new HeadwordItem { HeadwordResource = newDbHeadword, Headword = bookHeadwordData.Headword, HeadwordOriginal = bookHeadwordData.HeadwordOriginal, ResourcePage = dbPage?.Resource }; m_resourceRepository.Create(newDbHeadwordItem); } }
public string GetHeadwordTextFromSearch(HeadwordResource headwordResource, TextFormatEnumContract format, SearchPageRequestContract searchRequest) { throw new NotSupportedException("Headwords/dictionaries are not supported in ElasticSearch storage."); }
public string CreateNewHeadwordVersion(HeadwordResource headwordResource) { throw new NotSupportedException("Headwords/dictionaries are not supported in ElasticSearch storage."); }
public string CreateNewHeadwordVersion(HeadwordResource headwordResource) { throw new NotSupportedException("Saving resources to eXist-db isn't supported. eXist-db storage supports only full book import."); }