/// <summary> /// The get document. /// </summary> /// <param name="parentCollection"> /// The parent collection. /// </param> /// <param name="path"> /// The path. /// </param> /// <param name="rootPath"> /// The root path. /// </param> /// <param name="rootGuid"> /// The root guid. /// </param> /// <returns> /// The <see cref="WebDavSqlStoreDocument" />. /// </returns> public WebDavSqlStoreDocument GetDocument(IWebDavStoreCollection parentCollection, string path, string rootPath, Guid rootGuid) { if (!Enabled) { return(new WebDavSqlStoreDocument(parentCollection, path, rootPath, rootGuid, Store)); } var p = PrincipleFactory.Instance.GetPrinciple(FromType.WebDav); string userkey = p.UserProfile.SecurityObjectId.ToString(); CacheBase mc = GetCachedObject(path) as CacheBase; WebDavSqlStoreDocument itm = null; if (mc != null) { itm = mc.GetCachedObject(userkey) as WebDavSqlStoreDocument; } if (itm != null) { return(itm); } itm = new WebDavSqlStoreDocument(parentCollection, path, rootPath, rootGuid, Store); if (mc == null) { mc = new CacheBase(); mc.AddCacheObject(userkey, itm); AddCacheObject(path, mc); } else { mc.AddCacheObject(userkey, itm); } return(itm); }
/// <summary> /// Retrieves all locks for the passed object /// </summary> /// <param name="storeItem">Item to look for locks for.</param> /// <returns></returns> public override List <IWebDavStoreItemLockInstance> GetLocks(IWebDavStoreItem storeItem) { try { List <IWebDavStoreItemLockInstance> items = new List <IWebDavStoreItemLockInstance>(); using (var context = new OnlineFilesEntities()) { List <ObjectLockInfo> result; WebDavSqlStoreCollection item = storeItem as WebDavSqlStoreCollection; if (item != null) { var collection = item; result = context.ObjectLockInfoes.AsNoTracking().Where(d => d.ObjectGuid == collection.ObjectGuid && d.isFolder).ToList(); } else { WebDavSqlStoreDocument storeDocument = storeItem as WebDavSqlStoreDocument; if (storeDocument != null) { var document = storeDocument; result = context.ObjectLockInfoes.AsNoTracking().Where(d => d.ObjectGuid == document.ObjectGuid && !d.isFolder).ToList(); } else { throw new NotSupportedException(); } } items.AddRange(result.Select(lockInfo => new WebDavSqlStoreItemLockInstance( PrincipleFactory.Instance.GetPrinciple(FromType.WebDav).UserProfile, lockInfo.Path, (WebDavLockScope)lockInfo.LockScope, (WebDavLockType)lockInfo.LockType, lockInfo.Owner.ToString(), lockInfo.RequestedLockTimeout, lockInfo.Token, new XmlDocument(), lockInfo.Depth, this, lockInfo.CreateDt ))); return(items); } } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); throw; } }
/// <summary> /// </summary> /// <param name="item"></param> public void Delete(IWebDavStoreItem item) { #if DEBUG Log.Info("Deleting Item: " + item.Name); #endif if (IsCheckedOut(item)) { throw new Exception("Item is checked out."); } using (var context = new OnlineFilesEntities()) { var collection = item as WebDavSqlStoreCollection; if (collection != null) { Folder folder = context.Folders.FirstOrDefault(d => d.pk_FolderId == collection.ObjectGuid); if (folder == null) { throw new WebDavNotFoundException("Folder Not Found."); } folder.SetDeleted(PrincipleFactory.Instance.GetPrinciple(FromType.WebDav).UserProfile); context.SaveChanges(); WebDavSqlStoreCollectionFactory.Instance.InvalidateCollection(item.ItemPath); WebDavSqlStoreCollectionFactory.Instance.InvalidateCollection(ItemPath); } else { WebDavSqlStoreDocument document = item as WebDavSqlStoreDocument; if (document == null) { return; } var doc = document; File file = context.Files.FirstOrDefault(d => d.pk_FileId == doc.ObjectGuid); if (file == null) { throw new WebDavNotFoundException("Folder Not Found."); } file.SetDeleted(PrincipleFactory.Instance.GetPrinciple(FromType.WebDav).UserProfile); context.SaveChanges(); WebDavSqlStoreCollectionFactory.Instance.InvalidateCollection(ItemPath); WebDavSqlStoreDocumentFactory.Instance.InvalidateDocumentPath(doc.ItemPath); } } }
/// <summary> /// </summary> /// <param name="source"></param> /// <param name="destinationName"></param> /// <returns></returns> public IWebDavStoreItem MoveItemHere(IWebDavStoreItem source, string destinationName) { //this -> is where it wants to be moved to. //source is the item //destination name is the name they want it to be. IWebDavStoreItem returnitem; using (var context = new OnlineFilesEntities()) { var sourceFolder = source as WebDavSqlStoreCollection; if (sourceFolder != null) { Folder targetFolder = context.Folders.FirstOrDefault(d => d.pk_FolderId == sourceFolder.ObjectGuid); if (targetFolder == null) { return(null); } Folder destination = context.Folders.FirstOrDefault(d => d.pk_FolderId == ObjectGuid); destination.MoveFolderHere(targetFolder.pk_FolderId, destinationName, PrincipleFactory.Instance.GetPrinciple(FromType.WebDav)); context.SaveChanges(); WebDavSqlStoreCollectionFactory.Instance.InvalidateCollection(ItemPath); WebDavSqlStoreCollectionFactory.Instance.InvalidateCollection(sourceFolder.ItemPath); WebDavSqlStoreCollectionFactory.Instance.InvalidateCollection(Path.Combine(ItemPath, destinationName)); returnitem = WebDavSqlStoreCollectionFactory.Instance.GetCollection(this, Path.Combine(ItemPath, destinationName), RootPath, RootGuid); } else { WebDavSqlStoreDocument document = source as WebDavSqlStoreDocument; if (document == null) { return(null); } WebDavSqlStoreDocument doc = document; var destFolder = context.Folders.FirstOrDefault(d => d.pk_FolderId == ObjectGuid); destFolder.MoveFileHere((Guid)document.ObjectGuid, destinationName, PrincipleFactory.Instance.GetPrinciple(FromType.WebDav)); WebDavSqlStoreDocumentFactory.Instance.InvalidateDocumentPath(Path.Combine(ItemPath, destinationName)); WebDavSqlStoreCollectionFactory.Instance.InvalidateCollection(ItemPath); returnitem = WebDavSqlStoreDocumentFactory.Instance.GetDocument(this, Path.Combine(ItemPath, destinationName), RootPath, RootGuid); } } return(returnitem); }
/// <summary> /// The get document. /// </summary> /// <param name="parentCollection"> /// The parent collection. /// </param> /// <param name="path"> /// The path. /// </param> /// <param name="rootPath"> /// The root path. /// </param> /// <param name="rootGuid"> /// The root guid. /// </param> /// <returns> /// The <see cref="WebDavSqlStoreDocument" />. /// </returns> public WebDavSqlStoreDocument GetDocument(IWebDavStoreCollection parentCollection, string path, string rootPath, Guid rootGuid) { if (!Enabled) return new WebDavSqlStoreDocument(parentCollection, path, rootPath, rootGuid, Store); var p = PrincipleFactory.Instance.GetPrinciple(FromType.WebDav); string userkey = p.UserProfile.SecurityObjectId.ToString(); CacheBase mc = GetCachedObject(path) as CacheBase; WebDavSqlStoreDocument itm = null; if (mc != null) itm = mc.GetCachedObject(userkey) as WebDavSqlStoreDocument; if (itm != null) return itm; itm = new WebDavSqlStoreDocument(parentCollection, path, rootPath, rootGuid, Store); if (mc == null) { mc = new CacheBase(); mc.AddCacheObject(userkey, itm); AddCacheObject(path, mc); } else mc.AddCacheObject(userkey, itm); return itm; }