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;
}
}
}