Example #1
0
 public BookBase(Book[] bs, String p)
 {
     //books = new Books();
     //books.books = bs;
     books = bs;
     path = p;
     if (!Save()) throw new ArgumentException();
 }
Example #2
0
        /// <summary>
        /// Проверяет удовлетворяет ли данная книга, некоторой маске
        /// </summary>
        /// <param name="mask">Маска</param>
        public static bool likeMask(this Book b, Book mask)
        {
            bool result = ((b.title == mask.title) || (mask.title == "")) &&
                        ((b.author == mask.author) || (mask.author == "")) &&
                        ((Math.Abs(b.pages - mask.pages) < 10) || (mask.pages == 0)) &&
                        ((b.price <= mask.price) || (mask.price == 0));

            //&&((b.from.name == mask.from.name) || (mask.from.name == ""));

            if (mask.tags == null) return result;

            int i, j, count = 0;
            for (i = 0; i < b.tags.Length; i++)
                for (j = 0; j < mask.tags.Length; j++)
                    if (b.tags[i] == mask.tags[j]) count++;

            result = result && (count == mask.tags.Length);

            return result;
        }
Example #3
0
 public void AddHistory(Book[] newBooks)
 {
     history.Add(newBooks);
 }
Example #4
0
 /// <summary>
 /// Конструктор события ответа на запрос
 /// </summary>
 /// <param name="ans">Потоко небезопасная передача ответа на запрос</param>
 public QueryEventArgs(Book[] ans, int[] ids)
 {
     Answer = ans;
     Indexes = ids;
 }
Example #5
0
        public void OnQuery(Book mask)
        {
            if (AllBase==null) return;
            List<Book> Result = new List<Book>();
            List<int> Indexes = new List<int>();
            /*
            foreach (BookBase bb in AllBase)
            {
                Result.AddRange(
                    from b in bb.books.books
                    where b.likeMask(mask)
                    select b
                    );
            }
             */
            int ids = 0;
            for (int i = 0; i < AllBase.Length; i++)
            {
                for (int j = 0; j < AllBase[i].books.Length; j++)
                {
                    ids++;
                    if (AllBase[i].books[j].likeMask(mask))
                    {
                        Result.Add(AllBase[i].books[j]);
                        Indexes.Add(ids);
                    }
                }
            }

            Query(this, new QueryEventArgs(Result.ToArray(), Indexes.ToArray()));
        }