public interface FileUploadingAPI
Modifier and Type | Interface and Description |
---|---|
static class |
FileUploadingAPI.FileInfo |
static interface |
FileUploadingAPI.UploadProgressListener
Listener to be notified about the progress of uploading file into the temporary storage.
|
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
NAME |
Modifier and Type | Method and Description |
---|---|
java.util.UUID |
createEmptyFile()
Create a new empty temporary file and cache its ID for subsequent operations.
|
FileUploadingAPI.FileInfo |
createFile()
Create a new empty temporary file and cache its ID for subsequent operations.
|
java.util.UUID |
createNewFileId()
Create and cache a new temporary file ID.
|
void |
deleteFile(java.util.UUID fileId)
Remove a file from the temporary storage.
|
void |
deleteFileLink(java.lang.String fileName)
Remove an entry from the list of currently cached temporary file IDs, if such exists.
|
java.io.File |
getFile(java.util.UUID fileId)
Return a previously registered temporary file by its ID.
|
FileDescriptor |
getFileDescriptor(java.util.UUID fileId,
java.lang.String name)
Construct a new FileDescriptor for a temporary file to store it in the middleware FileStorage.
|
FileDescriptor |
putFileIntoStorage(TaskLifeCycle<java.lang.Long> taskLifeCycle)
Upload a file from the client's temporary storage into the middleware FileStorage.
|
void |
putFileIntoStorage(java.util.UUID fileId,
FileDescriptor fileDescr)
Upload a file from the client's temporary storage to the middleware FileStorage.
|
java.util.UUID |
saveFile(byte[] data)
Store the byte array in a new temporary file.
|
java.util.UUID |
saveFile(java.io.InputStream stream,
FileUploadingAPI.UploadProgressListener listener)
Store the content of stream in a new temporary file.
|
static final java.lang.String NAME
java.util.UUID saveFile(byte[] data) throws FileStorageException
data
- file contentsFileStorageException
- in case of IO problemsjava.util.UUID saveFile(java.io.InputStream stream, @Nullable FileUploadingAPI.UploadProgressListener listener) throws FileStorageException
stream
- stream which content is to be storedlistener
- optional listener to be notified about storing progressFileStorageException
- in case of IO problemsjava.util.UUID createEmptyFile() throws FileStorageException
FileStorageException
- in case of IO problemsFileUploadingAPI.FileInfo createFile() throws FileStorageException
FileStorageException
- in case of IO problemsjava.util.UUID createNewFileId() throws FileStorageException
FileStorageException
- in case of IO problems@Nullable java.io.File getFile(java.util.UUID fileId)
fileId
- temporary file ID@Nullable FileDescriptor getFileDescriptor(java.util.UUID fileId, java.lang.String name)
fileId
- temporary file IDname
- file name to set in the FileDescriptorvoid deleteFile(java.util.UUID fileId) throws FileStorageException
fileId
- temporary file IDFileStorageException
- in case of IO problemsvoid deleteFileLink(java.lang.String fileName)
fileName
- absolute path to the temporary filevoid putFileIntoStorage(java.util.UUID fileId, FileDescriptor fileDescr) throws FileStorageException
fileId
- file ID in the temporary storagefileDescr
- corresponding file descriptor entity. Attention: the FileDescriptor instance must be
stored in the database separately.FileStorageException
- in case of IO problemsFileDescriptor putFileIntoStorage(TaskLifeCycle<java.lang.Long> taskLifeCycle) throws FileStorageException, java.lang.InterruptedException
BackgroundTask.run(com.haulmont.cuba.gui.executors.TaskLifeCycle)
TaskLifeCycle.getParams()
map must contain the following entries with
String keys:
fileId
- file ID in the temporary storagefileName
- file name to set in the returned FileDescriptor
Usage:
BackgroundTask<Long, FileDescriptor> uploadProgress = new BackgroundTask<Long, FileDescriptor>(2400, ownerWindow) { @Override public Map<String, Object> getParams() { // file parameters Map<String, Object> params = new HashMap<>(); params.put("fileId", fileUpload.getFileId()); params.put("fileName", fileUpload.getFileName()); return params; } @Override public FileDescriptor run(final TaskLifeCycle<Long> taskLifeCycle) throws Exception { // upload file to middleware and return FileDescriptor return fileUploading.putFileIntoStorage(taskLifeCycle); } @Override public void done(FileDescriptor result) { // commit FileDescriptor to DB dataService.commit(new CommitContext(result)); } };
And then we can show upload progress window:
long fileSize = fileUploading.getFile(fileUpload.getFileId()).length(); BackgroundWorkProgressWindow.show(uploadProgress, getMessage("uploadingFile"), null, fileSize, true, true);
taskLifeCycle
- task life cycle with specified params: fileId and fileNameFileDescriptor
instance must be
stored in the database separately.FileStorageException
- in case of IO problemsjava.lang.InterruptedException
- in case of uploading thread interrupted