Esempio n. 1
0
        private void TestBigFileDump_File(string BIG_FILE, string FOLDER_PATH_FOR_CHUNK_FILES)
        {
            // Start processing the input Big file.
            StreamReader reader = new StreamReader(BIG_FILE);
            // Create a dump file class object to handle efficient memory management.
            var bigFileDumper = new BigFileDumper(FOLDER_PATH_FOR_CHUNK_FILES);

            // Reverse the list of commands as we would want the deepest leaf folder to be processed first.
            bigFileDumper.ReverseIt  = true;
            bigFileDumper.CHUNK_SIZE = 100; // How much at a time to keep in RAM before dumping to local file.

            while (reader.EndOfStream == false)
            {
                string line = reader.ReadLine();
                bigFileDumper.WriteLine(line);
            }
            bigFileDumper.Close();
            reader.Close();

            // Get back full reversed file.
            var reversedFilename = bigFileDumper.GetFullFile();

            Console.WriteLine("Check output file - " + reversedFilename);

            // Delete the temporary folders.
            bigFileDumper.CleanEverything();
        }
Esempio n. 2
0
        private void WriteTheBatchFile(ref BigFileDumper bigFileDumper)
        {
            // Read from the big file.
            string bigFile = bigFileDumper.GetFullFile();

            if (!File.Exists(bigFile))
            {
                MessageBox.Show("Something Went Wrong, no tempFile Generated.");
                return;
            }

            var bigFileReader = new StreamReader(bigFile);

            // Make the output bat file file ready.
            StreamWriter writer = new StreamWriter(batOutputFile);

            // First line is to change to working directory.
            writer.WriteLine("cd " + tbxMappedFolder.Text);
            writer.WriteLine(tbxMappedFolder.Text.Substring(0, 2));
            string echoline = "";
            int    count    = 0;

            long totalcount = bigFileDumper.TotalLineCount;

            while (!bigFileReader.EndOfStream)
            {
                // Echo line at each 10th folder.
                count++;
                if (count % 10 == 0)
                {
                    echoline = String.Format("echo ********** {0} of {1} FOLDERS UPDATED ***********", count, totalcount);
                    writer.WriteLine(echoline);
                }
                writer.WriteLine(bigFileReader.ReadLine());
            }
            writer.Close();
            bigFileReader.Close();

            // Delete the temporary folders.
            bigFileDumper.CleanEverything();
        }
Esempio n. 3
0
        private void TestBigFileDump(string foldername)
        {
            if (Directory.Exists(foldername))
            {
                var bigfileDumper = new BigFileDumper(foldername);
                bigfileDumper.ReverseIt = true;

                for (int i = 0; i < 10000; i++)
                {
                    bigfileDumper.WriteLine(String.Format("{0}", i));
                }
                bigfileDumper.Close();

                // Get back full reversed file.
                var reversedFilename = bigfileDumper.GetFullFile();

                Console.WriteLine("Check output file - " + reversedFilename);
            }
            else
            {
                Console.WriteLine("Invalid folder path");
            }
        }
Esempio n. 4
0
        private void btnGenerateBat_Click(object sender, EventArgs e)
        {
            if (String.IsNullOrEmpty(tbxMappedFolder.Text) || String.IsNullOrEmpty(tbxTFSDirPath.Text))
            {
                MessageBox.Show("Empty source or destination folders");
            }
#if DEBUG
            if (cbxNoTFSDEBUG.Checked)
            {
                TestBigFileDump_File(@"D:\fusion\components\global\src\crxapps\AcFusionService\AcFusionDocInteropStub.cpp", @"H:\");
                return;
            }
#endif
            // Save Last settings.
            Properties.Settings.Default.settingServerFolder = tbxTFSDirPath.Text;
            Properties.Settings.Default.settingLocalFolder  = tbxMappedFolder.Text;
            Properties.Settings.Default.Save();

            var batOutFolder = tbxMappedFolder.Text;

            // Disable the buttons.
            btnGenerateBat.Enabled = false;
            btnRunBat.Enabled      = false;

            string lastFoldername = GetBatNameFromSource(tbxTFSDirPath.Text);

            directoryListFile = batOutFolder.TrimEnd(trimchars) + "\\" + lastFoldername + "_DIR.txt";

            batOutputFile       = batOutFolder.TrimEnd(trimchars) + "\\" + lastFoldername + ".bat";
            lblBatFileInfo.Text = "Check batch file at: " + batOutputFile;

            // Call Tf.exe and get the list of subdirectories. IMP.
            bool success = GenerateDirectoryList(ref directoryListFile, tbxTFSDirPath.Text);

            // delete existing file if any.
            if (File.Exists(batOutputFile) == true)
            {
                File.Delete(batOutputFile);
            }

            // Start processing the input directory file.
            StreamReader reader = new StreamReader(directoryListFile);
            // Create a dump file class object to handle efficient memory management.
            var bigFileDumper = new BigFileDumper(batOutFolder.TrimEnd(trimchars));
            // Reverse the list of commands as we would want the deepest leaf folder to be processed
            // first.
            bigFileDumper.ReverseIt = true;

            string masterFolder = tbxTFSDirPath.Text;
            //var linesToWrite = new List<string>();
            while (reader.EndOfStream == false)
            {
                string line = reader.ReadLine();
                // Now, we will only consider the lines which has full server folder path
                if (cbxRecursive.Checked)
                {
                    if (line.Contains(masterFolder))
                    {
                        line = line.TrimEnd(':');
                        // Add the tf command and option.
                        line = String.Format("TF.exe get {0} ", line); // It's already recursive because all folders are there.
                        // linesToWrite.Add(line);
                        bigFileDumper.WriteLine(line);
                    }
                }
                else
                {
                    if (line.Contains('$') && !line.Contains(masterFolder)) // take only chilren
                    {
                        line = masterFolder + "/" + line.TrimStart('$');
                        // Add the tf command and option.
                        line = String.Format("TF.exe get {0} /recursive", line);
                        //linesToWrite.Add(line);
                        bigFileDumper.WriteLine(line);
                    }
                }
            }
            bigFileDumper.Close();
            reader.Close();

            // Write the batch file with existing bigFileDumper.
            this.WriteTheBatchFile(ref bigFileDumper);

            btnGenerateBat.Enabled = true;
            btnRunBat.Enabled      = true;
            // Open the bat folder
            Process.Start("explorer.exe", tbxMappedFolder.Text);
        }