diff --git a/pom.xml b/pom.xml
index c7235d580..6747f4581 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.tonikelope
MegaBasterd
- 6.3
+ 6.4
jar
diff --git a/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java b/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java
index cf1754273..6167d66f6 100644
--- a/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java
+++ b/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java
@@ -232,11 +232,11 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
} else {
- chunk_file = new File(_download.getChunkmanager().getChunks_dir() + "/" + _download.getFile_name() + ".chunk" + chunk_id);
+ chunk_file = new File(_download.getChunkmanager().getChunks_dir() + "/" + new File(_download.getFile_name()).getName() + ".chunk" + chunk_id);
if (!chunk_file.exists() || chunk_file.length() != chunk_size) {
- tmp_chunk_file = new File(_download.getChunkmanager().getChunks_dir() + "/" + _download.getFile_name() + ".chunk" + chunk_id + ".tmp");
+ tmp_chunk_file = new File(_download.getChunkmanager().getChunks_dir() + "/" + new File(_download.getFile_name()).getName() + ".chunk" + chunk_id + ".tmp");
try (InputStream is = new ThrottledInputStream(con.getInputStream(), _download.getMain_panel().getStream_supervisor()); FileOutputStream tmp_chunk_file_os = new FileOutputStream(tmp_chunk_file)) {
diff --git a/src/main/java/com/tonikelope/megabasterd/ChunkManager.java b/src/main/java/com/tonikelope/megabasterd/ChunkManager.java
index 0eb937146..bcd48d4aa 100644
--- a/src/main/java/com/tonikelope/megabasterd/ChunkManager.java
+++ b/src/main/java/com/tonikelope/megabasterd/ChunkManager.java
@@ -75,7 +75,7 @@ public final class ChunkManager implements Runnable, SecureSingleThreadNotifiabl
_notified = false;
_exit = false;
_download = downloader;
- _chunks_dir = _download.getDownload_path() + "/.mb_chunks_" + _download.getFile_name();
+ _chunks_dir = _create_chunks_temp_dir();
_secure_notify_lock = new Object();
_file_size = _download.getFile_size();
_byte_file_key = initMEGALinkKey(_download.getFile_key());
@@ -93,8 +93,6 @@ public final class ChunkManager implements Runnable, SecureSingleThreadNotifiabl
_bytes_written = _download.getProgress();
}
- _create_chunks_temp_dir();
-
Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Chunkmanager hello LAST CHUNK WRITTEN -> [{1}] {2}...", new Object[]{Thread.currentThread().getName(), _last_chunk_id_written, _bytes_written});
}
@@ -135,10 +133,15 @@ public final class ChunkManager implements Runnable, SecureSingleThreadNotifiabl
return _last_chunk_id_written;
}
- private void _create_chunks_temp_dir() {
+ private String _create_chunks_temp_dir() {
+
+ File chunks_temp_dir = new File(_download.getDownload_path() + "/.mb_chunks_" + new File(_download.getFile_name()).getName());
- File chunks_temp_dir = new File(getChunks_dir());
chunks_temp_dir.mkdirs();
+
+ System.out.println(chunks_temp_dir.getAbsolutePath());
+
+ return chunks_temp_dir.getAbsolutePath();
}
public void delete_chunks_temp_dir() {
@@ -162,7 +165,7 @@ public final class ChunkManager implements Runnable, SecureSingleThreadNotifiabl
if (_file_size > 0) {
while (!_exit && (!_download.isStopped() || !_download.getChunkworkers().isEmpty()) && _bytes_written < _file_size) {
- File chunk_file = new File(getChunks_dir() + "/" + _download.getFile_name() + ".chunk" + String.valueOf(_last_chunk_id_written + 1));
+ File chunk_file = new File(getChunks_dir() + "/" + new File(_download.getFile_name()).getName() + ".chunk" + String.valueOf(_last_chunk_id_written + 1));
while (chunk_file.exists() && chunk_file.canRead()) {
@@ -197,7 +200,7 @@ public final class ChunkManager implements Runnable, SecureSingleThreadNotifiabl
chunk_file.delete();
- chunk_file = new File(getChunks_dir() + "/" + _download.getFile_name() + ".chunk" + String.valueOf(_last_chunk_id_written + 1));
+ chunk_file = new File(getChunks_dir() + "/" + new File(_download.getFile_name()).getName() + ".chunk" + String.valueOf(_last_chunk_id_written + 1));
}
if (!_exit && (!_download.isStopped() || !_download.getChunkworkers().isEmpty()) && _bytes_written < _file_size) {
diff --git a/src/main/java/com/tonikelope/megabasterd/LabelTranslatorSingleton.java b/src/main/java/com/tonikelope/megabasterd/LabelTranslatorSingleton.java
index a37b0226e..7314a25dd 100644
--- a/src/main/java/com/tonikelope/megabasterd/LabelTranslatorSingleton.java
+++ b/src/main/java/com/tonikelope/megabasterd/LabelTranslatorSingleton.java
@@ -262,6 +262,7 @@ public final class LabelTranslatorSingleton {
_addTranslation("Streaming server: ON (port ", "Servidor de streaming: ON (puerto ");
_addTranslation("MC reverse mode: ON (port ", "MC reverse mode: ON (puerto ");
_addTranslation("Joining file chunks, please wait...", "Juntando chunks, por favor espera...");
+ _addTranslation("Close MegaBasterd when all transfers finish", "Cerrar MegaBasterd cuando todas las transferencias terminen");
}
diff --git a/src/main/java/com/tonikelope/megabasterd/MainPanel.java b/src/main/java/com/tonikelope/megabasterd/MainPanel.java
index abdf3639e..f7ce660b3 100644
--- a/src/main/java/com/tonikelope/megabasterd/MainPanel.java
+++ b/src/main/java/com/tonikelope/megabasterd/MainPanel.java
@@ -28,6 +28,8 @@ import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
+import java.util.Timer;
+import java.util.TimerTask;
import java.util.UUID;
import java.util.concurrent.ExecutorService;
import static java.util.concurrent.Executors.newCachedThreadPool;
@@ -48,7 +50,7 @@ import javax.swing.UIManager;
*/
public final class MainPanel {
- public static final String VERSION = "6.3";
+ public static final String VERSION = "6.4";
public static final int THROTTLE_SLICE_SIZE = 16 * 1024;
public static final int DEFAULT_BYTE_BUFFER_SIZE = 16 * 1024;
public static final int STREAMER_PORT = 1337;
@@ -253,6 +255,48 @@ public final class MainPanel {
THREAD_POOL.execute((_clipboardspy = new ClipboardSpy()));
+ THREAD_POOL.execute(new Runnable() {
+ @Override
+ public void run() {
+
+ Object timer_lock = new Object();
+
+ Timer timer = new Timer();
+
+ TimerTask task = new TimerTask() {
+
+ @Override
+ public void run() {
+ synchronized (timer_lock) {
+
+ timer_lock.notify();
+ }
+ }
+ };
+
+ timer.schedule(task, 0, 5000);
+
+ while (true) {
+
+ synchronized (timer_lock) {
+
+ try {
+
+ if (_download_manager.no_transferences() && _upload_manager.no_transferences() && (!_download_manager.getTransference_finished_queue().isEmpty() || !_upload_manager.getTransference_finished_queue().isEmpty()) && getView().getAuto_close_menu().isSelected()) {
+ System.exit(0);
+ }
+
+ timer_lock.wait();
+ } catch (InterruptedException ex) {
+ Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+
+ }
+
+ }
+ });
+
try {
_streamserver = new KissVideoStreamServer(this);
_streamserver.start(STREAMER_PORT, "/video");
diff --git a/src/main/java/com/tonikelope/megabasterd/MainPanelView.form b/src/main/java/com/tonikelope/megabasterd/MainPanelView.form
index 384509d1b..7169e8392 100644
--- a/src/main/java/com/tonikelope/megabasterd/MainPanelView.form
+++ b/src/main/java/com/tonikelope/megabasterd/MainPanelView.form
@@ -131,6 +131,18 @@
+