/// <summary> /// Parse the reader for obtain the files list /// </summary> /// <param Name="reader">flow how contains the files list table</param> /// <returns></returns> private JediVCSFileInfoList GetJediVCSFileInfoList(TextReader reader) { const string RegExLineHead = "[ ]*ID[ ]*File Path[ ]*File Name[ ]*Version[ ]*Out[ ]*Owner[ ]*Hid[ ]*Stamp[ ]*CRC[ ]*"; const string RegExLineSep = "^([= ]*)$"; StringReader buffer = GetReaderWithNoBanner(reader); JediVCSFileInfoList Files = new JediVCSFileInfoList(); Regex expHeader = new Regex(RegExLineHead, RegexOptions.IgnoreCase); Regex expLineSep = new Regex(RegExLineSep, RegexOptions.IgnoreCase); // Goto on the first file line string Line = string.Empty; Line = buffer.ReadLine(); while (Line != null) { Line = Line.Replace(System.Convert.ToChar(0x0).ToString(), " "); if (Line != string.Empty) { if (!expHeader.IsMatch(Line)) { if (!expLineSep.IsMatch(Line)) { Files.Add(GetJediVCSFileInfo(Line)); } } } Line = buffer.ReadLine(); } return Files; }
/// <summary> /// Get the files modified /// </summary> /// <param name="files">List of files</param> /// <returns>Modification array</returns> private Modification[] GetModifiedFiles(JediVCSFileInfoList files) { Log.Debug("Checking " + files.Count.ToString() + " files for modifications"); Modification[] Result = new Modification[0]; for (int iFile = 0; iFile < files.Count; iFile++) { JediVCSFileInfo FileInfo = files[iFile]; if (FileInfo.IsModified()) { Log.Debug("Modified file: " + FileInfo.Name); Array.Resize(ref Result, Result.Length + 1); Result[Result.Length - 1] = Convert(FileInfo); } } Log.Debug("Found " + Result.Length.ToString() + " modified files"); return Result; }