private void bExportSingleCover_Click(object sender, EventArgs e) { string fnd = txtSingleRecordId.Text.Substring(0, txtSingleRecordId.Text.IndexOf("_")); int id = int.Parse(txtSingleRecordId.Text.Substring(txtSingleRecordId.Text.IndexOf("_") + 1)); BJVuFindConverter converter = new BJVuFindConverter(fnd); converter.ExportSingleCover(id); }
static void BJIncrementUpdate(string Fund) { /////////////////////////////////////////////////////////////////////// //BJVuFindConverter converter1 = new BJVuFindConverter(Fund); //BJDatabaseWrapper wrapper1 = new BJDatabaseWrapper(Fund); //int IDMAIN1 = 909236; //DataTable BJRecord1 = wrapper1.GetBJRecord(IDMAIN1); //if (BJRecord1.Rows.Count == 0) //{ // return; //} //VufindDoc doc1 = converter1.CreateVufindDocument(IDMAIN1); /////////////////////////////////////////////////////////////////////// logger.Info("Начало инкрементной загрузки " + Fund + "..."); Console.WriteLine("Начало инкрементной загрузки " + Fund + "..."); BJVufindIndexUpdater bj = new BJVufindIndexUpdater(@"catalog.libfl.ru", Fund); //получаем инкремент List <IncrementStruct> Increment = new List <IncrementStruct>(); List <IncrementStruct> IncrementCovers = new List <IncrementStruct>(); try { Increment = (List <IncrementStruct>)bj.GetCurrentIncrement(); } catch (Exception ex) { logger.Error("Загрузка инкремента завершилось неудачей. " + ex.Message); Console.WriteLine("Error..."); //Console.ReadKey(); return; } logger.Info("Загрузка инкремента " + Fund + " успешно завершена..."); Console.WriteLine("Загрузка инкремента " + Fund + " успешно завершена..."); //вычленияем удалённые записи и удаляем их из индекса List <IncrementStruct> RemovedBooks = Increment.FindAll(x => x.Flag == "deleted"); List <IncrementStruct> UpdatedBooks = Increment.FindAll(x => x.Flag == "updated"); List <IncrementStruct> CoverUpdatedBooks = Increment.FindAll(x => x.Flag == "cover"); List <string> BooksToDeleteIds = new List <string>(); foreach (IncrementStruct elt in Increment) { StringBuilder sb = new StringBuilder(); if (elt.Flag != "cover") { sb.AppendFormat("{0}", elt.Id); BooksToDeleteIds.Add(sb.ToString()); } } Console.WriteLine("Начинаю удаление изменённых/удалённых " + Fund + " записей из индекса..."); logger.Info("Начинаю удаление изменённых/удалённых " + Fund + " записей из индекса..."); try { bj.DeleteFromIndex(BooksToDeleteIds);//удаляем сразу все одним запросом. } catch (Exception ex) { logger.Error("Удаление завершилось неудачей. \n" + ex.Message); Console.WriteLine("Удаление завершилось неудачей. \n" + ex.Message); //Console.ReadKey(); return; } foreach (string elt in BooksToDeleteIds) { StringBuilder sb = new StringBuilder(); sb.AppendFormat("Запись {0} удалена из индекса", elt); Console.WriteLine(sb.ToString()); logger.Info(sb.ToString()); } //теперь добавляем новые и изменяем изменённые. Изменённые заменяться автоматически Console.WriteLine("Начинаю обновление " + Fund + " изменённых записей..."); logger.Info("Начинаю обновление " + Fund + " изменённых записей..."); BJVuFindConverter converter = new BJVuFindConverter(Fund); List <VufindDoc> UpdatedBooksList = new List <VufindDoc>(); VufindDoc doc; //для отладки //UpdatedBooks = UpdatedBooks.Take(5).ToList(); try { foreach (IncrementStruct elt in UpdatedBooks) { BJDatabaseWrapper wrapper = new BJDatabaseWrapper(Fund); int IDMAIN = int.Parse(elt.Id.Substring(elt.Id.IndexOf("_") + 1)); DataTable BJRecord = wrapper.GetBJRecord(IDMAIN); if (BJRecord.Rows.Count == 0) { continue; } doc = converter.CreateVufindDocument(IDMAIN); if (doc == null) { continue; } UpdatedBooksList.Add(doc); } } catch (Exception ex) { logger.Error("Формирование списка обновляемых записей завершилось неудачей. \n" + ex.Message); Console.WriteLine("Error..."); } try { bj.AddToIndex(UpdatedBooksList); } catch (Exception ex) { logger.Error("Добавление в индекс завершилось неудачей. \n" + ex.Message); Console.WriteLine("Error..."); //Console.ReadKey(); return; } foreach (VufindDoc vfdoc in UpdatedBooksList) { StringBuilder sb = new StringBuilder(); sb.AppendFormat("Запись {0} обновлена. ", vfdoc.id); Console.WriteLine(sb.ToString()); logger.Info(sb.ToString()); } Console.WriteLine("Начинаю обновление обложек " + Fund + "..."); logger.Info("Начинаю обновление обложек " + Fund + "..."); foreach (IncrementStruct elt in CoverUpdatedBooks) { //скачиваем обложечку try { converter.ExportSingleCover(elt.Id); } catch (Exception ex) { Console.WriteLine("Скачивание обложки " + elt.Id + " завершилось неудачей. " + ex.Message); logger.Error("Скачивание обложки " + elt.Id + " завершилось неудачей. " + ex.Message); continue; } Console.WriteLine("Обложка " + elt.Id + " скачана успешно. "); logger.Info("Обложка " + elt.Id + " скачана успешно. "); } bj.SetLastIncrementDate(Fund); logger.Info("Завершено."); Console.WriteLine("Завершено."); }