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())); }
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())); }
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()); }
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 })); }
// 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)); }
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); } } }
partial void DeleteDbFileSystemItem(DbFileSystemItem instance);
partial void UpdateDbFileSystemItem(DbFileSystemItem instance);
partial void InsertDbFileSystemItem(DbFileSystemItem instance);
protected void UpdateAndSubmitChangesCore(DbFileSystemItem dbitem, Action <DbFileSystemItem> update) { update(dbitem); DataContext.SubmitChanges(); RefreshFolderCache(); }