コード例 #1
0
        public ILogLineColumnizer FindColumnizerByFileMask(string fileName)
        {
            foreach (ColumnizerMaskEntry entry in ConfigManager.Settings.preferences.columnizerMaskList)
            {
                if (entry.mask != null)
                {
                    try
                    {
                        if (Regex.IsMatch(fileName, entry.mask))
                        {
                            ILogLineColumnizer columnizer = ColumnizerPicker.FindColumnizerByName(entry.columnizerName,
                                                                                                  PluginRegistry.GetInstance().RegisteredColumnizers);
                            return(columnizer);
                        }
                    }
                    catch (ArgumentException e)
                    {
                        _logger.Error(e, "RegEx-error while finding columnizer: ");
                        // occurs on invalid regex patterns
                    }
                }
            }

            return(null);
        }
コード例 #2
0
        public void DecideColumnizerByName_WhenReaderIsNotReady_ReturnCorrectColumnizer(
            string fileName, Type columnizerType)
        {
            string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);

            // TODO: When DI container is ready, we can mock this set up.
            PluginRegistry.GetInstance().RegisteredColumnizers.Add(new JsonCompactColumnizer());
            var result = ColumnizerPicker.DecideColumnizerByName(fileName,
                                                                 PluginRegistry.GetInstance().RegisteredColumnizers);

            Assert.AreEqual(result.GetType(), columnizerType);
        }
コード例 #3
0
        private void FillColumnizerList()
        {
            columnizerDataGridView.Rows.Clear();

            DataGridViewComboBoxColumn
                comboColumn = (DataGridViewComboBoxColumn)columnizerDataGridView.Columns[1];

            comboColumn.Items.Clear();

            DataGridViewTextBoxColumn textColumn = (DataGridViewTextBoxColumn)columnizerDataGridView.Columns[0];

            IList <ILogLineColumnizer> columnizers = PluginRegistry.GetInstance().RegisteredColumnizers;

            foreach (ILogLineColumnizer columnizer in columnizers)
            {
                int index = comboColumn.Items.Add(columnizer.GetName());
            }
            //comboColumn.DisplayMember = "Name";
            //comboColumn.ValueMember = "Columnizer";

            foreach (ColumnizerMaskEntry maskEntry in Preferences.columnizerMaskList)
            {
                DataGridViewRow row = new DataGridViewRow();
                row.Cells.Add(new DataGridViewTextBoxCell());
                DataGridViewComboBoxCell cell = new DataGridViewComboBoxCell();

                foreach (ILogLineColumnizer logColumnizer in columnizers)
                {
                    int index = cell.Items.Add(logColumnizer.GetName());
                }

                row.Cells.Add(cell);
                row.Cells[0].Value = maskEntry.mask;
                ILogLineColumnizer columnizer = ColumnizerPicker.DecideColumnizerByName(maskEntry.columnizerName,
                                                                                        PluginRegistry.GetInstance().RegisteredColumnizers);

                row.Cells[1].Value = columnizer.GetName();
                columnizerDataGridView.Rows.Add(row);
            }

            int count = columnizerDataGridView.RowCount;

            if (count > 0 && !columnizerDataGridView.Rows[count - 1].IsNewRow)
            {
                DataGridViewComboBoxCell comboCell = (DataGridViewComboBoxCell)columnizerDataGridView.Rows[count - 1].Cells[1];
                comboCell.Value = comboCell.Items[0];
            }
        }
コード例 #4
0
        public void FindReplacementForAutoColumnizer_ValidTextFile_ReturnCorrectColumnizer(
            string fileName, Type columnizerType)
        {
            string        path   = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);
            LogfileReader reader = new LogfileReader(path, new EncodingOptions(), true, 40, 50, new MultiFileOptions());

            reader.ReadFiles();

            Mock <ILogLineColumnizer> autoColumnizer = new Mock <ILogLineColumnizer>();

            autoColumnizer.Setup(a => a.GetName()).Returns("Auto Columnizer");

            // TODO: When DI container is ready, we can mock this set up.
            PluginRegistry.GetInstance().RegisteredColumnizers.Add(new JsonCompactColumnizer());
            var result = ColumnizerPicker.FindReplacementForAutoColumnizer(fileName, reader, autoColumnizer.Object);

            Assert.AreEqual(result.GetType(), columnizerType);
        }
コード例 #5
0
        public void FindColumnizer_ReturnCorrectColumnizer(string expectedColumnizerName, string line0, string line1, string line2, string line3, string line4)
        {
            string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "test");

            Mock <IAutoLogLineColumnizerCallback> autoLogLineColumnizerCallbackMock = new Mock <IAutoLogLineColumnizerCallback>();

            autoLogLineColumnizerCallbackMock.Setup(a => a.GetLogLine(0)).Returns(new TestLogLine()
            {
                FullLine   = line0,
                LineNumber = 0
            });

            autoLogLineColumnizerCallbackMock.Setup(a => a.GetLogLine(1)).Returns(new TestLogLine()
            {
                FullLine   = line1,
                LineNumber = 1
            });

            autoLogLineColumnizerCallbackMock.Setup(a => a.GetLogLine(2)).Returns(new TestLogLine()
            {
                FullLine   = line2,
                LineNumber = 2
            });

            autoLogLineColumnizerCallbackMock.Setup(a => a.GetLogLine(3)).Returns(new TestLogLine()
            {
                FullLine   = line3,
                LineNumber = 3
            });
            autoLogLineColumnizerCallbackMock.Setup(a => a.GetLogLine(4)).Returns(new TestLogLine()
            {
                FullLine   = line4,
                LineNumber = 4
            });

            var result = ColumnizerPicker.FindColumnizer(path, autoLogLineColumnizerCallbackMock.Object);

            Assert.AreEqual(expectedColumnizerName, result.GetName());
        }
コード例 #6
0
        private void StartTool(string cmd, string args, bool sysoutPipe, string columnizerName, string workingDir)
        {
            if (string.IsNullOrEmpty(cmd))
            {
                return;
            }

            Process          process   = new Process();
            ProcessStartInfo startInfo = new ProcessStartInfo(cmd, args);

            if (!Util.IsNull(workingDir))
            {
                startInfo.WorkingDirectory = workingDir;
            }

            process.StartInfo           = startInfo;
            process.EnableRaisingEvents = true;

            if (sysoutPipe)
            {
                ILogLineColumnizer columnizer = ColumnizerPicker.DecideColumnizerByName(columnizerName,
                                                                                        PluginRegistry.GetInstance().RegisteredColumnizers);

                _logger.Info("Starting external tool with sysout redirection: {0} {1}", cmd, args);
                startInfo.UseShellExecute        = false;
                startInfo.RedirectStandardOutput = true;
                //process.OutputDataReceived += pipe.DataReceivedEventHandler;
                try
                {
                    process.Start();
                }
                catch (Win32Exception e)
                {
                    _logger.Error(e);
                    MessageBox.Show(e.Message);
                    return;
                }

                SysoutPipe pipe   = new SysoutPipe(process.StandardOutput);
                LogWindow  logWin = AddTempFileTab(pipe.FileName,
                                                   CurrentLogWindow.IsTempFile
                        ? CurrentLogWindow.TempTitleName
                        : Util.GetNameFromPath(CurrentLogWindow.FileName) + "->E");
                logWin.ForceColumnizer(columnizer);
                process.Exited += pipe.ProcessExitedEventHandler;
                //process.BeginOutputReadLine();
            }
            else
            {
                _logger.Info("Starting external tool: {0} {1}", cmd, args);
                try
                {
                    startInfo.UseShellExecute = false;
                    process.Start();
                }
                catch (Exception e)
                {
                    _logger.Error(e);
                    MessageBox.Show(e.Message);
                }
            }
        }