예제 #1
0
 /// <summary>
 /// Возвращает версию объекта
 /// </summary>
 /// <param name="code"></param>
 /// <param name="objectType"></param>
 /// <returns></returns>
 public DateTime GetVersion(string code, WikiObjectType objectType)
 {
     CheckPersister();
     if (objectType == WikiObjectType.File)
     {
         return(Persister.GetBinaryVersion(code));
     }
     return(Persister.GetPageVersion(code));
 }
 /// <summary>
 /// Возвращает версию объекта
 /// </summary>
 /// <param name="code"></param>
 /// <param name="objectType"></param>
 /// <returns></returns>
 public DateTime GetVersion(string code, WikiObjectType objectType) {
     if (objectType == WikiObjectType.File) {
         return CurrentWikiPersister.GetBinaryVersion(code);
     }
     return CurrentWikiPersister.GetPageVersion(code);
 }
예제 #3
0
        /// <summary>
        /// Поиск объектов Wiki
        /// </summary>
        /// <param name="search"></param>
        /// <param name="count"></param>
        /// <param name="types"></param>
        /// <param name="start"></param>
        /// <returns></returns>
        public IEnumerable <WikiObjectDescriptor> Find(string search, int start = -1, int count = -1, WikiObjectType types = WikiObjectType.All)
        {
            CheckPersister();
            int currentIdx = 0;

            IEnumerable <WikiPage>   pageselector = types.HasFlag(WikiObjectType.Page)?Persister.FindPages(search):  null;
            IEnumerable <WikiBinary> binselector  = types.HasFlag(WikiObjectType.File) ? Persister.FindBinaries(search) : null;
            IEnumerator <WikiPage>   pageenum     = pageselector != null?pageselector.GetEnumerator() : null;

            IEnumerator <WikiBinary> fileenum = pageselector != null?binselector.GetEnumerator() : null;

            bool haspages = pageenum == null ? false : true;
            bool hasbins  = fileenum == null ? false : true;

            while (haspages || hasbins)
            {
                if (start != -1 && count != -1)
                {
                    if (currentIdx >= (start + count))
                    {
                        break;
                    }
                }
                if (haspages)
                {
                    haspages = pageenum.MoveNext();
                    if (haspages)
                    {
                        if (-1 == start || currentIdx >= start)
                        {
                            yield return(new WikiObjectDescriptor(pageenum.Current));
                        }
                        currentIdx++;
                        continue;
                    }
                }


                if (hasbins)
                {
                    hasbins = fileenum.MoveNext();
                    if (hasbins)
                    {
                        if (-1 == start || currentIdx >= start)
                        {
                            yield return(new WikiObjectDescriptor(fileenum.Current));
                        }
                        currentIdx++;
                        continue;
                    }
                }
            }
        }
        /// <summary>
        /// Поиск объектов Wiki
        /// </summary>
        /// <param name="search"></param>
        /// <param name="count"></param>
        /// <param name="types"></param>
        /// <param name="start"></param>
        /// <returns></returns>
        public IEnumerable<WikiObjectDescriptor> Find(string search, int start = -1, int count = -1, WikiObjectType types = WikiObjectType.All) {
            CheckPersister();
            int currentIdx = 0;

            IEnumerable<WikiPage> pageselector = types.HasFlag(WikiObjectType.Page) ? CurrentWikiPersister.FindPages(search) : null;
            IEnumerable<WikiBinary> binselector = types.HasFlag(WikiObjectType.File) ? CurrentWikiPersister.FindBinaries(search) : null;
            IEnumerator<WikiPage> pageenum = pageselector != null ? pageselector.GetEnumerator() : null;
            IEnumerator<WikiBinary> fileenum = pageselector != null ? binselector.GetEnumerator() : null;
            bool haspages = pageenum == null ? false : true;
            bool hasbins = fileenum == null ? false : true;
            while (haspages || hasbins) {
                if (start != -1 && count != -1) {
                    if (currentIdx >= (start + count)) {
                        break;
                    }
                }
                if (haspages) {
                    haspages = pageenum.MoveNext();
                    if (haspages) {

                        if (-1 == start || currentIdx >= start) {
                            yield return new WikiObjectDescriptor(pageenum.Current);
                        }
                        currentIdx++;
                        continue;
                    }
                }


                if (hasbins) {
                    hasbins = fileenum.MoveNext();
                    if (hasbins) {

                        if (-1 == start || currentIdx >= start) {
                            yield return new WikiObjectDescriptor(fileenum.Current);
                        }
                        currentIdx++;
                        continue;
                    }
                }

            }

        }