示例#1
0
 /// <summary>
 /// Handles the Deleted event of the Watcher control.
 /// if the renamed is folder all child dir and files get deleted flag
 /// </summary>
 /// <param name="sender">The source of the event.</param>
 /// <param name="e">The <see cref="FileSystemEventArgs"/> instance containing the event data.</param>
 private void Watcher_Deleted(object sender, FileSystemEventArgs e)
 {
     if (IsFiltered(e.FullPath))
     {
         return;
     }
     Tree_Creator._m_File_Manager_Tree_FileTree_Node ft = mfmtfdb.GetFromPath(e.FullPath);
     if (ft != null)
     {
         ft.LastChange = DateTime.Now;
         ft.Deleted    = true;
         mfmtfdb.UpdateFileTreeNode(ft);
         SetDeletedFlagToAllSubFT(ft);
     }
     else
     {
         ///<description>
         ///if the deleted file or folder is not find ergo when the file is created
         ///the whatcher is not up (for many reason like program is down or any)
         ///now we go back to top and top to find last parent is logged into db
         ///after find that start to record all childs to end after that
         ///set deleted flag to current file or dir
         ///</description>
         WriteChange(e);
         Watcher_Deleted(sender, e);
     }
 }
示例#2
0
 /// <summary>
 /// Handles the Changed event of the Watcher control.
 /// </summary>
 /// <param name="sender">The source of the event.</param>
 /// <param name="e">The <see cref="FileSystemEventArgs"/> instance containing the event data.</param>
 private void Watcher_Changed(object sender, FileSystemEventArgs e)
 {
     if (IsFiltered(e.FullPath))
     {
         return;
     }
     Tree_Creator._m_File_Manager_Tree_FileTree_Node ft = mfmtfdb.GetFromPath(e.FullPath);
     if (ft != null)
     {
         ft.LastChange = DateTime.Now;
         mfmtfdb.UpdateFileTreeNode(ft);
     }
     else
     {
         WriteChange(e);
     }
 }
示例#3
0
 /// <summary>
 /// Sets the newft to parent all sub ft.
 /// </summary>
 /// <param name="newft">The newft.</param>
 /// <param name="oldft">The oldft.</param>
 private void SetNewftToParentAllSubFT(Tree_Creator._m_File_Manager_Tree_FileTree_Node newft, Tree_Creator._m_File_Manager_Tree_FileTree_Node oldft)
 {
     while (true)
     {
         List <Tree_Creator._m_File_Manager_Tree_FileTree_Node> Childs = mfmtfdb.GetChilds(oldft);
         if (Childs != null)
         {
             foreach (Tree_Creator._m_File_Manager_Tree_FileTree_Node Child in Childs)
             {
                 Child.LastChange = DateTime.Now;
                 Child.Id_Parent  = newft.Id;
                 mfmtfdb.UpdateFileTreeNode(Child);
             }
         }
         break;
     }
 }
示例#4
0
 /// <summary>
 /// Sets the deleted flag to all sub ft.
 /// </summary>
 /// <param name="ft">The ft.</param>
 private void SetDeletedFlagToAllSubFT(Tree_Creator._m_File_Manager_Tree_FileTree_Node ft)
 {
     while (true)
     {
         List <Tree_Creator._m_File_Manager_Tree_FileTree_Node> Childs = mfmtfdb.GetChilds(ft);
         if (Childs != null)
         {
             foreach (Tree_Creator._m_File_Manager_Tree_FileTree_Node Child in Childs)
             {
                 Child.LastChange = DateTime.Now;
                 Child.Deleted    = true;
                 mfmtfdb.UpdateFileTreeNode(Child);
                 SetDeletedFlagToAllSubFT(Child);
             }
         }
         break;
     }
 }
示例#5
0
        /// <summary>
        /// Handles the Renamed event of the Watcher control.
        /// if the renamed is folder all child dir and files get new parent
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="RenamedEventArgs"/> instance containing the event data.</param>
        private void Watcher_Renamed(object sender, RenamedEventArgs e)
        {
            if (IsFiltered(e.FullPath))
            {
                return;
            }

            Tree_Creator._m_File_Manager_Tree_FileTree_Node oldft = mfmtfdb.GetFromPath(e.OldFullPath);
            if (oldft != null)
            {
                WriteChange(e);
                Tree_Creator._m_File_Manager_Tree_FileTree_Node newft = mfmtfdb.GetFromPath(e.FullPath);
                oldft.LastChange = newft.LastChange;
                oldft.Deleted    = true;
                oldft.RenamedTo  = newft.Id;

                mfmtfdb.UpdateFileTreeNode(oldft);
                SetNewftToParentAllSubFT(newft, oldft);
            }
            else
            {
                WriteChange(e);
            }
        }
示例#6
0
        /// <summary>
        /// Writes the change.
        /// </summary>
        /// <param name="e">The <see cref="FileSystemEventArgs"/> instance containing the event data.</param>
        private void WriteChange(FileSystemEventArgs e)
        {
            if (IsFiltered(e.FullPath))
            {
                return;
            }
            Tree_Creator._m_File_Manager_Tree_FileTree_Node Parent_ft = mfmtfdb.GetParentFromPath(e.FullPath);
            if (Parent_ft != null)
            {
                Tree_Creator._m_File_Manager_Tree_FileTree_Node new_child_ft = new Tree_Creator._m_File_Manager_Tree_FileTree_Node();
                new_child_ft.Id_Parent = Parent_ft.Id;
                new_child_ft.Name      = GetNameFromFullPath(e.FullPath);
                FileInfo fi = new FileInfo(e.FullPath);
                ///<description>
                ///detect file or dir
                ///when file has attribiute -1 hasflag not work and detect file like dir
                ///i think when file is open by another process attribiute is -1
                ///</description>
                //Additional information: Access to the path 'C:\Windows\Prefetch\CONSENT.EXE-65F6206D.pf' is denied.
                try
                {
                    if (fi.Attributes.HasFlag(FileAttributes.Directory))
                    {
                        new_child_ft.Type = Tree_Creator._m_File_Manager_Tree_FileTree_Node.enum_Type.Directory;
                    }
                    else
                    {
                        new_child_ft.Type = Tree_Creator._m_File_Manager_Tree_FileTree_Node.enum_Type.File;
                    }
                }
                catch (Exception ex)
                {
                    new_child_ft.Type = Tree_Creator._m_File_Manager_Tree_FileTree_Node.enum_Type.File;
                }
                new_child_ft.LastChange = DateTime.Now;
                ///<description>
                ///set End_Progress to all new file and dir because before change it . on tree creator
                ///log all dir and folder
                ///the new dir has no child
                ///and when create new child record again
                ///</description>
                new_child_ft.Progress = Tree_Creator._m_File_Manager_Tree_FileTree_Node.enum_Progress.End_Progress;
                mfmtfdb.WriteNew(new_child_ft);
            }
            else
            {
                ///<description>
                ///if the deleted file or folder is not find ergo when the file is created
                ///the whatcher is not up (for many reason like program is down or any)
                ///now we go back to top and top to find last parent is logged into db
                ///after find that start to record all childs to end after that
                ///</description>


                FileInfo fi = new FileInfo(e.FullPath);
                while (fi.Directory != null)
                {
                    fi        = new FileInfo(fi.Directory.FullName);
                    Parent_ft = mfmtfdb.GetParentFromPath(fi.FullName);
                    if (Parent_ft != null)
                    {
                        string directory       = fi.FullName.Substring(0, fi.FullName.LastIndexOf("\\"));
                        string name            = fi.FullName.Substring(fi.FullName.LastIndexOf("\\") + 1);
                        FileSystemEventArgs ee = new FileSystemEventArgs(new WatcherChangeTypes(), directory, name);
                        WriteChange(ee);
                        break;
                    }
                }
            }
        }