Exemplo n.º 1
0
        /// <summary>
        /// Raises the <see cref="FileChanged"/> event.
        /// </summary>
        /// <param name="sender">The caller</param>
        /// <param name="e">The event arguments</param>
        protected virtual void RespondToArchiveFileEvent(object sender, FileEventRaisedArgs e)
        {
            //SrcMLFileLogger.DefaultLogger.Info("AbstractFileMonitor.RespondToArchiveFileEvent() type = " + e.EventType + ", file = " + e.FilePath + ", oldfile = " + e.OldFilePath + ", HasSrcML = " + e.HasSrcML);
            FileInfo fi = new FileInfo(e.FilePath);

            OnFileChanged(e);
        }
Exemplo n.º 2
0
 protected override void OnFileChanged(FileEventRaisedArgs e)
 {
     if (e.EventType != FileEventType.FileDeleted)
     {
         e.HasSrcML = true;
     }
     base.OnFileChanged(e);
 }
Exemplo n.º 3
0
        /// <summary>
        /// event handler for <see cref="FileChanged"/>
        /// </summary>
        /// <param name="e">event arguments</param>
        protected virtual void OnFileChanged(FileEventRaisedArgs e)
        {
            EventHandler <FileEventRaisedArgs> handler = FileChanged;

            if (handler != null)
            {
                handler(this, e);
            }
        }
Exemplo n.º 4
0
 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));
             }));
 }
Exemplo n.º 5
0
        /// <summary>
        /// This is the method that is called whenever the <see cref="AbstractArchive.FileChanged"/> event from the <see cref="MonitoredArchive"/> is fired.
        /// </summary>
        /// <param name="sender">The sender (should be <see cref="MonitoredArchive"/>)</param>
        /// <param name="e">The file that has been changed</param>
        protected void MonitoredArchive_FileChanged(object sender, FileEventRaisedArgs e)
        {
            Task task = null;

            switch (e.EventType)
            {
            case FileEventType.FileAdded:
                task = AddFileAsync(e.FilePath);
                break;

            case FileEventType.FileChanged:
                task = UpdateFileAsync(e.FilePath);
                break;

            case FileEventType.FileDeleted:
                task = DeleteFileAsync(e.FilePath);
                break;

            case FileEventType.FileRenamed:
                task = RenameFileAsync(e.OldFilePath, e.FilePath);
                break;
            }
            task.ContinueWith((t) => OnFileChanged(e));
        }
Exemplo n.º 6
0
 /// <summary>
 /// Raise the FileChanged event.
 /// </summary>
 /// <param name="e"></param>
 protected virtual void OnFileChanged(FileEventRaisedArgs e) {
     EventHandler<FileEventRaisedArgs> handler = FileChanged;
     if(handler != null) {
         handler(this, e);
     }
 }
Exemplo n.º 7
0
 /// <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);
 }
Exemplo n.º 8
0
 /// <summary>
 /// Raises the <see cref="FileChanged"/> event.
 /// </summary>
 /// <param name="sender">The caller</param>
 /// <param name="e">The event arguments</param>
 protected virtual void RespondToArchiveFileEvent(object sender, FileEventRaisedArgs e) {
     //SrcMLFileLogger.DefaultLogger.Info("AbstractFileMonitor.RespondToArchiveFileEvent() type = " + e.EventType + ", file = " + e.FilePath + ", oldfile = " + e.OldFilePath + ", HasSrcML = " + e.HasSrcML);
     FileInfo fi = new FileInfo(e.FilePath);
     OnFileChanged(e);
 }
        public void SourceFileChanged(object sender, FileEventRaisedArgs args, bool commitImmediately = false)
        {
            var cancelTokenSource = new CancellationTokenSource();
            var cancelToken = cancelTokenSource.Token;
            Action action = () =>
            {
                if (cancelToken.IsCancellationRequested)
                {
                    cancelToken.ThrowIfCancellationRequested();
                }
                var documentIndexer = ServiceLocator.Resolve<DocumentIndexer>();

                if (CanBeIndexed(args.FilePath))
                {
                    string sourceFilePath = args.FilePath;
                    string oldSourceFilePath = args.OldFilePath;

                    ProcessFileEvent(sender as ISrcMLGlobalService, args, commitImmediately, documentIndexer);
                }
                else
                {
                    documentIndexer.DeleteDocuments(args.FilePath, commitImmediately);
                }
            };
            StartNew(action, cancelTokenSource);
        }
 public void SourceFileChanged(object sender, FileEventRaisedArgs args)
 {
     var currentIndexer = ServiceLocator.ResolveOptional<DocumentIndexer>();
     if (currentIndexer != null && !currentIndexer.IsDisposingOrDisposed())
         SourceFileChanged(sender, args, false);
 }
        private static void ProcessFileEvent(ISrcMLGlobalService srcMLService, FileEventRaisedArgs args,
            bool commitImmediately, DocumentIndexer documentIndexer)
        {
            string sourceFilePath = args.FilePath;
            var fileExtension = Path.GetExtension(sourceFilePath);
            var parsableToXml = (ExtensionPointsRepository.Instance.GetParserImplementation(fileExtension) != null);
            if (ConcurrentIndexingMonitor.TryToLock(sourceFilePath)) return;
            XElement xelement = null;
            if (parsableToXml)
            {
                xelement = GetXElement(args, srcMLService);
                if (xelement == null && args.EventType != FileEventType.FileDeleted) return;
            }
            var indexUpdateManager = ServiceLocator.Resolve<IndexUpdateManager>();
            try
            {
                switch (args.EventType)
                {
                    case FileEventType.FileAdded:
                        documentIndexer.DeleteDocuments(sourceFilePath.ToLowerInvariant()); //"just to be safe!"
                        indexUpdateManager.Update(sourceFilePath.ToLowerInvariant(), xelement);
                        if (parsableToXml)
                        {
                            SwumManager.Instance.AddSourceFile(sourceFilePath.ToLowerInvariant(), xelement);
                        }
                        break;

                    case FileEventType.FileChanged:
                        documentIndexer.DeleteDocuments(sourceFilePath.ToLowerInvariant());
                        indexUpdateManager.Update(sourceFilePath.ToLowerInvariant(), xelement);
                        if (parsableToXml)
                        {
                            SwumManager.Instance.UpdateSourceFile(sourceFilePath.ToLowerInvariant(), xelement);
                        }
                        break;

                    case FileEventType.FileDeleted:
                        documentIndexer.DeleteDocuments(sourceFilePath.ToLowerInvariant(), commitImmediately);
                        if (parsableToXml)
                        {
                            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);
                            if (parsableToXml)
                            {
                                SwumManager.Instance.AddSourceFile(sourceFilePath.ToLowerInvariant(), xelement);
                            }
                        }
                        break;

                    default:
                        // if we get here, a new event was probably added. for now, no-op
                        break;
                }
            }
            catch (AlreadyClosedException ace)
            {
                //ignore, index closed
            }
            ConcurrentIndexingMonitor.ReleaseLock(sourceFilePath);
        }
 private static XElement GetXElement(FileEventRaisedArgs args, ISrcMLGlobalService srcMLService)
 {
     try
     {
         return srcMLService.GetXElementForSourceFile(args.FilePath);
     }
     catch (ArgumentException e)
     {
         return XElement.Load(args.FilePath);
     }
 }
Exemplo n.º 13
0
       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;
           }
       }