Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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>());
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
 public string GetHeadwordTextFromSearch(HeadwordResource headwordResource, TextFormatEnumContract format,
                                         SearchPageRequestContract searchRequest)
 {
     throw new NotSupportedException("Headwords/dictionaries are not supported in ElasticSearch storage.");
 }
Beispiel #6
0
 public string CreateNewHeadwordVersion(HeadwordResource headwordResource)
 {
     throw new NotSupportedException("Headwords/dictionaries are not supported in ElasticSearch storage.");
 }
Beispiel #7
0
 public string CreateNewHeadwordVersion(HeadwordResource headwordResource)
 {
     throw new NotSupportedException("Saving resources to eXist-db isn't supported. eXist-db storage supports only full book import.");
 }