Difference between revisions of "Storage Manager"
(→Operations) |
(→Sample Usage) |
||
Line 65: | Line 65: | ||
:reset the TimeToLive to a remote file that is currently locked. This operation is consented max 5 times for any file. | :reset the TimeToLive to a remote file that is currently locked. This operation is consented max 5 times for any file. | ||
:Example setTTL(180000).RFile("remoteDirPath"); | :Example setTTL(180000).RFile("remoteDirPath"); | ||
+ | |||
+ | |||
== Sample Usage == | == Sample Usage == |
Revision as of 16:51, 3 April 2012
Contents
Role
Library for access and storage of unstructured bytestreams, or files, can be provided through a standards-based, POSIX-like API which supports the organisation and operations normally associated with local file systems whilst offering scalable and fault-tolerant remote storage.
The library acts a facade to the service and allows clients to download, upload, remove, add, and list files. Files have owners and owners may define access rights to files, allowing private, public, or group-based access.
Access Mode
There are 3 ways to access remote files
- Private
- Accessible only to the owner of the file
- Public
- accessible to all users of the community
- Shared
- Accessible to all users of the same group that owner
These types of access will be specified when instantiating the client
Operations
The StorageManger library implements many operation on remote files, the methods LFile and RFile refer to, respectively, Local File (if needed) and Remote File. In the call's signature, they are preceded by a method that identify a operation, see examples below:
- put(boolean replace)
- put a local file in a remote directory. If replace is true then the remote file, if exist, will be replaced.
- If the remote directory does not exist it will be automatically
- Example: put(true).LFile(“localPath”).RFile(“remotePath”)
- get()
- downloads a file from a remote path to a local directory
- Example: get().LFile(“localPath”).RFile(“remotePath”);
- remove()
- removes a remote file
- Example: remove().RFile(“remotePath”);
- removeDir()
- removes a remote directory. The directory must be empty.
- Example removeDir().LFile(“remoteDirPath”);
- showDir()
- shows the content of a directory
- Example showDir.RFile(“remoteDirPath”);
- lock()
- locks a remote file to prevent multiple access. Return a id string for unlock the file. Remember that every lock have been a TTL associated.
- Example lock().RFile(“remotePath”);
- unlock(String lockKey)
- if the file is locked, unlocks the remote file.
- Example unlock(“key”).RFile(“remotePath”);
- getTTL()
- return the TimeToLive associated to a remote file if the file is currently locked
- Example getTTL().RFile("remoteDirPath");
- setTTL(int milliseconds)
- reset the TimeToLive to a remote file that is currently locked. This operation is consented max 5 times for any file.
- Example setTTL(180000).RFile("remoteDirPath");
Sample Usage
The following code explains how to instatiate a client for do remote operation on the storage repository:
GCUBEScope scope = GCUBEScope.getScope("/gcube"); IClient client=new StorageClient("ServiceClass", "ServiceName", "owner", AccessType.SHARED, scope).getClient();
The following code explains how to upload a new file in the storage repository:
String id=client.put(true).LFile("/home/rcirillo/FilePerTest/pippo.jpg").RFile("/img/pippo.jpg");
The following code explains how to download a file from the storage repository:
client.get().LFile("/home/rcirillo/FilePerTest/pippo.jpg").RFile("/img/pippo.jpg");
or alternatively, download the file by Id
client.get().LFile("/home/rcirillo/FilePerTest/pippo.jpg").RFileById(id);
The following code explains how to show the contents of a remote directory on the storage repository:
List<StorageObject> list=client.showDir().RDir("img");
The following code explains how to lock a file on the storage repository:
String id=client.lock().RFile("/img/pluto.jpg");
The following code explains how to unlock a file on the storage repository:
client.unlock(id).RFile("/img/pluto.jpg");
The following code explains how to remove a file on the storage repository:
client.remove().RFile("/img/pluto.jpg");
or alternatively, remove a file by Id
client.remove()..RFileById(id);
The following code explains how to remove a dir on the storage repository:
client.removeDir().RDir("/img");