private static XElement GetXElementForFile(FileEventRaisedArgs args, ISrcMLGlobalService srcMLService) { XElement xelement = null; if (!args.EventType.Equals(FileEventType.FileDeleted)) { if (args.FilePath.EndsWith(".xml") || args.FilePath.EndsWith(".xaml")) { var allText = File.ReadAllText(args.FilePath); try { xelement = XDocument.Parse(allText, LoadOptions.SetLineInfo | LoadOptions.PreserveWhitespace).Root; } catch (Exception e) { return(xelement); } } else { xelement = srcMLService.GetXElementForSourceFile(args.FilePath); } } return(xelement); }
private void Archive_SourceFileChanged(object sender, FileEventRaisedArgs e) { try { scopeLock.EnterWriteLock(); switch (e.EventType) { case FileEventType.FileChanged: // Treat a changed source file as deleted then added RemoveFile(e.FilePath); goto case FileEventType.FileAdded; case FileEventType.FileAdded: AddFile(e.FilePath); break; case FileEventType.FileDeleted: RemoveFile(e.FilePath); break; case FileEventType.FileRenamed: // TODO: could a more efficient rename action be supported within the data // structures themselves? RemoveFile(e.OldFilePath); AddFile(e.FilePath); break; } OnFileProcessed(e); } catch (Exception ex) { // TODO log exception Console.Error.WriteLine("Error: {0} ({1} {2})", ex.Message, e.EventType, e.FilePath); } finally { scopeLock.ExitWriteLock(); } }
internal void OnFileChanged(object sender, FileEventRaisedArgs e) { FileEventType fileEvent = e.EventType; string oldFilePath = e.OldFilePath; string newFilePath = e.FilePath; //bool hasSrcML = e.HasSrcML; switch (fileEvent) { case FileEventType.FileAdded: return; case FileEventType.FileChanged: ChangeMethodsInChangedFile(oldFilePath); break; case FileEventType.FileDeleted: DeleteMethodsInDeletedFile(oldFilePath); break; case FileEventType.FileRenamed: ChangeMethodsInRenamedFile(oldFilePath, newFilePath); break; } }
protected virtual void OnFileChanged(FileEventRaisedArgs e) { EventHandler <FileEventRaisedArgs> handler = SourceFileChanged; if (handler != null) { handler(this, e); } }
/// <summary> /// Raises the file processed event /// </summary> /// <param name="e">The event arguments</param> protected virtual void OnFileProcessed(FileEventRaisedArgs e) { EventHandler <FileEventRaisedArgs> handler = FileProcessed; if (handler != null) { handler(this, e); } }
private void OnFileProcessed(FileEventRaisedArgs e) { EventHandler <FileEventRaisedArgs> handler = FileProcessed; if (handler != null) { handler(this, e); } }
/// <summary> /// Respond to the FileChanged event from Solution Monitor. /// </summary> /// <param name="sender"></param> /// <param name="eventArgs"></param> private void RespondToFileChangedEvent(object sender, FileEventRaisedArgs eventArgs) { //SrcMLFileLogger.DefaultLogger.Info("SrcMLService: RespondToFileChangedEvent(), File = " + eventArgs.FilePath + ", EventType = " + eventArgs.EventType + ", HasSrcML = " + eventArgs.HasSrcML); // Show progress on the status bar. //if(duringStartup) { //amountCompleted++; //ShowProgressOnStatusBar("SrcML Service is processing " + eventArgs.FilePath); //} OnFileChanged(eventArgs); }
void _archive_SourceFileChanged(object sender, FileEventRaisedArgs e) { textBox1.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(() => { ////if (SourceEventType.Renamed == e.EventType) string srcMLAvailableText = (e.HasSrcML ? "(SrcML Available)" : String.Empty); if (FileEventType.FileRenamed == e.EventType) { textBox1.AppendText(String.Format("{0} {1} to {2}\n", e.EventType, e.OldFilePath, e.FilePath, srcMLAvailableText)); } else { textBox1.AppendText(String.Format("{0} {1} {2}\n", e.EventType, e.FilePath, srcMLAvailableText)); } })); }
public static void SourceFileChanged(object sender, FileEventRaisedArgs args) { fera = args; switch (args.EventType) { case FileEventType.FileAdded: receivedFileAdded = true; break; case FileEventType.FileChanged: receivedFileUpdated = true; break; case FileEventType.FileDeleted: receivedFileDeleted = true; break; } }
/// <summary> /// Responds to <see cref="AbstractArchive.FileChanged"/> events from <see cref="Archive"/>. /// Subclasses should override this method and only respond when the /// </summary> /// <param name="sender">The event sender</param> /// <param name="e">The event argument</param> protected virtual void Archive_FileChanged(object sender, FileEventRaisedArgs e) { switch (e.EventType) { case FileEventType.FileAdded: goto case FileEventType.FileChanged; case FileEventType.FileChanged: if (UseAsynchronousMethods) { AddOrUpdateFileAsync(e.FilePath); } else { AddOrUpdateFile(e.FilePath); } break; case FileEventType.FileDeleted: if (UseAsynchronousMethods) { RemoveFileAsync(e.FilePath); } else { RemoveFile(e.FilePath); } break; case FileEventType.FileRenamed: if (UseAsynchronousMethods) { RenameFileAsync(e.OldFilePath, e.FilePath); } else { RenameFile(e.OldFilePath, e.FilePath); } break; default: throw new InvalidOperationException("Invalid FileEventType"); } }
public void CheckSrcMLFiles() { string sourcePath = fera.FilePath; string oldSourcePath = fera.OldFilePath; FileEventType type = fera.EventType; bool hasSrcML = fera.HasSrcML; if (type == FileEventType.FileAdded || type == FileEventType.FileChanged) { Assert.IsTrue((receivedFileAdded || receivedFileUpdated)); if (hasSrcML) { SrcMLArchive archive = srcMLService.GetSrcMLArchive(); Assert.IsNotNull(archive, "GetSrcMLArchive returned null."); string srcMLPath = archive.GetXmlPathForSourcePath(sourcePath); ////WriteLog(logFilePath, "Adding/Updating srcMLPath = " + srcMLPath); Assert.IsTrue(File.Exists(srcMLPath), "The srcML file [" + srcMLPath + "] does not exist."); Assert.AreEqual(new FileInfo(sourcePath).LastWriteTime, new FileInfo(srcMLPath).LastWriteTime); XElement xelement = srcMLService.GetXElementForSourceFile(sourcePath); Assert.IsNotNull(xelement, "GetXElementForSourceFile returned null."); } } else if (type == FileEventType.FileDeleted) { Assert.IsTrue(receivedFileDeleted); SrcMLArchive archive = srcMLService.GetSrcMLArchive(); Assert.IsNotNull(archive, "GetSrcMLArchive returned null."); string srcMLPath = archive.GetXmlPathForSourcePath(sourcePath); ////WriteLog(logFilePath, "Deleting srcMLPath = " + srcMLPath); Assert.IsFalse(File.Exists(srcMLPath), "The srcML file [" + srcMLPath + "] still exists."); XElement xelementX = srcMLService.GetXElementForSourceFile(sourcePath); Assert.IsNull(xelementX, "GetXElementForSourceFile returned not null."); } receivedFileAdded = receivedFileUpdated = receivedFileDeleted = false; fera = null; }
public void SourceFileChanged(object sender, FileEventRaisedArgs args) { SourceFileChanged(sender, args, false); }
private void CurrentMonitor_FileChanged(object sender, FileEventRaisedArgs e) { OnSourceFileChanged(e); }
private void RespondToFileProcessed(object sender, FileEventRaisedArgs e) { OnFileProcessed(e); }
/// <summary> /// Method used to monitor <see cref="AbstractWorkingSet.Archive"/>. It does nothing. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected override void Archive_FileChanged(object sender, FileEventRaisedArgs e) { }
protected virtual void OnFileChanged(FileEventRaisedArgs e) { EventHandler<FileEventRaisedArgs> handler = SourceFileChanged; if(handler != null) { handler(this, e); } }
/// <summary> /// Method used to monitor <see cref="AbstractWorkingSet.Archive"/>. It does nothing. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected override void Archive_FileChanged(object sender, FileEventRaisedArgs e) { }
private void CurrentMonitor_FileChanged(object sender, FileEventRaisedArgs e) { OnSourceFileChanged(e); }
/// <summary> /// Respond to the FileChanged event from Solution Monitor. /// </summary> /// <param name="sender"></param> /// <param name="eventArgs"></param> private void RespondToFileChangedEvent(object sender, FileEventRaisedArgs eventArgs) { OnFileChanged(eventArgs); }
/// <summary> /// Raises the <see cref="FileProcessed"/> event /// </summary> /// <param name="e"></param> protected virtual void OnFileProcessed(FileEventRaisedArgs e) { EventHandler<FileEventRaisedArgs> handler = FileProcessed; if(null != handler) { handler(this, e); } }
public void SourceFileChanged(object sender, FileEventRaisedArgs args, bool commitImmediately = false) { var cancelTokenSource = new CancellationTokenSource(); var cancelToken = cancelTokenSource.Token; Action action = () => { cancelToken.ThrowIfCancellationRequested(); // Ignore files that can not be indexed by Sando. var fileExtension = Path.GetExtension(args.FilePath); if (fileExtension != null && !fileExtension.Equals(String.Empty)) { string sourceFilePath = args.FilePath; string oldSourceFilePath = args.OldFilePath; var documentIndexer = ServiceLocator.Resolve <DocumentIndexer>(); if (ServiceLocator.Resolve <IndexFilterManager>().ShouldFileBeIndexed(args.FilePath)) { if (ExtensionPointsRepository.Instance.GetParserImplementation(fileExtension) != null) { // Get SrcMLService and use its API to get the XElement var srcMLService = (sender as ISrcMLGlobalService); cancelToken.ThrowIfCancellationRequested(); var xelement = GetXElementForFile(args, srcMLService); var indexUpdateManager = ServiceLocator.Resolve <IndexUpdateManager>(); var elapsed = lastTime - DateTime.Now; if (FileEventType.FileDeleted == args.EventType || !lastFile.Equals(sourceFilePath.ToLowerInvariant()) || elapsed.TotalMilliseconds > 1000) { switch (args.EventType) { case FileEventType.FileAdded: documentIndexer.DeleteDocuments(sourceFilePath.ToLowerInvariant()); //"just to be safe!" indexUpdateManager.Update(sourceFilePath.ToLowerInvariant(), xelement); SwumManager.Instance.AddSourceFile(sourceFilePath.ToLowerInvariant(), xelement); break; case FileEventType.FileChanged: documentIndexer.DeleteDocuments(sourceFilePath.ToLowerInvariant()); indexUpdateManager.Update(sourceFilePath.ToLowerInvariant(), xelement); SwumManager.Instance.UpdateSourceFile(sourceFilePath.ToLowerInvariant(), xelement); break; case FileEventType.FileDeleted: documentIndexer.DeleteDocuments(sourceFilePath.ToLowerInvariant(), commitImmediately); SwumManager.Instance.RemoveSourceFile(sourceFilePath.ToLowerInvariant()); break; case FileEventType.FileRenamed: // FileRenamed is repurposed. Now means you may already know about it, so check and only parse if not existing if (!SwumManager.Instance.ContainsFile(sourceFilePath.ToLowerInvariant())) { documentIndexer.DeleteDocuments(sourceFilePath.ToLowerInvariant()); //"just to be safe!" indexUpdateManager.Update(sourceFilePath.ToLowerInvariant(), xelement); SwumManager.Instance.AddSourceFile(sourceFilePath.ToLowerInvariant(), xelement); } break; } if (args.EventType != FileEventType.FileDeleted) { lastFile = sourceFilePath.ToLowerInvariant(); lastTime = DateTime.Now; } } } } else { documentIndexer.DeleteDocuments(sourceFilePath, commitImmediately); } } }; StartNew(action, cancelTokenSource); }
private void RespondToFileProcessed(object sender, FileEventRaisedArgs e) { OnFileProcessed(e); }
public static void SourceFileChanged(object sender, FileEventRaisedArgs args) { fera = args; switch(args.EventType) { case FileEventType.FileAdded: receivedFileAdded = true; break; case FileEventType.FileChanged: receivedFileUpdated = true; break; case FileEventType.FileDeleted: receivedFileDeleted = true; break; } }
void _srcMonitor_FileChanged(object sender, FileEventRaisedArgs e) { OnFileProcessed(e); }
public void CheckSrcMLFiles() { string sourcePath = fera.FilePath; string oldSourcePath = fera.OldFilePath; FileEventType type = fera.EventType; bool hasSrcML = fera.HasSrcML; if(type == FileEventType.FileAdded || type == FileEventType.FileChanged) { Assert.IsTrue((receivedFileAdded || receivedFileUpdated)); if(hasSrcML) { SrcMLArchive archive = srcMLService.GetSrcMLArchive(); Assert.IsNotNull(archive, "GetSrcMLArchive returned null."); string srcMLPath = archive.GetXmlPathForSourcePath(sourcePath); ////WriteLog(logFilePath, "Adding/Updating srcMLPath = " + srcMLPath); Assert.IsTrue(File.Exists(srcMLPath), "The srcML file [" + srcMLPath + "] does not exist."); Assert.AreEqual(new FileInfo(sourcePath).LastWriteTime, new FileInfo(srcMLPath).LastWriteTime); XElement xelement = srcMLService.GetXElementForSourceFile(sourcePath); Assert.IsNotNull(xelement, "GetXElementForSourceFile returned null."); } } else if(type == FileEventType.FileDeleted) { Assert.IsTrue(receivedFileDeleted); SrcMLArchive archive = srcMLService.GetSrcMLArchive(); Assert.IsNotNull(archive, "GetSrcMLArchive returned null."); string srcMLPath = archive.GetXmlPathForSourcePath(sourcePath); ////WriteLog(logFilePath, "Deleting srcMLPath = " + srcMLPath); Assert.IsFalse(File.Exists(srcMLPath), "The srcML file [" + srcMLPath + "] still exists."); XElement xelementX = srcMLService.GetXElementForSourceFile(sourcePath); Assert.IsNull(xelementX, "GetXElementForSourceFile returned not null."); } receivedFileAdded = receivedFileUpdated = receivedFileDeleted = false; fera = null; }
/// <summary> /// Respond to the FileChanged event from Solution Monitor. /// </summary> /// <param name="sender"></param> /// <param name="eventArgs"></param> private void RespondToFileChangedEvent(object sender, FileEventRaisedArgs eventArgs) { OnFileChanged(eventArgs); }
void _srcMonitor_FileChanged(object sender, FileEventRaisedArgs e) { OnFileProcessed(e); }