示例#1
0
    public override IEnumerable <FileManagerFile> GetFiles(FileManagerFolder folder)
    {
        DbFileSystemItem dbFolderItem = FindDbFolderItem(folder);

        return
            (from dbItem in DataContext.DbFileSystemItems
             where !dbItem.IsFolder && dbItem.ParentId == dbFolderItem.Id
             select new FileManagerFile(this, folder, dbItem.Name, dbItem.Id.ToString()));
    }
示例#2
0
    public override IEnumerable <FileManagerFolder> GetFolders(FileManagerFolder parentFolder)
    {
        DbFileSystemItem dbFolderItem = FindDbFolderItem(parentFolder);

        return
            (from dbItem in FolderCache.Values
             where dbItem.IsFolder && dbItem.ParentId == dbFolderItem.Id
             select new FileManagerFolder(this, parentFolder, dbItem.Name, dbItem.Id.ToString()));
    }
示例#3
0
    protected DbFileSystemItem FindDbFileItem(FileManagerFile file)
    {
        DbFileSystemItem dbFolderItem = FindDbFolderItem(file.Folder);

        if (dbFolderItem == null)
        {
            return(null);
        }
        return
            ((from dbItem in DataContext.DbFileSystemItems
              where dbItem.ParentId == dbFolderItem.Id && !dbItem.IsFolder && dbItem.Name == file.Name
              select dbItem).FirstOrDefault());
    }
示例#4
0
    void CopyCore(DbFileSystemItem item, string path, bool isFolder)
    {
        FileManagerFolder newParentFolder = new FileManagerFolder(this, path);

        UpdateAndSubmitChanges(newParentFolder,
                               dbItem => DataContext.DbFileSystemItems.InsertOnSubmit(new DbFileSystemItem()
        {
            Name          = item.Name,
            Data          = item.Data,
            ParentId      = dbItem.Id,
            LastWriteTime = DateTime.Now,
            IsFolder      = isFolder
        }));
    }
示例#5
0
    // Returns the path to a specified folder relative to a root folder
    protected string GetRelativeName(DbFileSystemItem dbFolder)
    {
        if (dbFolder.Id == DbRootItemId)
        {
            return(string.Empty);
        }
        if (dbFolder.ParentId == DbRootItemId)
        {
            return(dbFolder.Name);
        }
        if (!FolderCache.ContainsKey(dbFolder.ParentId))
        {
            return(null);
        }
        string name = GetRelativeName(FolderCache[dbFolder.ParentId]);

        return(name == null ? null : Path.Combine(name, dbFolder.Name));
    }
示例#6
0
    public override void CopyFolder(FileManagerFolder folder, FileManagerFolder newParentFolder)
    {
        List <FileManagerFolder> folders = new List <FileManagerFolder>();

        FillSubFoldersList(folder, folders);
        int folderNameOffset = !string.IsNullOrEmpty(folder.Parent.RelativeName) ? folder.Parent.RelativeName.Length + 1 : 0;

        foreach (FileManagerFolder copyingFolder in folders)
        {
            DbFileSystemItem dbFolderItem = FindDbFolderItem(copyingFolder);
            string           folderPath   = newParentFolder.RelativeName;
            if (copyingFolder != folder)
            {
                folderPath = Path.Combine(folderPath, copyingFolder.Parent.RelativeName.Substring(folderNameOffset));
            }
            CopyCore(dbFolderItem, folderPath, true);
            foreach (FileManagerFile currentFile in copyingFolder.GetFiles())
            {
                DbFileSystemItem dbFileItem = FindDbFileItem(currentFile);
                CopyCore(dbFileItem, Path.Combine(folderPath, copyingFolder.Name), false);
            }
        }
    }
示例#7
0
 partial void DeleteDbFileSystemItem(DbFileSystemItem instance);
示例#8
0
 partial void UpdateDbFileSystemItem(DbFileSystemItem instance);
示例#9
0
 partial void InsertDbFileSystemItem(DbFileSystemItem instance);
示例#10
0
 protected void UpdateAndSubmitChangesCore(DbFileSystemItem dbitem, Action <DbFileSystemItem> update)
 {
     update(dbitem);
     DataContext.SubmitChanges();
     RefreshFolderCache();
 }