public ChangeModeFileOperationInfo(FileSystemItemInfo item, FilePermission? userMode, FilePermission? groupMode, FilePermission? otherMode, bool? uidBit, bool? gidBit, bool? stickyBit, bool recursive)
     : base(item, recursive)
 {
     this.UserMode = userMode;
     this.GroupMode = groupMode;
     this.OtherMode = otherMode;
     this.UIDBit = uidBit;
     this.GIDBit = gidBit;
     this.StickyBit = stickyBit;
 }
 protected override void Action(FileSystemItemInfo item)
 {
     ChangeModeFileOperationInfo info = (ChangeModeFileOperationInfo)this.Info;
     this.directoryService.ChangePermissions (item,
                                             info.UserMode.HasValue ? info.UserMode.Value : item.UserMode,
                                             info.GroupMode.HasValue ? info.GroupMode.Value : item.GroupMode,
                                             info.OtherMode.HasValue ? info.OtherMode.Value : item.OtherMode,
                                             info.UIDBit.HasValue ? info.UIDBit.Value : item.UIDBit,
                                             info.GIDBit.HasValue ? info.GIDBit.Value : item.GIDBit,
                                             info.StickyBit.HasValue ? info.StickyBit.Value : item.StickyBit);
 }
 protected abstract void Action(FileSystemItemInfo item);
 protected override void Action(FileSystemItemInfo item)
 {
     this.directoryService.Delete (item);
 }
 private string GetTargetPath(FileSystemItemInfo item)
 {
     CopyFileOperationInfo info = (CopyFileOperationInfo)this.Info;
     string relativeTargetPath = item.DirectoryPath.Remove (0, info.Item.DirectoryPath.Length);
     if (relativeTargetPath.StartsWith ("/"))
         relativeTargetPath = relativeTargetPath.Remove (0, 1);
     return Path.Combine (info.TargetItem.Path, relativeTargetPath);
 }
        protected override void PreAction(FileSystemItemInfo item)
        {
            base.PreAction (item);

            if (item is DirectoryItemInfo && string.IsNullOrEmpty (item.LinkTarget)) {
                string targetPath = this.GetTargetPath (item);

                FileSystemItemInfo targetItem = this.directoryService.Get (Path.Combine (targetPath, item.Name), 0);

                if (targetItem is FileItemInfo)
                    directoryService.Delete (targetItem);

                if (targetItem == null || targetItem is FileItemInfo)
                    Directory.CreateDirectory (Path.Combine (targetPath, item.Name));
            }
        }
 public int Start(FileSystemItemInfo item)
 {
     return (int)this.Call ("Start", item);
 }
 protected override void Action(FileSystemItemInfo item)
 {
     ChangeOwnerFileOperationInfo info = (ChangeOwnerFileOperationInfo)this.Info;
     this.directoryService.ChangeOwner (item, info.NewUID, info.NewGID);
 }
        private void FileOperationItemWorker(FileSystemItemInfo item, bool check)
        {
            if (!this.BlockedItems.Contains (item.Path)) {
                ((FileOperationInfo)this.Info).Actual = item;

                if (check) {
                    this.CheckAction (item);
                } else {
                    this.PreAction (item);
                }

                if (this.ShouldRecruse && item is DirectoryItemInfo) {
                    foreach (FileSystemItemInfo contentItem in this.directoryService.GetContents ((DirectoryItemInfo)item, 0)) {
                        this.FileOperationItemWorker (contentItem, check);
                    }
                }

                if (!check) {
                    this.Action (item);
                    this.PostAction (item);
                }
            }
        }
Esempio n. 10
0
 public MoveFileOperationInfo(FileSystemItemInfo item, DirectoryItemInfo targetItem, bool quiet)
     : base(item, targetItem, quiet)
 {
 }
Esempio n. 11
0
 public FileOperationInfo(FileSystemItemInfo item)
     : base()
 {
     this.Item = item;
 }
Esempio n. 12
0
 public DeleteFileOperationInfo(FileSystemItemInfo item)
     : base(item)
 {
 }
Esempio n. 13
0
 public CopyFileOperationInfo(FileSystemItemInfo item, DirectoryItemInfo targetItem, bool quiet)
     : base(item)
 {
     this.TargetItem = targetItem;
     this.Quiet = quiet;
 }
Esempio n. 14
0
 public ChangeFileOperationInfo(FileSystemItemInfo item, bool recursive)
     : base(item)
 {
     this.Recursive = recursive;
 }
 public int Start(FileSystemItemInfo item, DirectoryItemInfo targetItem, bool quiet)
 {
     return (int)this.Call ("Start", item, targetItem, quiet);
 }
 protected virtual void CheckAction(FileSystemItemInfo item)
 {
 }
 protected virtual void PreAction(FileSystemItemInfo item)
 {
 }
Esempio n. 18
0
 public ChangeOwnerFileOperationInfo(FileSystemItemInfo item, uint newUID, uint newGID, bool recursive)
     : base(item, recursive)
 {
     this.NewUID = newUID;
     this.NewGID = newGID;
 }
        protected override void Action(FileSystemItemInfo item)
        {
            CopyFileOperationInfo info = (CopyFileOperationInfo)this.Info;

            info.Actual = item;
            if (item is FileItemInfo) {
                info.ActualProgress = new ProgressInfo ();
                info.ActualProgress.Max = ((FileItemInfo)item).Size;
            }

            string targetPath = this.GetTargetPath (item);

            if (item is FileItemInfo || (item is DirectoryItemInfo && !string.IsNullOrEmpty (item.LinkTarget))) {
                FileSystemItemInfo targetItem = this.directoryService.Get (Path.Combine (this.GetTargetPath (item), item.Name), 0);

                if (targetItem != null)
                    this.directoryService.Delete (targetItem);

                FileProgressWatcher watcher = new FileProgressWatcher (Path.Combine (targetPath, item.Name), info.ActualProgress);
                try {
                    if (info is MoveFileOperationInfo)
                        this.directoryService.Move (item, ((DirectoryItemInfo)this.directoryService.Get (targetPath, 0)));
                    else {
                        this.directoryService.Copy (item, ((DirectoryItemInfo)this.directoryService.Get (targetPath, 0)));
                        FileSystemItemInfo newItem = this.directoryService.Get (System.IO.Path.Combine (targetPath, item.Name), 0);
                        this.directoryService.ChangePermissions (newItem, item.UserMode, item.GroupMode, item.OtherMode, item.UIDBit, item.GIDBit, item.StickyBit);
                        this.directoryService.ChangeOwner (newItem, item.UID, item.GID);
                    }
                } finally {
                    watcher.Stop ();
                }
            } else if (info is MoveFileOperationInfo && Directory.GetDirectories (item.Path).Length == 0 && Directory.GetFiles (item.Path).Length == 0) {
                this.directoryService.Delete (item);
            }

            if (item is FileItemInfo) {
                info.ActualProgress.Current = ((FileItemInfo)item).Size;
                info.OverallProgress.Current += ((FileItemInfo)item).Size;
            }
        }
        protected override void CheckAction(FileSystemItemInfo item)
        {
            base.CheckAction (item);
            if (!item.CanCopy ())
                throw new AccessViolationException ("you have no permission to copy <" + item.Path + ">");

            FileSystemItemInfo targetItem = this.directoryService.Get (Path.Combine (this.GetTargetPath (item), item.Name), 0);
            if (targetItem is FileItemInfo && !((CopyFileOperationInfo)this.Info).Quiet) {
                ((CopyFileOperationInfo)this.Info).ConflictItem = targetItem;
                if (targetItem.CanDelete ()) {
                    ((CopyFileOperationInfo)this.Info).ConflictOverwriteable = true;
                } else {
                    ((CopyFileOperationInfo)this.Info).ConflictOverwriteable = false;
                }

                this.InConflict = true;
            }

            while (this.InConflict)
                Thread.Sleep (10);
            if (item is FileItemInfo)
                ((CopyFileOperationInfo)this.Info).OverallProgress.Max += ((FileItemInfo)item).Size;
        }
 protected override void CheckAction(FileSystemItemInfo item)
 {
     base.CheckAction (item);
     if (!item.CanChange ())
         throw new AccessViolationException ("you have no permission to change <" + item.Path + ">");
 }
 public int Start(FileSystemItemInfo item, ushort newUID, ushort newGID, bool recursive)
 {
     return (int)this.Call ("Start", item, newUID, newGID, recursive);
 }