예제 #1
0
        public void MoveDirectory(string fromVirtualPath, string destinationVirtualPath)
        {
            var source = FileSystemPath.Directory(fromVirtualPath);
            var target = FileSystemPath.Directory(destinationVirtualPath);

            if (target.IsDescendantOf(source))
            {
                throw new ApplicationException("Cannot move directory into own subdictory.");
            }

            using (var trx = Session.BeginTransaction())
            {
                var directory   = GetSpecificItem(source);
                var descendants = Session
                                  .CreateCriteria <FileSystemItem>()
                                  .Add(Restrictions.Like("Path.Parent", directory.Path.ToString(), MatchMode.Start))
                                  .List <FileSystemItem>();

                foreach (var item in descendants)
                {
                    item.Path.Rebase(source, target);
                }

                directory.Updated = Utility.CurrentTime();
                directory.Path    = target;
                Session.Update(directory);

                trx.Commit();
            }

            if (DirectoryMoved != null)
            {
                DirectoryMoved.Invoke(this, new FileEventArgs(destinationVirtualPath, fromVirtualPath));
            }
        }
예제 #2
0
        public void MoveDirectory(string fromVirtualPath, string destinationVirtualPath)
        {
            isp.RenameFolder(ToRelative(fromVirtualPath), ToRelative(destinationVirtualPath));

            if (DirectoryMoved != null)
            {
                DirectoryMoved.Invoke(this, new FileEventArgs(destinationVirtualPath, fromVirtualPath));
            }
        }
예제 #3
0
        public void MoveDirectory(string fromVirtualPath, string destinationVirtualPath)
        {
            Directory.Move(MapPath(fromVirtualPath), MapPath(destinationVirtualPath));

            if (DirectoryMoved != null)
            {
                DirectoryMoved.Invoke(this, new FileEventArgs(destinationVirtualPath, fromVirtualPath));
            }
        }
예제 #4
0
        public void MoveDirectory(string fromVirtualPath, string destinationVirtualPath)
        {
            try
            {
                Directory.Move(MapPath(fromVirtualPath), MapPath(destinationVirtualPath));
            }
            catch (IOException)
            {
                // retry once
                Thread.Sleep(10);
                Directory.Move(MapPath(fromVirtualPath), MapPath(destinationVirtualPath));
            }

            if (DirectoryMoved != null)
            {
                DirectoryMoved.Invoke(this, new FileEventArgs(destinationVirtualPath, fromVirtualPath));
            }
        }
예제 #5
0
        public void MoveDirectory(string fromVirtualPath, string destinationVirtualPath)
        {
            string      fixedPath   = FixPath(fromVirtualPath);
            MongoGridFS mongoGridFs = GetGridFS();
            var         fileInfos   = mongoGridFs.Find(Query.Matches("metadata.directory_name", new BsonRegularExpression(new Regex(@"^" + fixedPath))));

            foreach (var fi in fileInfos)
            {
                string newFileName = FixPath(destinationVirtualPath + "/" + fi.Name.Substring(fromVirtualPath.Length));
                InternalMoveFile(fi.Name, newFileName);
            }

            InternalMoveFile(fromVirtualPath, destinationVirtualPath);

            if (DirectoryMoved != null)
            {
                DirectoryMoved.Invoke(this, new FileEventArgs(destinationVirtualPath, fromVirtualPath));
            }
        }