/// <summary>
        /// Handler open file dialog, creates stream and it's reader
        /// </summary>
        private void openFileDialog1_FileOk_1(object sender, CancelEventArgs e)
        {
            stream_container = new Streams_Container();

            stream_container.stream_reader = Stream_controler.Create_Reader(openFileDialog1.FileName);
            stream_container.base_stream   = Stream_controler.Get_Base_Stream(stream_container.stream_reader);

            stream_container.input_file_path = openFileDialog1.FileName;

            stream_exists = true;
        }
/*
 *      /// <summary>
 *      /// Iterates through whole file and counts number of lines in it (Resets stream to origin)
 *      /// </summary>
 *     public static int Get_line_lenght(Streams_Container s_container)
 *     {
 *          int lenght = 0;
 *
 *          s_container = Move_Stream(s_container, (int)MoveMode.Start);
 *
 *          while(s_container.stream_reader.ReadLine()!=null)
 *          {
 *              lenght++;
 *          }
 *
 *          return lenght;
 *     }
 */

        public static void Generate_log(Streams_Container sc, string filename)
        {
            StreamWriter sw = sc.stream_writer;

            string line;

            long length = new System.IO.FileInfo((sc.input_file_path)).Length;

            sw.WriteLine("Big Data reader log");
            sw.WriteLine("Filename: " + filename);
            sw.WriteLine();
            sw.WriteLine(length);
            sw.WriteLine();
            sw.WriteLine("First 20 lines: ");
            sw.WriteLine();
            Stream_controler.Move_Stream(sc, (int)MoveMode.Start);
            for (int i = 0; i < 20; i++)
            {
                sw.WriteLine(sc.stream_reader.ReadLine());
            }
            sw.WriteLine();
            sw.WriteLine("Last 20 lines: ");
            sw.WriteLine();
            Stream_controler.Move_Stream(sc, (int)MoveMode.End);
            for (int i = 0; i < 20; i++)
            {
                line = sc.stream_reader.ReadLine();
                if (line == null)
                {
                    break;
                }
                sw.WriteLine(line);
            }
            sw.WriteLine();
            sw.WriteLine("End of log");

            sw.Flush();
            sw.Close();
        }
        public static Streams_Container Move_Stream(Streams_Container s_container, int OperationType, int amount = 0)
        {
            switch (OperationType)
            {
            case (int)(MoveMode.Start):
                s_container.base_stream.Seek(0, SeekOrigin.Begin);
                s_container.stream_reader.DiscardBufferedData();
                break;

            case (int)(MoveMode.End):
                long lenght = 0;
                lenght = s_container.base_stream.Length;
                s_container.base_stream.Seek(lenght - 100, SeekOrigin.Begin);
                s_container.stream_reader.DiscardBufferedData();
                break;

            case (int)(MoveMode.Amount):
                s_container.base_stream.Seek(amount, SeekOrigin.Current);
                s_container.stream_reader.DiscardBufferedData();
                break;
            }

            return(s_container);
        }