/// <summary>
 /// Инициализирует объект CounterWriter
 /// </summary>
 /// <param name="counter">Объект WordsCounter</param>
 /// <param name="dbConnectionString">Строка с параметрами подключения к БД</param>
 public CounterDbWriter(WordsCounter counter, string dbConnectionString) : base(counter)
 {
     this.dbConnectionString = dbConnectionString;
 }
 /// <summary>
 /// Инициализирует объект CounterFileWriter
 /// </summary>
 /// <param name="counter">Объект WordsCounter</param>
 /// <param name="fileName">Имя файла для вывода значений WordsCounter</param>
 public CounterFileWriter(WordsCounter counter, string fileName) : base(counter)
 {
     this.fileName = fileName;
 }
Example #3
0
        static void Main(string[] args)
        {
            Logger.Configure("log.txt");

            // Выделение переданных параметров
            string pagePath     = string.Empty;
            string dbConnectStr = string.Empty;
            string outFile      = string.Empty;
            string encodingStr  = string.Empty;

            if (args.Length < 1)
            {
                Logger.Log("Передано недостаточно параметров", LogMessageLevel.Error);
                Console.WriteLine("\r\nНажмите любую клавишу для завершения...");
                Console.ReadKey();
                return;
            }

            pagePath = args[0];

            if (args.Length > 0)
            {
                pagePath = args[0];
            }

            for (int narg = 1; narg < args.Length; narg++)
            {
                // Параметры соединения с БД
                if ((args[narg] == "--dbconnect") && ((narg + 1) < args.Length))
                {
                    dbConnectStr = args[narg + 1];
                }
                // Файл с результатами
                if ((args[narg] == "--out") && ((narg + 1) < args.Length))
                {
                    outFile = args[narg + 1];
                }
                // Кодировка
                if ((args[narg] == "--encoding") && ((narg + 1) < args.Length))
                {
                    encodingStr = args[narg + 1];
                }
            }

            // Получение кодировки на основе переданного значения
            Encoding encoding = null;

            try
            {
                if (!string.IsNullOrEmpty(encodingStr))
                {
                    encoding = Encoding.GetEncoding(encodingStr);
                }
            }
            catch (Exception e)
            {
                Logger.LogError(string.Format("Ошибка при определении кодировки {0}", encodingStr), e.ToString());
                return;
            }


            // Создание объекта для подсчета слов
            char[] separators = new char[] { ' ', '\t', '\r', '\n', '.', ',', '-', '(', ')',
                                             '<', '>', '{', '}', '[', ']', '\'', '\"', ':', ';', '!', '?' };
            WordsCounter counter = new WordsCounter(separators);

            // Создание структуры для html-страницы
            HtmlDocument doc = new HtmlDocument();

            // Определение действий при изменении прогресса загрузки и обработки
            doc.DownloadProgressChange += Root_DownloadProgressChange;
            doc.DownloadCompleted      += (sender) => { Console.WriteLine(); };
            doc.LoadHtmlProgressChange += Root_LoadHtmlProgressChange;
            doc.LoadHtmlCompleted      += (sender) => { Console.WriteLine(); };

            Logger.Log("Начало загрузки страницы " + pagePath);

            // Загрузка страницы
            bool ok = doc.LoadTextBlocks(pagePath, counter.AddWords, encoding);

            if (ok)
            {
                // Вывод результатов подсчета
                CounterWriter writer = new CounterConsoleWriter(counter);

                // Выбор записи результатов подсчета в БД
                if (!string.IsNullOrEmpty(dbConnectStr))
                {
                    writer = new CounterDbWriter(writer, dbConnectStr);
                }

                // Выбор записи результатов подсчета в файл
                if (!string.IsNullOrEmpty(outFile))
                {
                    writer = new CounterFileWriter(writer, outFile);
                }

                writer.Write();
            }
            Console.WriteLine();
            Logger.Log("Обработка завершена");

            Console.WriteLine("\r\nНажмите любую клавишу для завершения...");
            Console.ReadKey();
        }
Example #4
0
 /// <summary>
 /// Инициализирует объект CounterConsoleWriter
 /// </summary>
 /// <param name="counter">Объект WordsCounter</param>
 public CounterConsoleWriter(WordsCounter counter) : base(counter)
 {
 }
Example #5
0
 /// <summary>
 /// Инициализирует объект CounterWriter
 /// </summary>
 /// <param name="counter">Объект WordsCounter</param>
 public CounterWriter(WordsCounter counter)
 {
     this.wrappee = null;
     this.counter = counter;
 }
Example #6
0
 /// <summary>
 /// Инициализирует объект CounterWriter
 /// </summary>
 /// <param name="wrappee">Дополнительный обработчик CounterWriter</param>
 public CounterWriter(CounterWriter wrappee)
 {
     this.wrappee = wrappee;
     this.counter = wrappee?.counter;
 }
Example #7
0
 /// <summary>
 /// Инициализирует объект CounterWriter
 /// </summary>
 public CounterWriter()
 {
     this.wrappee = null;
     this.counter = null;
 }