예제 #1
0
        public void GetLastesFileWithSameName_TenFilesWithSameNameExist_FileNameWithNumberNine()
        {
            // Arrange
            string fileName = "somefilename";

            File.WriteAllText(Path.Combine(WorkingPath, fileName + ".txt"), "");
            for (int i = 1; i < 10; i++)
            {
                File.WriteAllText(Path.Combine(WorkingPath, fileName + i + ".txt"), "");
            }

            var fileSizeComparatorMock = new Mock <IFileSizeComparator>();
            var fileNameCreatorMock    = new Mock <IFileNameCreator>();
            var directoryWrapper       = new DirectoryWrapper();

            var fileAnalyzer = new FileAnalyzer(fileSizeComparatorMock.Object, fileNameCreatorMock.Object, directoryWrapper)
            {
                LogPath  = WorkingPath,
                FileName = fileName + ".txt"
            };

            // Act
            var result = fileAnalyzer.GetLastesFileWithSameName();

            // Assert
            Assert.AreEqual(fileName + "9" + ".txt", Path.GetFileName(result));
        }
예제 #2
0
        private void OnFileEvent(object sender, FileEventArgs e)
        {
            RemoveInvalidClients();

            SendNotificationToAllClients(e);

            // Analyze each file on a separate Thread
            var _fileAnalyzerThread = new Thread(new ThreadStart(() =>
            {
                try
                {
                    Logger.WriteToLog("Starting a new FileAnalyzerThread.");

                    FileAnalyzer fileAnalyzer         = new FileAnalyzer(_cloudAnalyzerURL, e);
                    FileAnalysisStatus analysisStatus = fileAnalyzer.Analyze();
                    e.AnalysisStatus = analysisStatus;

                    SendNotificationToAllClients(e);
                }
                catch (Exception ex)
                {
                    Logger.WriteToLog("Exception caught in FileAnalyzerThread.");
                    Logger.WriteToLog(ex);
                }
            }))
            {
                Priority     = ThreadPriority.AboveNormal,
                IsBackground = true
            };

            _fileAnalyzersThreads.Add(_fileAnalyzerThread);
            _fileAnalyzerThread.Start();
        }
예제 #3
0
        public void GetLastesFileWithSameName_ThreeFilesExistWithSameNameButNumberNotOrdered_FileNameWithHigherNumber()
        {
            // Arrange
            string fileName = "somefilename";

            int higherNumber = 25;

            File.WriteAllText(Path.Combine(WorkingPath, fileName + higherNumber + ".txt"), "");
            File.WriteAllText(Path.Combine(WorkingPath, fileName + "5" + ".txt"), "");
            File.WriteAllText(Path.Combine(WorkingPath, fileName + "20" + ".txt"), "");

            var fileSizeComparatorMock = new Mock <IFileSizeComparator>();
            var fileNameCreatorMock    = new Mock <IFileNameCreator>();
            var directoryWrapper       = new DirectoryWrapper();

            var fileAnalyzer = new FileAnalyzer(fileSizeComparatorMock.Object, fileNameCreatorMock.Object, directoryWrapper)
            {
                LogPath  = WorkingPath,
                FileName = fileName + ".txt"
            };

            // Act
            var result = fileAnalyzer.GetLastesFileWithSameName();

            // Assert
            Assert.AreEqual(fileName + higherNumber + ".txt", Path.GetFileName(result));
        }
예제 #4
0
        private IDictionary CreateStore(FileAnalyzer source)
        {
            var dictType = typeof(StorageDictionary <,>).MakeGenericType(source.Members.IndexMember.Type, source.RecordType);

            source.Stream.Position = 0;
            return((IDictionary)Activator.CreateInstance(dictType, source.Stream, source.Options));
        }
예제 #5
0
        private void GetReportButton_Click_1(object sender, EventArgs e)
        {
            if (AllRecords == null)
            {
                MessageBox.Show(@"File not found.");
            }
            else
            {
                TempAnalyzer = new FileAnalyzer
                {
                    Records = Records
                };

                if (IpRadioButton.Checked)
                {
                    ReportBox.Text = TempAnalyzer.AnalyzeByType("analyzerbyip");
                }

                if (WeightsRadioButton.Checked)
                {
                    ParametersForm = new Form {
                        Size = new Size(new Point(200, 200))
                    };
                    ParametersForm.Show();
                    ParametersForm.Text = @"Parameters for WeightsAnalyzer";

                    MethodsRadioButton = new RadioButton {
                        Location = new Point(10, 15), Text = @"Methods"
                    };
                    ExtensionsRadioButton = new RadioButton {
                        Location = new Point(10, 40), Text = @"Extensions"
                    };
                    ServerResponseCodesRadioButton = new RadioButton {
                        Location = new Point(10, 65), Text = @"Codes"
                    };

                    var groupBox = new GroupBox {
                        Text = @"Type ofWeightsReport", Size = new Size(new Point(150, 90)), Location = new Point(10, 10)
                    };

                    var applyButton3 = new Button {
                        Text = @"Apply", Width = 60, Location = new Point(10, 125)
                    };
                    var applyHandler = new EventHandler(applyButton3_Click);
                    applyButton3.Click += applyHandler;


                    groupBox.Controls.AddRange(new Control[] { MethodsRadioButton, ExtensionsRadioButton, ServerResponseCodesRadioButton });

                    ParametersForm.Controls.AddRange(new Control[] { groupBox, applyButton3 });
                }

                if (SumOfBytesRadioButton.Checked)
                {
                    ReportBox.Text = TempAnalyzer.AnalyzeByType("analyzerbysumofbytes");
                }
            }
        }
예제 #6
0
        private void GetFileStatistics(TestDocument doc, string filePath)
        {
            FileAnalyzer       analyzer = FileAnalyzerFactory.Create(filePath);
            DocumentProperties stats    = analyzer.GetProperties();

            doc.Pages       = stats.Pages;
            doc.Author      = stats.Author;
            doc.Application = stats.Application;
            doc.FileSize    = stats.FileSize;
            doc.Orientation = (stats.Orientation ?? Framework.Documents.Orientation.Portrait).ToString();
        }
예제 #7
0
        public async Task OnSubscribe_BadPath_DoNothing()
        {
            var searcher  = new Mock <ISearcher <string, string> >();
            var indexer   = new Mock <IIndexer <string, string> >();
            var tokenizer = new Mock <ITokenizer <string> >();
            var analyzer  = new FileAnalyzer(tokenizer.Object, searcher.Object, indexer.Object);

            var tmp = Path.GetRandomFileName();
            await analyzer.Subscribe(tmp);

            indexer.Verify(x => x.Add(It.IsAny <string>(), It.IsAny <IEnumerable <string> >()), Times.Never);
        }
예제 #8
0
        private void SelectTargetFile(object sender, EventArgs e)
        {
            _targetStream?.Dispose();
            targetGridView.Rows.Clear();

            var fileName = string.Empty;

            using (var dialog = new OpenFileDialog())
            {
                dialog.Title  = "Select the file to use as reference.";
                dialog.Filter = "DBC files (*.dbc, *.db2)|*.dbc;*.db2";
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    fileName = dialog.FileName;
                }
            }

            if (string.IsNullOrEmpty(fileName))
            {
                return;
            }

            textBox2.Text = fileName;

            _targetStream       = File.OpenRead(fileName);
            _targetFileAnalyzer = AnalyzerFactory.Create(_targetStream);

            if (Properties.Settings.Default.LoadTargetDefinition)
            {
                var definitionName = Path.GetFileNameWithoutExtension(fileName);
                if (!_definitionContainer.TryGetValue(definitionName, out var definitionStore) || definitionStore == null)
                {
                    definitionStore = _definitionContainer[definitionName] = DefinitionFactory.Open(definitionName);
                }

                var fileType = definitionStore[_targetFileAnalyzer.LayoutHash];
                _targetFileAnalyzer = AnalyzerFactory.Create(fileType, _targetStream);

                // Add to GUI
                ShowTypeToGUI(_targetFileAnalyzer.RecordType, targetGridView);
            }
            else
            {
                var definitionName = Path.GetFileNameWithoutExtension(fileName);
                if (_definitionContainer.TryGetValue(definitionName, out var definitionStore))
                {
                    if (definitionStore.ContainsKey(_targetFileAnalyzer.LayoutHash))
                    {
                        throw new InvalidOperationException("Structure is already known");
                    }
                }
            }
        }
예제 #9
0
        private bool AdjustStringMembers(TypeGenerator generator, FileAnalyzer analyzer)
        {
            analyzer.Stream.Position = 0;

            var enumerableType = typeof(StorageEnumerable <>).MakeGenericType(analyzer.RecordType);
            var enumerable     = (IEnumerable)Activator.CreateInstance(enumerableType, analyzer.Stream, analyzer.Options);

            var isValidString = new bool[analyzer.Members.Members.Count];

            for (var itr = 0; itr < isValidString.Length; ++itr)
            {
                isValidString[itr] = false;
            }

            foreach (var node in enumerable)
            {
                var memberIndex = 0;
                foreach (var exMemberInfo in analyzer.Members.Members)
                {
                    if (memberIndex == analyzer.Members.IndexColumn)
                    {
                        ++memberIndex;
                        continue;
                    }

                    var memberInfo  = (PropertyInfo)exMemberInfo.MemberInfo;
                    var memberValue = memberInfo.GetValue(node);

                    if (exMemberInfo.Type == typeof(string))
                    {
                        isValidString[memberIndex] = exMemberInfo.MappedTo.BitSize > 16 && memberValue != null;
                    }

                    ++memberIndex;
                }
            }

            for (var itr = 0; itr < isValidString.Length; ++itr)
            {
                if (!isValidString[itr])
                {
                    generator.GetMember(itr).Type = typeof(int);
                }
            }

            if (isValidString.Any())
            {
                generator.Generate();
            }

            return(isValidString.Any());
        }
예제 #10
0
        public static void Main(string[] args)
        {
            _analyzer = new FileAnalyzer(new WhitespaceTokenizer());

            bool next;

            do
            {
                Console.Write(Promt);
                var input = Console.ReadLine();
                next = ProcessInput(input);
            } while (next);
        }