using System; using AppLimit.CloudComputing.SharpBox.StorageProvider.BaseObjects; namespace AppLimit.CloudComputing.SharpBox.StorageProvider.API { /// /// This class allows to create the needed object which are internally used to create /// extern storage providers /// public class GenericStorageProviderFactory { /// /// This method builds an object /// /// /// /// /// public static ICloudFileSystemEntry CreateFileSystemEntry(IStorageProviderSession session, string Name, ICloudDirectoryEntry parent) { return CreateFileSystemEntry(session, Name, DateTime.Now, 0, parent); } /// /// This method creates a filesystem entry /// /// /// /// /// /// /// public static ICloudFileSystemEntry CreateFileSystemEntry(IStorageProviderSession session, string Name, DateTime modified, long fileSize, ICloudDirectoryEntry parent) { // build up query url var newObj = new BaseFileEntry(Name, fileSize, modified, session.Service, session); // case the parent if possible if (parent != null) { var objparent = parent as BaseDirectoryEntry; objparent.AddChild(newObj); } return newObj; } /// /// This method clears all childs of a directory entry /// /// public static void ClearAllChilds(ICloudDirectoryEntry dir) { (dir as BaseDirectoryEntry).ClearChilds(); } /// /// /// /// /// /// /// public static ICloudDirectoryEntry CreateDirectoryEntry(IStorageProviderSession session, string Name, ICloudDirectoryEntry parent) { return CreateDirectoryEntry(session, Name, DateTime.Now, parent); } /// /// /// /// /// /// /// /// public static ICloudDirectoryEntry CreateDirectoryEntry(IStorageProviderSession session, string Name, DateTime modifiedDate, ICloudDirectoryEntry parent) { // build up query url var newObj = new BaseDirectoryEntry(Name, 0, modifiedDate, session.Service, session); // case the parent if possible if (parent != null) { var objparent = parent as BaseDirectoryEntry; objparent.AddChild(newObj); } return newObj; } /// /// /// /// /// public static void DeleteFileSystemEntry(IStorageProviderSession session, ICloudFileSystemEntry objectToRemove) { // get the parent dir var parentDir = objectToRemove.Parent as BaseDirectoryEntry; // remove from parent parentDir.RemoveChild(objectToRemove as BaseFileEntry); } /// /// /// /// /// /// public static void MoveFileSystemEntry(IStorageProviderSession session, ICloudFileSystemEntry objectToMove, ICloudDirectoryEntry newParent) { // readjust parent var oldParent = objectToMove.Parent as BaseDirectoryEntry; oldParent.RemoveChild(objectToMove as BaseFileEntry); var newParentObject = newParent as BaseDirectoryEntry; newParentObject.AddChild(objectToMove as BaseFileEntry); } /// /// /// /// /// /// public static void RenameFileSystemEntry(IStorageProviderSession session, ICloudFileSystemEntry objectToRename, string newName) { // rename the fsentry var fentry = objectToRename as BaseFileEntry; fentry.Name = newName; } /// /// /// /// /// public static void ModifyFileSystemEntryLength(ICloudFileSystemEntry fsentry, long newLength) { var fs = (BaseFileEntry)fsentry; fs.Length = newLength; } } }