-Trying to put everything in place
This commit is contained in:
tonikelope 2020-01-06 18:51:55 +01:00
parent 8291a51ea5
commit 997a0491ea
6 changed files with 78 additions and 93 deletions

View File

@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.tonikelope</groupId>
<artifactId>MegaBasterd</artifactId>
<version>7.5</version>
<version>7.6</version>
<packaging>jar</packaging>
<dependencies>
<dependency>

View File

@ -921,7 +921,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
swingInvoke(() -> {
getView().getClose_button().setVisible(true);
if (_status_error != null || _canceled) {
if ((_status_error != null || _canceled) && isProvision_ok()) {
getView().getRestart_button().setVisible(true);
@ -1001,8 +1001,6 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
} catch (SQLException ex) {
LOG.log(SEVERE, null, ex);
_status_error = "Error registering download: file is already downloading.";
}
@ -1045,7 +1043,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
getView().printStatusError(_status_error);
swingInvoke(() -> {
getView().getRestart_button().setVisible(true);
getView().getClose_button().setVisible(true);
});
} else {
@ -1066,14 +1064,15 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
getView().getFile_size_label().setText(formatBytes(_file_size));
});
swingInvoke(() -> {
getView().getClose_button().setVisible(true);
getView().getQueue_up_button().setVisible(true);
getView().getQueue_down_button().setVisible(true);
getView().getQueue_top_button().setVisible(true);
getView().getQueue_bottom_button().setVisible(true);
});
}
swingInvoke(() -> {
getView().getClose_button().setVisible(true);
getView().getQueue_up_button().setVisible(true);
getView().getQueue_down_button().setVisible(true);
getView().getQueue_top_button().setVisible(true);
getView().getQueue_bottom_button().setVisible(true);
});
}

View File

@ -106,6 +106,8 @@ public class DownloadManager extends TransferenceManager {
getTransference_waitstart_aux_queue().add(download);
} else {
getTransference_finished_queue().add(download);
}
}

View File

@ -31,7 +31,7 @@ import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Iterator;
import java.util.Timer;
import java.util.TimerTask;
import java.util.UUID;
@ -54,7 +54,7 @@ import javax.swing.UIManager;
*/
public final class MainPanel {
public static final String VERSION = "7.5";
public static final String VERSION = "7.6";
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;
@ -1176,15 +1176,15 @@ public final class MainPanel {
ArrayList<String> downloads_queue = DBTools.selectDownloadsQueue();
System.out.println(downloads_queue);
HashMap<String, HashMap<String, Object>> res = selectDownloads();
System.out.println(res);
tot_downloads = res.size();
for (String url : downloads_queue) {
Iterator downloads_queue_iterator = downloads_queue.iterator();
while (downloads_queue_iterator.hasNext()) {
String url = (String) downloads_queue_iterator.next();
HashMap<String, Object> o = res.remove(url);
@ -1201,32 +1201,19 @@ public final class MainPanel {
getDownload_manager().getTransference_provision_queue().add(download);
conta_downloads++;
}
downloads_queue_iterator.remove();
}
}
}
DBTools.truncateDownloadsQueue();
for (Map.Entry<String, HashMap<String, Object>> entry : res.entrySet()) {
String email = (String) entry.getValue().get("email");
MegaAPI ma = new MegaAPI();
if (!tthis.isUse_mega_account_down() || (_mega_accounts.get(email) != null && (ma = checkMegaAccountLoginAndShowMasterPassDialog(tthis, getView(), email)) != null)) {
Download download = new Download(tthis, ma, (String) entry.getKey(), (String) entry.getValue().get("path"), (String) entry.getValue().get("filename"), (String) entry.getValue().get("filekey"), (Long) entry.getValue().get("filesize"), (String) entry.getValue().get("filepass"), (String) entry.getValue().get("filenoexpire"), _use_slots_down, false, (String) entry.getValue().get("custom_chunks_dir"), false);
getDownload_manager().getTransference_provision_queue().add(download);
conta_downloads++;
}
if (!downloads_queue.isEmpty()) {
DBTools.insertDownloadsQueue(downloads_queue);
}
} catch (SQLException ex) {
Logger.getLogger(MainPanel.class.getName()).log(SEVERE, null, ex);
} catch (Exception ex2) {
Logger.getLogger(MainPanel.class.getName()).log(SEVERE, null, ex2);
@ -1243,7 +1230,11 @@ public final class MainPanel {
swingInvoke(() -> {
getView().getjTabbedPane1().setSelectedIndex(0);
});
} else {
setResume_downloads(true);
}
swingInvoke(() -> {
getView().getStatus_down_label().setText("");
});
@ -1345,7 +1336,11 @@ public final class MainPanel {
tot_uploads = res.size();
for (String filename : uploads_queue) {
Iterator uploads_queue_iterator = uploads_queue.iterator();
while (uploads_queue_iterator.hasNext()) {
String filename = (String) uploads_queue_iterator.next();
HashMap<String, Object> o = res.remove(filename);
@ -1364,47 +1359,27 @@ public final class MainPanel {
getUpload_manager().getTransference_provision_queue().add(upload);
conta_uploads++;
} else {
throw new Exception("Mega Login Error!");
uploads_queue_iterator.remove();
}
} else {
deleteUpload((String) o.get("filename"), email);
tot_uploads--;
uploads_queue_iterator.remove();
}
}
}
DBTools.truncateUploadsQueue();
for (Map.Entry<String, HashMap<String, Object>> entry : res.entrySet()) {
String email = (String) entry.getValue().get("email");
if (_mega_accounts.get(email) != null) {
MegaAPI ma;
if ((ma = checkMegaAccountLoginAndShowMasterPassDialog(tthis, getView(), email)) != null) {
Upload upload = new Upload(tthis, ma, (String) entry.getKey(), (String) entry.getValue().get("parent_node"), (String) entry.getValue().get("ul_key") != null ? bin2i32a(BASE642Bin((String) entry.getValue().get("ul_key"))) : null, (String) entry.getValue().get("url"), (String) entry.getValue().get("root_node"), BASE642Bin((String) entry.getValue().get("share_key")), (String) entry.getValue().get("folder_link"), false);
getUpload_manager().getTransference_provision_queue().add(upload);
conta_uploads++;
} else {
throw new Exception("Mega Login Error!");
}
} else {
deleteUpload((String) entry.getValue().get("filename"), email);
tot_uploads--;
}
if (!uploads_queue.isEmpty()) {
DBTools.insertUploadsQueue(uploads_queue);
}
} catch (SQLException ex) {
@ -1424,6 +1399,8 @@ public final class MainPanel {
swingInvoke(() -> {
getView().getjTabbedPane1().setSelectedIndex(1);
});
} else {
setResume_uploads(true);
}
swingInvoke(() -> {

View File

@ -316,8 +316,6 @@ public final class MainPanelView extends javax.swing.JFrame {
getMain_panel().getUpload_manager().secureNotify();
} else {
break;
}
}
@ -1051,14 +1049,11 @@ public final class MainPanelView extends javax.swing.JFrame {
}
}
if (!getMain_panel().getDownload_manager().getTransference_preprocess_global_queue().isEmpty()) {
download = new Download(getMain_panel(), ma, url, dl_path, null, null, null, null, null, getMain_panel().isUse_slots_down(), false, getMain_panel().isUse_custom_chunks_dir() ? getMain_panel().getCustom_chunks_dir() : null, dialog.getPriority_checkbox().isSelected());
download = new Download(getMain_panel(), ma, url, dl_path, null, null, null, null, null, getMain_panel().isUse_slots_down(), false, getMain_panel().isUse_custom_chunks_dir() ? getMain_panel().getCustom_chunks_dir() : null, dialog.getPriority_checkbox().isSelected());
getMain_panel().getDownload_manager().getTransference_provision_queue().add(download);
getMain_panel().getDownload_manager().getTransference_provision_queue().add(download);
getMain_panel().getDownload_manager().secureNotify();
}
getMain_panel().getDownload_manager().secureNotify();
}

View File

@ -38,7 +38,6 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea
private int _max_running_trans;
private final MainPanel _main_panel;
private final Object _secure_notify_lock;
private final Object _wait_aux_queue_sort_lock;
private final Object _wait_queue_lock;
private boolean _notified;
private volatile boolean _removing_transferences;
@ -52,6 +51,7 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea
protected final Object _total_size_lock;
protected volatile long _total_progress;
protected final Object _total_progress_lock;
protected final Object _transference_queue_sort_lock;
private volatile Boolean _sort_wait_start_queue;
public TransferenceManager(MainPanel main_panel, int max_running_trans, javax.swing.JLabel status, javax.swing.JPanel scroll_panel, javax.swing.JButton close_all_button, javax.swing.JButton pause_all_button, javax.swing.MenuElement clean_all_menu) {
@ -75,7 +75,7 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea
_secure_notify_lock = new Object();
_total_size_lock = new Object();
_total_progress_lock = new Object();
_wait_aux_queue_sort_lock = new Object();
_transference_queue_sort_lock = new Object();
_wait_queue_lock = new Object();
_sort_wait_start_queue = true;
_transference_preprocess_global_queue = new ConcurrentLinkedQueue<>();
@ -179,10 +179,6 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea
_starting_transferences = starting;
}
public Object geWaitStartAuxQueue_sort_lock() {
return _wait_aux_queue_sort_lock;
}
public void setPreprocessing_transferences(boolean preprocessing) {
_preprocessing_transferences = preprocessing;
}
@ -232,25 +228,38 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea
}
public ConcurrentLinkedQueue<Transference> getTransference_provision_queue() {
return _transference_provision_queue;
synchronized (_transference_queue_sort_lock) {
return _transference_provision_queue;
}
}
public ConcurrentLinkedQueue<Transference> getTransference_waitstart_queue() {
synchronized (_wait_aux_queue_sort_lock) {
synchronized (_transference_queue_sort_lock) {
return _transference_waitstart_queue;
}
}
public ConcurrentLinkedQueue<Transference> getTransference_remove_queue() {
return _transference_remove_queue;
synchronized (_transference_queue_sort_lock) {
return _transference_remove_queue;
}
}
public ConcurrentLinkedQueue<Transference> getTransference_finished_queue() {
return _transference_finished_queue;
synchronized (_transference_queue_sort_lock) {
return _transference_finished_queue;
}
}
public ConcurrentLinkedQueue<Transference> getTransference_running_list() {
return _transference_running_list;
synchronized (_transference_queue_sort_lock) {
return _transference_running_list;
}
}
public JPanel getScroll_panel() {
@ -485,23 +494,23 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea
return _transference_waitstart_aux_queue;
}
protected void sortTransferenceWaitStartAuxQueue() {
protected void sortTransferenceQueue(ConcurrentLinkedQueue<Transference> queue) {
synchronized (_wait_aux_queue_sort_lock) {
synchronized (_transference_queue_sort_lock) {
ArrayList<Transference> trans_list = new ArrayList(getTransference_waitstart_aux_queue());
ArrayList<Transference> trans_list = new ArrayList(queue);
trans_list.sort((Transference o1, Transference o2) -> o1.getFile_name().compareToIgnoreCase(o2.getFile_name()));
getTransference_waitstart_aux_queue().clear();
queue.clear();
getTransference_waitstart_aux_queue().addAll(trans_list);
queue.addAll(trans_list);
}
}
protected void unfreezeTransferenceWaitStartQueue() {
synchronized (_wait_aux_queue_sort_lock) {
synchronized (getTransference_waitstart_aux_queue()) {
getTransference_waitstart_queue().forEach((t) -> {
t.unfreeze();
@ -672,13 +681,13 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea
}
}
synchronized (geWaitStartAuxQueue_sort_lock()) {
synchronized (_transference_queue_sort_lock) {
if (getSort_wait_start_queue()) {
sortTransferenceWaitStartAuxQueue();
sortTransferenceQueue(getTransference_waitstart_aux_queue());
}
if (getTransference_waitstart_aux_queue().peek().isPriority()) {
if (getTransference_waitstart_aux_queue().peek() != null && getTransference_waitstart_aux_queue().peek().isPriority()) {
ArrayList<Transference> trans_list = new ArrayList(getTransference_waitstart_queue());
@ -700,6 +709,9 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea
getScroll_panel().add((Component) t.getView());
});
});
sortTransferenceQueue(getTransference_finished_queue());
getTransference_finished_queue().forEach((t) -> {
swingInvoke(() -> {
getScroll_panel().remove((Component) t.getView());