001 package de.deepamehta.plugins.files.service;
002
003 import de.deepamehta.plugins.files.DirectoryListing;
004 import de.deepamehta.plugins.files.ResourceInfo;
005 import de.deepamehta.plugins.files.StoredFile;
006 import de.deepamehta.plugins.files.UploadedFile;
007
008 import de.deepamehta.core.Topic;
009 import de.deepamehta.core.service.ClientState;
010 import de.deepamehta.core.service.PluginService;
011
012 import java.io.File;
013 import java.net.URL;
014
015
016
017 public interface FilesService extends PluginService {
018
019
020
021 // === File System Representation ===
022
023 /**
024 * Creates a File topic for a given path.
025 * If a File topic for that path exists already that topic is returned.
026 */
027 Topic createFileTopic(String path, ClientState clientState);
028
029 /**
030 * Creates a Folder topic for a given path.
031 * If a Folder topic for that path exists already that topic is returned.
032 */
033 Topic createFolderTopic(String path, ClientState clientState);
034
035 // ---
036
037 Topic createChildFileTopic(long folderTopicId, String path, ClientState clientState);
038
039 Topic createChildFolderTopic(long folderTopicId, String path, ClientState clientState);
040
041
042
043 // === File Repository ===
044
045 /**
046 * @param path The directory where to store the file. Relative to the file repository root path.
047 * Must begin with slash ('/'), no slash at the end.
048 * The directory must exist.
049 */
050 StoredFile storeFile(UploadedFile file, String path, ClientState clientState);
051
052 void createFolder(String folderName, String path);
053
054 // ---
055
056 ResourceInfo getResourceInfo(String path);
057
058 DirectoryListing getDirectoryListing(String path);
059
060 /**
061 * Checks if the given URL refers to the file repository of this DeepaMehta installation.
062 *
063 * @return the refered file's/directory's repository path, or <code>null</code> if the URL
064 * does not refer to the file repository of this DeepaMehta installation.
065 */
066 String getRepositoryPath(URL url);
067
068 // ---
069
070 /**
071 * Accesses a file/directory in the file repository by its path.
072 * Note: this method doesn't require the corresponding File/Folder topic to exist.
073 *
074 * @param path a file repository path. Must begin with slash ('/'), no slash at the end.
075 */
076 File getFile(String path);
077
078 /**
079 * Accesses a file/directory in the file repository that is represented by the given File/Folder topic.
080 */
081 File getFile(long fileTopicId);
082
083 // ---
084
085 void openFile(long fileTopicId);
086 }