コード例 #1
0
        void btnMergeFiles_Click(object sender, EventArgs e)
        {
            if (!Paths.ValidateModsDirectory() ||
                (treConflicts.FileNodes.Any(node => ModFile.IsScript(node.Text)) && !Paths.ValidateScriptsDirectory()) ||
                (treConflicts.FileNodes.Any(node => ModFile.IsBundle(node.Text)) && !Paths.ValidateBundlesDirectory()))
            {
                return;
            }

            var mergedModName = Paths.RetrieveMergedModName();

            if (mergedModName == null)
            {
                return;
            }

            InitializeProgressScreen("Merging");

            Program.Inventory = MergeInventory.Load(Paths.Inventory);

            var merger = new FileMerger(Program.Inventory, OnMergeProgressChanged, OnMergeComplete);

            var fileNodes = treConflicts.FileNodes.Where(node => node.GetTreeNodes().Count(modNode => modNode.Checked) > 1);

            merger.MergeByTreeNodesAsync(fileNodes, mergedModName);
        }
コード例 #2
0
        public void MergeScripts_SomeFilesLackUseStatement_AggregatedFileOnlyOneUseStatement()
        {
            //Arrange
            var file1 = "use gtdb2_devel" + Environment.NewLine +
                        "Command 1" + Environment.NewLine +
                        "Command 2";

            var file2 = "Command 3";

            var file3 = " use [gtdb2_devel]" + Environment.NewLine +
                        "Command 4";

            //Act
            var outstream = new StringReader();
            var fileMerger = new FileMerger(outstream);
            fileMerger.Append(new StringReader(file1));
            fileMerger.Append(new StringReader(file2));
            fileMerger.Append(new StringReader(file3));

            //Assert
            var expected =
                "use <enter database>" + Environment.NewLine +
                "Command 1" + Environment.NewLine +
                "Command 2" + Environment.NewLine +
                "Command 3" + Environment.NewLine +
                "Command 4" + Environment.NewLine;
            var actual = outstream.GetReader().ReadToEnd();
            Assert.AreEqual(expected, actual);
        }
コード例 #3
0
        public bool MergeFile(Guid id, string name)
        {
            FileMerger merger = new FileMerger();

            merger.Merge(Path.Combine(Configurations.UploadsFolder, id.ToString()), name);
            return(true);
        }
コード例 #4
0
        public void Sort()
        {
            SingleSortedFiles = new List <string>();


            if (new FileInfo(InFile).Length < this.BufferSize)
            {
                var ssf = new SingleSortFile(InFile, OutFile, StringCompare, Encoding);
                ssf.SortFile();
            }
            else
            {
                // Split the Files
                this.Splitter.SplitFiles();

                // Sort Each File
                foreach (var file in this.Splitter.OutFiles)
                {
                    var t = file + ".OUT";
                    SingleSortedFiles.Add(t);
                    var ssf = new SingleSortFile(file, t, StringCompare, Encoding);
                    ssf.SortFile();
                }

                // Merge Them Back
                var fm = new FileMerger(new MergeFileOptions(SingleSortedFiles, OutFile, StringCompare)
                {
                    BufferSize = this.BufferSize, EstimatedRecordLength = this.EstimatedRecordLength
                });
                fm.MergeFiles();
            }
        }
コード例 #5
0
        private async Task handleNewFileWithExistingFile(WeatherDataCollection newWeatherCollection)
        {
            var existingFileDialog = new ContentDialog {
                Title               = "File Already Loaded",
                Content             = "A file has already been loaded, how would you like to handle this?",
                PrimaryButtonText   = "Replace Current File",
                SecondaryButtonText = "Merge the Files"
            };

            var result = await existingFileDialog.ShowAsync();

            switch (result)
            {
            case ContentDialogResult.Primary:
                this.currentWeatherCollection = newWeatherCollection;
                break;

            case ContentDialogResult.Secondary:
            {
                var fileMerger = new FileMerger();
                newWeatherCollection =
                    await fileMerger.MergeWeatherDataCollections(this.currentWeatherCollection, newWeatherCollection);

                this.currentWeatherCollection = newWeatherCollection;
                break;
            }
            }
        }
コード例 #6
0
        public void WriteResult(string outputFile)
        {
            WritePartition(false); // write last partition

            _buffer.Dispose();
            _buffer = null !;

            GC.Collect();

            var outputDirectory = Path.GetDirectoryName(Path.GetFullPath(outputFile));

            if (string.IsNullOrWhiteSpace(outputDirectory))
            {
                outputDirectory = ".";
            }
            var merger = new FileMerger(new MergeOptions
            {
                DeletePartitions = true,
                FileMask         = Constants.PartitionFileName,
                Folder           = outputDirectory,
                Output           = outputFile
            });

            merger.Merge();
        }
コード例 #7
0
        public void TestMethod1()
        {
            FileMerger m = new FileMerger();

            m.Merge(@"C:\Source\Repos\large-file-upload-from-browser\LargeFileUpload.Web\Content\Uploads\a3cedb61-0fcc-47e0-b05c-059139e07965",
                    "PRD_Standardization.docx");
            Assert.IsTrue(true);
        }
コード例 #8
0
        public void TestMoveFileMergerDup()
        {
            Merger();

            IFileHandler fileOverwriter = new FileMerger <Compress>(@"D:\TestFileHandler\FileMerger\Source",
                                                                    new List <string> {
                @"D:\TestFileHandler\FileMerger\Dest"
            }, _pr);

            fileOverwriter.MoveFiles();
            fileOverwriter.DeleteTemps();
        }
コード例 #9
0
        public void TestCopyFileMerger()
        {
            Initilize("FileMerger");

            IFileHandler fileOverwriter = new FileMerger <Compress>(@"D:\TestFileHandler\FileMerger\Source",
                                                                    new List <string> {
                @"D:\TestFileHandler\FileMerger\Source"
            }, _pr);

            fileOverwriter.CopyFiles();
            fileOverwriter.DeleteTemps();
        }
コード例 #10
0
        private void MergeFiles()
        {
            bool isSuccess = false;

            try
            {
                // updateLog(string.Format("\r\nStart Time: {0}", DateTime.Now.ToLongTimeString()));
                updateLog(string.Format(Properties.Resources.msgMerging, AppOptions.mergeOrigFile));
                Application.DoEvents();

                FileMerger _merger = new FileMerger(AppOptions.mergeOrigFile, AppOptions.mergeInPath, AppOptions.mergeInfoFile);
                _merger.OnProgress += new FileMerger.OnProgressDelegate(updateProgress);
                _merger.Merge();

                if (_merger.FilesCount.HasValue)
                {
                    updateLog(string.Format(Properties.Resources.msgMergeScc, _merger.FilesCount.Value));
                }
                else
                {
                    updateLog(Properties.Resources.errMergeNoFiles);
                }

                isSuccess = true;
                // updateLog(string.Format("End Time: {0}\r\n", DateTime.Now.ToLongTimeString()));
            }
            catch (Exception ex)
            {
                updateLog(string.Format(Properties.Resources.errMergeUnexp, ex.Message));
            }

            updateProgress(100);

            if (isSuccess)
            {
                MessageBox.Show(Properties.Resources.msbMergeFinished,
                                Properties.Resources.MergeTitle,
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show(Properties.Resources.errMerge,
                                Properties.Resources.MergeTitle,
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
            }

            changeButtonsView(true);
        }
コード例 #11
0
ファイル: Program.cs プロジェクト: teoadal/big-file
        private static int ExecuteMerge(MergeOptions options)
        {
            if (!options.Validate())
            {
                return(1);
            }

            var merger = new FileMerger(options);
            var timer  = Stopwatch.StartNew();

            var partitionCount = Directory.GetFiles(options.Folder, options.FileMask).Length;

            Console.WriteLine($"Merge {partitionCount} partition started...");

            merger.Merge();

            Console.WriteLine($"Partitions merge executed at {timer.Elapsed}");
            return(0);
        }
コード例 #12
0
        public void MergeFile(string id, string name)
        {
            FileMerger merger = new FileMerger();

            merger.Merge(Path.Combine(Configurations.UploadsFolder, id.ToString()), name);
        }
コード例 #13
0
ファイル: SqlScriptMerger.cs プロジェクト: KnutHjelvik/demo
 public SqlScriptMerger(FileMerger fileMerger, FileReader fileReader)
 {
     _fileReader  = fileReader;
     _innerMerger = fileMerger;
 }
コード例 #14
0
 public void It_Should_Merge_Files()
 {
     FileMerger.AssertWasCalled(x => x.Merge(Files1, Destination));
 }
コード例 #15
0
        private void ProcessFunctionFile(FunctionFileApp app, string fileName)
        {
            try
            {
                if (!File.Exists(fileName)) return;

                DateTime modified;
                if (!app.TryGetFileDate(fileName, out modified)) modified = DateTime.MinValue;

                if (modified == DateTime.MinValue || Math.Abs(File.GetLastWriteTime(fileName).Subtract(modified).TotalSeconds) >= 1.0)
                {
                    var merger = new FileMerger();
                    merger.MergeFile(fileName, false);

                    var fileTitle = Path.GetFileNameWithoutExtension(fileName);

                    var model = new CodeModel.CodeModel(merger.MergedContent, fileName);
                    var funcs = (from f in model.FunctionSignatures
                                 where string.Equals(f.Name, fileTitle, StringComparison.OrdinalIgnoreCase)
                                 select f).ToArray();
                    if (funcs.Length > 0)
                    {
                        foreach (var func in funcs)
                        {
                            app.AddFunction(func.Name, func.Signature);
                        }
                    }
                    else
                    {
                        app.RemoveFunctionIgnoreCase(fileTitle);
                    }

                    foreach (var fn in merger.FileNames)
                    {
                        app.UpdateFile(fn, File.GetLastWriteTime(fn));
                    }
                }
            }
            catch (Exception)
            {
                try
                {
                    // Don't show the error because this is just a non-critical background thread.
                    if (File.Exists(fileName)) app.UpdateFile(fileName, File.GetLastWriteTime(fileName));
                }
                catch (Exception)
                { }
            }
        }
コード例 #16
0
ファイル: FFScanner.cs プロジェクト: cmrazek/DkTools
        private void ProcessFile(FFDatabase db, FFApp app, ScanInfo scan)
        {
            try
            {
                if (!File.Exists(scan.fileName))
                {
                    return;
                }
                if (FileContextUtil.IsLocalizedFile(scan.fileName))
                {
                    return;
                }

                var fileContext = CodeModel.FileContextUtil.GetFileContextFromFileName(scan.fileName);
                if (fileContext == FileContext.Include)
                {
                    return;
                }

                DateTime modified;
                if (!app.TryGetFileDate(scan.fileName, out modified))
                {
                    modified = DateTime.MinValue;
                }

                var fileModified = File.GetLastWriteTime(scan.fileName);
                if (!scan.forceScan)
                {
                    if (modified != DateTime.MinValue && fileModified.Subtract(modified).TotalSeconds < 1.0)
                    {
                        return;
                    }
                }

                var ffFile = app.GetFileForScan(db, scan.fileName);

                Log.Debug("Processing file: {0} (modified={1}, last modified={2})", scan.fileName, fileModified, modified);
                if (scan.mode == FFScanMode.Exports)
                {
                    ProbeToolsPackage.Instance.SetStatusText(string.Format("DkTools background scanning file: {0} (exports only)", scan.fileName));
                }
                else
                {
                    ProbeToolsPackage.Instance.SetStatusText(string.Format("DkTools background scanning file: {0}", scan.fileName));
                }

                var fileTitle = Path.GetFileNameWithoutExtension(scan.fileName);

                var defProvider = new CodeModel.DefinitionProvider(_appSettings, scan.fileName);

                var fileContent = File.ReadAllText(scan.fileName);
                var fileStore   = new CodeModel.FileStore();

                var merger = new FileMerger();
                merger.MergeFile(_appSettings, scan.fileName, null, false, true);
                var includeDependencies = (from f in merger.FileNames
                                           select new Preprocessor.IncludeDependency(f, false, true, merger.GetFileContent(f))).ToArray();

                var model = fileStore.CreatePreprocessedModel(_appSettings, merger.MergedContent, scan.fileName, false, string.Concat("Function file processing: ", scan.fileName), includeDependencies);

                var className = fileContext.IsClass() ? Path.GetFileNameWithoutExtension(scan.fileName) : null;
                var classList = new List <FFClass>();
                var funcList  = new List <FFFunction>();

                using (var txn = db.BeginTransaction())
                {
                    ffFile.UpdateFromModel(model, db, fileStore, fileModified, scan.mode);
                    txn.Commit();
                }

                if (ffFile.Visible)
                {
                    app.OnVisibleFileChanged(ffFile);
                }
                else
                {
                    app.OnInvisibleFileChanged(ffFile);
                }

#if DEBUG
                FFDatabase.DumpMemoryStats();
#endif
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Exception when background processing function name: {0} (mode: {1})", scan.fileName, scan.mode);
            }
        }
コード例 #17
0
ファイル: CodeModel.cs プロジェクト: cmrazek/ProbeNpp
        private CodeFile ProcessIncludeFile(string fullPathName)
        {
            try
            {
                Trace.WriteLine(string.Concat("Processing include file: ", fullPathName));

                var merger = new FileMerger();
                merger.MergeFile(fullPathName, true);

                var content = merger.MergedContent;
                if (string.IsNullOrEmpty(content)) return null;

                var file = new CodeFile(this);
                file.Parse(content, fullPathName);
                return file;
            }
            catch (Exception ex)
            {
                Trace.WriteLine(string.Format("Exception when merging file '{0}': {1}", fullPathName, ex));
                return null;
            }
        }