aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/thedevstack/conversationsplus/services/filetransfer/FileTransferEntity.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/thedevstack/conversationsplus/services/filetransfer/FileTransferEntity.java')
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/services/filetransfer/FileTransferEntity.java108
1 files changed, 108 insertions, 0 deletions
diff --git a/src/main/java/de/thedevstack/conversationsplus/services/filetransfer/FileTransferEntity.java b/src/main/java/de/thedevstack/conversationsplus/services/filetransfer/FileTransferEntity.java
new file mode 100644
index 00000000..a44cf49d
--- /dev/null
+++ b/src/main/java/de/thedevstack/conversationsplus/services/filetransfer/FileTransferEntity.java
@@ -0,0 +1,108 @@
+package de.thedevstack.conversationsplus.services.filetransfer;
+
+import java.io.InputStream;
+
+import de.thedevstack.conversationsplus.entities.DownloadableFile;
+import de.thedevstack.conversationsplus.entities.Message;
+import de.thedevstack.conversationsplus.entities.Transferable;
+import de.thedevstack.conversationsplus.persistance.FileBackend;
+import de.thedevstack.conversationsplus.utils.MessageUtil;
+
+/**
+ *
+ */
+public class FileTransferEntity implements Transferable {
+ private final Message message;
+ private int tries = 0;
+ private boolean transferred = false;
+ private boolean canceled = false;
+ private boolean failed = false;
+ private long transmitted = 0;
+ private DownloadableFile file;
+ private InputStream fileInputStream;
+
+ public FileTransferEntity(Message message) {
+ this.message = message;
+ this.message.setTransferable(this);
+ this.file = FileBackend.getFile(message, false);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ FileTransferEntity other = (FileTransferEntity)o;
+ if ((this.message == null && other.message != null)
+ || (this.message != null && other.message == null)) {
+ return false;
+ } else if (this.message == null && other.message == null) {
+ return true;
+ }
+ return this.message.getUuid().equals(other.message.getUuid());
+ }
+
+ @Override
+ public boolean start() {
+ return false;
+ }
+
+ @Override
+ public int getStatus() {
+ int status = (failed) ? STATUS_FAILED : STATUS_UPLOADING;
+ return status;
+ }
+
+ @Override
+ public long getFileSize() {
+ return file == null ? 0 : file.getExpectedSize();
+ }
+
+ @Override
+ public int getProgress() {
+ if (file == null) {
+ return 0;
+ }
+ return (int) ((((double) transmitted) / file.getExpectedSize()) * 100);
+ }
+
+ @Override
+ public void cancel() {
+ this.canceled = true;
+ }
+
+ public void fail() {
+ this.failed = true;
+ this.getMessage().setTransferable(null);
+ MessageUtil.markMessage(this.getMessage(), Message.STATUS_SEND_FAILED);
+ }
+
+ public Message getMessage() {
+ return message;
+ }
+
+ public boolean isCanceled() {
+ return this.canceled;
+ }
+
+ public boolean isFailed() {
+ return failed;
+ }
+
+ public void updateProgress(long progress) {
+ this.transmitted += progress;
+ }
+
+ public DownloadableFile getFile() {
+ return file;
+ }
+
+ public void transferred() {
+ this.transferred = true;
+ }
+
+ public void setFileInputStream(InputStream fileInputStream) {
+ this.fileInputStream = fileInputStream;
+ }
+
+ public InputStream getFileInputStream() {
+ return fileInputStream;
+ }
+}