public void FileNameComparer_Equals_ReturnsTrueForEqualFiles() { var comparer = new FileNameComparer(); Assert.True(comparer.Equals(@"aa.txt", @"aa.txt")); Assert.True(comparer.Equals(@"./aa.txt", @"./aa/../aa.txt")); // Path.GetFullPath can properly normalize path on linux only if it contains forward slashes. On Windows, any slashes work fine. }
public void FileNameComparer_Equals_ReturnsTrueForEqualFiles() { var comparer = new FileNameComparer(); Assert.IsTrue(comparer.Equals(@"aa.txt", @"aa.txt")); Assert.IsTrue(comparer.Equals(@".\aa.txt", @".\aa\..\aa.txt")); }
public void Rotate() { // MaxGeneration が 0 または RotationSize が 0 の時はローテーションしない if (MaxGeneration <= 0 && RotationSize <= 0) { return; } string path = fs.Name; lock (this) { // 今のファイルをローテーション対象にリネーム Close(); string newPath = addGenerationNum(path, 0); File.Move(path, newPath); Open(path); } // ファイルをローテーション FileNameComparer cmp = new FileNameComparer(path); deleteOldGeneration(path, cmp, MaxGeneration); incrementGeneration(path, cmp); }
} // Main private static void ProcessDir(SortedDictionary <string, Stat> oStat, string sPath, ASafeLog oLog) { oLog.Info("Processing directory {0} started...", sPath); if (!Directory.Exists(sPath)) { oLog.Alert("Directory not found: {0}.", sPath); } else { string[] aryFileNames = Directory.GetFiles(sPath, "EzBob.Web.log.201*.zip"); FileNameComparer fnc = new FileNameComparer(); Array.Sort <string>(aryFileNames, fnc); foreach (var sFileName in aryFileNames) { ReadFromZip(oStat, sFileName, oLog); } string[] aryDirNames = Directory.GetDirectories(sPath); foreach (string sDirName in aryDirNames) { oLog.Info("Subdirectory found: {0}.", sDirName); ProcessDir(oStat, sDirName, oLog); } // for each } // if oLog.Info("Processing directory {0} complete.", sPath); } // ProcessDir
public void FileNameComparer_GetHashCode_ReturnsStringHashcode() { var comparer = new FileNameComparer(); Assert.Equal("10".GetHashCode(), comparer.GetHashCode("10")); Assert.Equal("".GetHashCode(), comparer.GetHashCode("")); Assert.Equal(0, comparer.GetHashCode(null)); }
/// <summary> /// Bзменениt выделенной записи в списке файлов. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ListBoxRowTemplate_SelectionChanged(object sender, SelectionChangedEventArgs e) { string filePath = (string)(sender as ListBox).SelectedItem; if (filePath != null) { var item = (MatchingResultViewModel)DocListDG.SelectedItem; FileNameComparer.SetScanFile(item, filePath); } }
private int lastSortColumn = -1; // Track the last clicked column /// <summary> /// Sorts the ListView by the clicked column, automatically /// reversing the sort order on subsequent clicks of the /// same column. /// </summary> /// <param name="sender"></param> /// <param name="e">Provides the index of the clicked column.</param> private void lvFileList_ColumnClick(object sender, ColumnClickEventArgs e) { // Define a variable of the abstract (generic) comparer ListViewItemComparer comparer = null; // Create an instance of the specific comparer in the 'comparer' // variable. Since each of the explicit comparer classes is // derived from the abstract case class, polymorphism applies. switch (e.Column) { // Line count columns case 1: case 2: case 3: comparer = new FileLinesComparer(); break; // The file extension column case 4: comparer = new FileExtensionComparer(); break; // All other columns sort by file name default: comparer = new FileNameComparer(); break; } // Set the sorting order if (lastSortColumn == e.Column) { if (lvFileList.Sorting == SortOrder.Ascending) { lvFileList.Sorting = SortOrder.Descending; } else { lvFileList.Sorting = SortOrder.Ascending; } } else { lvFileList.Sorting = SortOrder.Ascending; } lastSortColumn = e.Column; // Send the comparer the list view and column being sorted comparer.SortingList = lvFileList; comparer.Column = e.Column; // Attach the comparer to the list view and sort lvFileList.ListViewItemSorter = comparer; lvFileList.Sort(); }
public void FileNameComparer_Equals_ReturnsTrueIfBothEmpty() { var comparer = new FileNameComparer(); Assert.True(comparer.Equals("", "")); Assert.True(comparer.Equals(" ", "")); Assert.True(comparer.Equals("", " ")); Assert.True(comparer.Equals(null, "")); Assert.True(comparer.Equals("", null)); Assert.False(comparer.Equals("", "something")); Assert.False(comparer.Equals("something", "")); }
// Установить папку сканов для одной строки. private void SetScanRowButton_Click(object sender, RoutedEventArgs e) { var item = (MatchingResultViewModel)DocListDG.SelectedItem; var path = ScanFolderTextBox.Text; if (string.IsNullOrEmpty(path)) { return; } FindScanService?.SetScanFolder(item, path); FileNameComparer.FindAndSetScan(item, path); }
// Установить папку сканов для акта и всех документов. private void SetScanGroupButton_Click(object sender, RoutedEventArgs e) { var models = MatchingResultModels; var groupId = ((MatchingResultViewModel)DocListDG.SelectedItem).GroupId; var path = ScanFolderTextBox.Text; if (string.IsNullOrEmpty(path)) { return; } FindScanService?.SetScanFolder(models, groupId, path); FileNameComparer.FindAndSetScan(models, groupId, path); }
/// <summary> /// Verifica o banco de dados e os arquivos existentes /// para decidir quais arquivos devem ser importados /// </summary> /// <returns>Arquivos não importados</returns> public List <String> GetFilesToProcess() { var files = new List <String>(); var comparer = new FileNameComparer(); var lastMaster = SqlField($"SELECT TOP(1) Arquivo FROM {ControlTable} WHERE Arquivo LIKE '{Prefix}%' ORDER BY Arquivo DESC"); foreach (var f in GetAllFiles()) { files.Add(f); } return(files); }
private void incrementGeneration(string path, FileNameComparer cmp) { List <string> files = getLogFiles(path, cmp); files.Sort(cmp); foreach (string file in files) { int newNum = cmp.GetFileNum(file) + 1; string newFile = cmp.ReplaceFileNum(file, newNum); File.Move(file, newFile); } }
private static List <string> getLogFiles(string path, FileNameComparer cmp) { string[] files = Directory.GetFiles(Path.GetDirectoryName(path)); List <string> ret = new List <string>(); for (int i = 0; i < files.Length; i++) { if (cmp.Match(files[i])) { ret.Add(files[i]); } } return(ret); }
private static void deleteOldGeneration(string path, FileNameComparer cmp, int delGen) { List <string> files = getLogFiles(path, cmp); foreach (string file in files) { int filenum = cmp.GetFileNum(file); if (filenum == int.MaxValue) { continue; } if (delGen <= filenum) { File.Delete(file); } } }
private List <Tuple <string, string, DateTime, long, int> > FindFiles() { var comparer = new FileNameComparer(); return(_source.SelectMany(f => { if (File.Exists(f)) { return new string[] { f }; } else if (Directory.Exists(f)) { return Directory.EnumerateFiles(f); } else if (Directory.Exists(Path.GetDirectoryName(f))) { return Directory .EnumerateFiles(Path.GetDirectoryName(f)) .Where(f2 => f2.StartsWith(f)); } else { return new string[0]; } }).SelectMany(file => { if (Path.GetExtension(file) == ".zip") { using (var stream = new FileStream(file, FileMode.Open, FileAccess.Read)) using (var archive = new ZipArchive(stream, ZipArchiveMode.Read)) { return archive.Entries.Select(e => new Tuple <string, string, DateTime, long>(file, e.FullName, e.LastWriteTime.DateTime, e.Length)); } } else { var info = new FileInfo(file); return new [] { new Tuple <string, string, DateTime, long>(file, string.Empty, info.LastWriteTime, info.Length) }; } }) .OrderBy(f => f.Item1, comparer) .ThenBy(f => f.Item2, comparer) .Select((f, i) => new Tuple <string, string, DateTime, long, int>(f.Item1, f.Item2, f.Item3, f.Item4, i)) .ToList()); }
// Use this for initialization void Start() { _slicer = GetComponent <Slicer>(); _main = GetComponent <Main>(); _currentSlice = _slicer.Slice; _slicesPath = GetComponent <ConfigProperties>().slicesPath; _slicesHttp = GetComponent <ConfigProperties>().slicesHttp; _sliceDepth = GetComponent <ConfigProperties>().slicesThickness; _pixelSize = GetComponent <ConfigProperties>().slicesPixelSize; _texture = new Texture2D(1, 1); _refreshAspect = true; // folder info DirectoryInfo info = new DirectoryInfo(_slicesPath); _filesInfo = info.GetFiles("*.jpg"); _slicesCount = _filesInfo.Length; // sort files IComparer comparer = new FileNameComparer(); Array.Sort(_filesInfo, comparer); _realSliceNumbers = new Dictionary <int, int>(); for (int i = 1; i <= _slicesCount; i++) { _realSliceNumbers[i] = int.Parse(_filesInfo[i - 1].Name.Split('.')[0]); } // load slice slice.GetComponent <Renderer>().material.mainTexture = _texture; DownloadSlice(_currentSlice); // memmory stuff _lastUnload = DateTime.Now; }
public void FileNameComparer_Equals_IsCaseInsensitive() { var comparer = new FileNameComparer(); Assert.True(comparer.Equals(@"aa.txt", @"AA.txt")); }
//--------------------------------------------------------------------------------------------------------------------- /// <summary>Runs the latest database upgrade scripts for this software item.</summary> public virtual bool Upgrade() { if (Tool.LastFailurePhase > ProcessPhaseType.InstallAndUpgrade) { return(false); } if (Tool.LastFailurePhase == ProcessPhaseType.InstallAndUpgrade && !Tool.AfterFailureCheckpoint && this != Tool.LastFailureItem) { return(false); } bool isFailureItem = Tool.LastFailurePhase == ProcessPhaseType.InstallAndUpgrade && this == Tool.LastFailureItem; string dir = String.Format("{0}{1}db", BaseDir, Path.DirectorySeparatorChar); if (!Directory.Exists(dir)) { return(false); } List <string> files = new List <string>(Directory.GetFiles(dir, "db-*#.sql")); files.Sort(new FileNameComparer()); int count = 0; // Execute only scripts with version > PreviousVersion or, in case of failure in the previous run for the current, item foreach (string file in files) { Match match = Regex.Match(file, @"db-([\d\.]+)#\.sql$"); if (!match.Success) { continue; } string currentFileVersion = match.Groups[1].Value; if (FileNameComparer.Compare(currentFileVersion, Version) <= 0 && (!isFailureItem || currentFileVersion != Tool.LastFailureItemVersion)) { continue; } if (isFailureItem && Tool.AfterFailureCheckpoint) { continue; } Version = currentFileVersion; Tool.WriteSeparator(); if (Tool.Interactive) { Console.WriteLine("Upgrade {0} to version {1}{2}\n({3}):", ItemsCaption, Version, isFailureItem && !Tool.AfterFailureCheckpoint ? String.Format(" (recovering from {0})", Tool.CheckpointText) : String.Empty, file); } Tool.ExecuteSqlScript(file, this); RegisterVersion(); count++; if (isFailureItem) { break; } } return(count != 0); }
//--------------------------------------------------------------------------------------------------------------------- /// <summary>Runs the latest database cleanup scripts corresponding to the last upgrades for this software item.</summary> public virtual bool Cleanup() { if (Tool.LastFailurePhase > ProcessPhaseType.Cleanup) { return(false); } if (Tool.LastFailurePhase == ProcessPhaseType.Cleanup && !Tool.AfterFailureCheckpoint) { return(false); } bool isFailureItem = Tool.LastFailurePhase == ProcessPhaseType.Cleanup && this == Tool.LastFailureItem; string dir = String.Format("{0}{1}db", BaseDir, Path.DirectorySeparatorChar); if (!Directory.Exists(dir)) { return(false); } string[] files = Directory.GetFiles(dir, "db-*c.sql"); Array.Sort(files, new FileNameComparer()); int count = 0; foreach (string file in files) { Match match = Regex.Match(file, @"db-([\d\.]+)c\.sql$"); if (!match.Success) { continue; } string currentFileVersion = match.Groups[1].Value; // Process file only if current file version is greater than last CleanupVersion, otherwise skip file if (FileNameComparer.Compare(currentFileVersion, CleanupVersion) <= 0 && (!isFailureItem || currentFileVersion != Tool.LastFailureItemVersion)) { continue; } // Skip if current file is beyond Version if (FileNameComparer.Compare(currentFileVersion, Version) > 0) { continue; } CleanupVersion = currentFileVersion; Tool.WriteSeparator(); if (Tool.Interactive) { Console.WriteLine("Run {0} cleanup for version {1}{2}\n({3}):", ItemsCaption, CleanupVersion, isFailureItem && !Tool.AfterFailureCheckpoint ? String.Format(" (recovering from {0})", Tool.CheckpointText) : String.Empty, file); } Tool.ExecuteSqlScript(file, this); RegisterCleanupVersion(); count++; } return(count != 0); }
private int lastSortColumn = -1; // Track the last clicked column /// <summary> /// Sorts the Vista_Api.ListView by the clicked column, automatically /// reversing the sort order on subsequent clicks of the /// same column. /// </summary> /// <param name="sender"></param> /// <param name="e">Provides the index of the clicked column.</param> private void lvFileList_ColumnClick(object sender, ColumnClickEventArgs e) { // Define a variable of the abstract (generic) comparer ListViewItemComparer comparer = null; // Create an instance of the specific comparer in the 'comparer' // variable. Since each of the explicit comparer classes is // derived from the abstract case class, polymorphism applies. switch (e.Column) { // Line count columns case 1: case 2: case 3: comparer = new FileLinesComparer(); break; // The file extension column case 4: comparer = new FileExtensionComparer(); break; // All other columns sort by file name default: comparer = new FileNameComparer(); break; } // Set the sorting order if (lastSortColumn == e.Column) { if (lvFileList.Sorting == SortOrder.Ascending) { lvFileList.Sorting = SortOrder.Descending; } else { lvFileList.Sorting = SortOrder.Ascending; } } else { lvFileList.Sorting = SortOrder.Ascending; } lastSortColumn = e.Column; // Send the comparer the list view and column being sorted comparer.SortingList = lvFileList; comparer.Column = e.Column; // Attach the comparer to the list view and sort lvFileList.ListViewItemSorter = comparer; lvFileList.Sort(); }
static FileNameComparer() { Default = new FileNameComparer(); }