Author: jflesch
Date: 2006-07-26 17:19:26 +0000 (Wed, 26 Jul 2006)
New Revision: 9775
Modified:
trunk/apps/Thaw/src/thaw/core/Core.java
trunk/apps/Thaw/src/thaw/core/Logger.java
trunk/apps/Thaw/src/thaw/fcp/FCPClientGet.java
trunk/apps/Thaw/src/thaw/fcp/FCPClientPut.java
trunk/apps/Thaw/src/thaw/fcp/FCPQueueLoader.java
trunk/apps/Thaw/src/thaw/fcp/FCPTransferQuery.java
trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java
trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueuePanel.java
Log:
Priority changes should work
Modified: trunk/apps/Thaw/src/thaw/core/Core.java
===================================================================
--- trunk/apps/Thaw/src/thaw/core/Core.java 2006-07-26 16:31:52 UTC (rev
9774)
+++ trunk/apps/Thaw/src/thaw/core/Core.java 2006-07-26 17:19:26 UTC (rev
9775)
@@ -19,6 +19,7 @@
*
*/
public class Core implements Observer {
+
private MainWindow mainWindow = null;
private Config config = null;
private PluginManager pluginManager = null;
Modified: trunk/apps/Thaw/src/thaw/core/Logger.java
===================================================================
--- trunk/apps/Thaw/src/thaw/core/Logger.java 2006-07-26 16:31:52 UTC (rev
9774)
+++ trunk/apps/Thaw/src/thaw/core/Logger.java 2006-07-26 17:19:26 UTC (rev
9775)
@@ -94,10 +94,10 @@
* As it. Similar to verbose()
*/
public static void asIt(Object o, String msg) {
- if(LOG_LEVEL >= 5) {
+ //if(LOG_LEVEL >= 5) {
System.out.println(msg);
notifyLogListeners(msg);
- }
+ //}
}
Modified: trunk/apps/Thaw/src/thaw/fcp/FCPClientGet.java
===================================================================
--- trunk/apps/Thaw/src/thaw/fcp/FCPClientGet.java 2006-07-26 16:31:52 UTC
(rev 9774)
+++ trunk/apps/Thaw/src/thaw/fcp/FCPClientGet.java 2006-07-26 17:19:26 UTC
(rev 9775)
@@ -33,7 +33,7 @@
private String identifier;
private int progress; /* in pourcent */
- private int fromTheNodeProgress = 0; /* I'm not sure that it's correct
english ... */
+ private int fromTheNodeProgress = 0;
private boolean progressReliable = false;
private long fileSize;
@@ -441,6 +441,7 @@
public synchronized boolean saveFileTo(String dir) {
fromTheNodeProgress = 0;
+
if(dir == null) {
Logger.warning(this, "saveFileTo() : Can't save to
null.");
return false;
@@ -592,6 +593,7 @@
Logger.info(this, "File written");
+
return true;
}
@@ -661,10 +663,43 @@
return true;
}
+
+ public void updatePersistentRequest(boolean clientToken) {
+ if(!isPersistent())
+ return;
+
+ FCPMessage msg = new FCPMessage();
+
+ msg.setMessageName("ModifyPersistentRequest");
+ msg.setValue("Global", Boolean.toString(globalQueue));
+ msg.setValue("Identifier", identifier);
+ msg.setValue("PriorityClass", Integer.toString(priority));
+
+ if(clientToken && destinationDir != null)
+ msg.setValue("ClientToken", destinationDir);
+
+ queueManager.getQueryManager().writeMessage(msg);
+
+ }
+
+
public int getThawPriority() {
return priority;
}
+ public int getFCPPriority() {
+ return priority;
+ }
+
+ public void setFCPPriority(int prio) {
+ Logger.info(this, "Setting priority to
"+Integer.toString(prio));
+
+ priority = prio;
+
+ setChanged();
+ notifyObservers();
+ }
+
public int getQueryType() {
return 1;
}
Modified: trunk/apps/Thaw/src/thaw/fcp/FCPClientPut.java
===================================================================
--- trunk/apps/Thaw/src/thaw/fcp/FCPClientPut.java 2006-07-26 16:31:52 UTC
(rev 9774)
+++ trunk/apps/Thaw/src/thaw/fcp/FCPClientPut.java 2006-07-26 17:19:26 UTC
(rev 9775)
@@ -732,10 +732,42 @@
return true;
}
+ public void updatePersistentRequest(boolean clientToken) {
+ //if(!isPersistent())
+ // return;
+
+ FCPMessage msg = new FCPMessage();
+
+ msg.setMessageName("ModifyPersistentRequest");
+ msg.setValue("Global", Boolean.toString(global));
+ msg.setValue("Identifier", identifier);
+ msg.setValue("PriorityClass", Integer.toString(priority));
+
+ if(clientToken && getPath() != null)
+ msg.setValue("ClientToken", getPath());
+
+ queueManager.getQueryManager().writeMessage(msg);
+ }
+
public int getThawPriority() {
return priority;
}
+
+ public int getFCPPriority() {
+ return priority;
+ }
+ public void setFCPPriority(int prio) {
+ Logger.info(this, "Setting priority to
"+Integer.toString(prio));
+
+ priority = prio;
+
+ setChanged();
+ notifyObservers();
+ }
+
+
+
public String getStatus() {
return status;
}
Modified: trunk/apps/Thaw/src/thaw/fcp/FCPQueueLoader.java
===================================================================
--- trunk/apps/Thaw/src/thaw/fcp/FCPQueueLoader.java 2006-07-26 16:31:52 UTC
(rev 9774)
+++ trunk/apps/Thaw/src/thaw/fcp/FCPQueueLoader.java 2006-07-26 17:19:26 UTC
(rev 9775)
@@ -86,7 +86,7 @@
if(msg.getMessageName().equals("PersistentPut")) {
Logger.info(this, "Resuming from PersistentPut");
- int persistence = 2;
+ int persistence = 0;
/* TOFIX : Node doesn't return PersistenceType */
/*
Modified: trunk/apps/Thaw/src/thaw/fcp/FCPTransferQuery.java
===================================================================
--- trunk/apps/Thaw/src/thaw/fcp/FCPTransferQuery.java 2006-07-26 16:31:52 UTC
(rev 9774)
+++ trunk/apps/Thaw/src/thaw/fcp/FCPTransferQuery.java 2006-07-26 17:19:26 UTC
(rev 9775)
@@ -33,6 +33,23 @@
public int getThawPriority();
/**
+ * Currently the same than Thaw priority.
+ */
+ public int getFCPPriority();
+
+ /**
+ * call updatePersistentRequest() after to apply the change (Please
note that the change
+ * will be visible even if you don't call it).
+ */
+ public void setFCPPriority(int prio);
+
+ /**
+ * you can call it after saveFileTo() to update the clientToken.
+ * @param clientToken tell if the clientToken must be updated or just
the priority
+ */
+ public void updatePersistentRequest(boolean clientToken);
+
+ /**
* Informal.
* Human readable string describring the
* status of the query.
Modified: trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java 2006-07-26 16:31:52 UTC
(rev 9774)
+++ trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java 2006-07-26 17:19:26 UTC
(rev 9775)
@@ -90,6 +90,10 @@
core.getMainWindow().addTab(I18n.getMessage("thaw.common.status"), panel);
}
+ if(core.getConnectionManager() != null &&
core.getConnectionManager().isConnected()) {
+ core.getConnectionManager().addObserver(this);
+ }
+
if(core.getQueueManager() != null)
core.getQueueManager().addObserver(this);
else {
@@ -118,10 +122,12 @@
return true;
}
+
public String getNameForUser() {
return I18n.getMessage("thaw.common.status");
}
+
protected void addToPanels(Vector queries) {
for(Iterator it = queries.iterator();
@@ -140,22 +146,31 @@
}
public void update(Observable o, Object arg) {
+ if(o == core.getConnectionManager()) {
+ queuePanels[0].resetTable();
+ queuePanels[1].resetTable();
+ }
- FCPQueueManager manager = (FCPQueueManager)o;
- try {
- queuePanels[0].resetTable();
- queuePanels[1].resetTable();
+ if(o == core.getQueueManager()) {
+
+ FCPQueueManager manager = (FCPQueueManager)o;
- addToPanels(manager.getRunningQueue());
-
- Vector[] pendings = manager.getPendingQueues();
-
- for(int i = 0;i < pendings.length ; i++)
- addToPanels(pendings[i]);
+ try {
+ queuePanels[0].resetTable();
+ queuePanels[1].resetTable();
+
+ addToPanels(manager.getRunningQueue());
+
+ Vector[] pendings = manager.getPendingQueues();
+
+ for(int i = 0;i < pendings.length ; i++)
+ addToPanels(pendings[i]);
+
+ } catch(java.util.ConcurrentModificationException e) {
+ Logger.notice(this, "Collision while updating
queue panels");
+ }
- } catch(java.util.ConcurrentModificationException e) {
- Logger.notice(this, "Collision while updating queue
panels");
}
}
Modified: trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueuePanel.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueuePanel.java
2006-07-26 16:31:52 UTC (rev 9774)
+++ trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueuePanel.java
2006-07-26 17:19:26 UTC (rev 9775)
@@ -23,8 +23,11 @@
import javax.swing.JPopupMenu;
import javax.swing.JMenuItem;
+import javax.swing.JMenu;
+import javax.swing.JRadioButtonMenuItem;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
+import javax.swing.ButtonGroup;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
@@ -59,7 +62,11 @@
private JMenuItem forceRestartItem;
private JMenuItem copyKeysItem;
- private int lastRowSelected = -1; /* Used for detail panel */
+ private JRadioButtonMenuItem[] priorityRadioButton;
+ private JRadioButtonMenuItem unknowPriority;
+ private ButtonGroup priorityGroup;
+ private final int MIN_PRIORITY = 6;
+
private int[] selectedRows;
private Vector queries;
@@ -101,7 +108,20 @@
downloadItem = new
JMenuItem(I18n.getMessage("thaw.common.downloadLocally"));
forceRestartItem = new
JMenuItem(I18n.getMessage("thaw.common.forceRestart"));
copyKeysItem = new
JMenuItem(I18n.getMessage("thaw.common.copyKeysToClipboard"));
-
+ JMenu priorityMenu = new
JMenu(I18n.getMessage("thaw.common.priority"));
+
+ priorityGroup = new ButtonGroup();
+ priorityRadioButton = new JRadioButtonMenuItem[MIN_PRIORITY+1];
+ for(int i =0 ; i <= MIN_PRIORITY ; i++) {
+ priorityRadioButton[i] = new
JRadioButtonMenuItem(I18n.getMessage("thaw.plugin.priority.p"+Integer.toString(i)));
+ priorityRadioButton[i].addActionListener(this);
+ priorityMenu.add(priorityRadioButton[i]);
+ priorityGroup.add(priorityRadioButton[i]);
+ }
+ unknowPriority = new JRadioButtonMenuItem("Coin");
+ priorityGroup.add(unknowPriority);
+
+
rightClickMenu.add(removeItem);
if(
Integer.parseInt(core.getConfig().getValue("maxSimultaneousDownloads")) >= 0
@@ -118,6 +138,10 @@
rightClickMenu.add(forceRestartItem);
rightClickMenu.add(copyKeysItem);
+ if(
Boolean.valueOf(core.getConfig().getValue("advancedMode")).booleanValue() ==
true) {
+ rightClickMenu.add(priorityMenu);
+ }
+
removeItem.addActionListener(this);
cancelItem.addActionListener(this);
copyKeysItem.addActionListener(this);
@@ -217,6 +241,13 @@
public void reloadSelections() {
selectedRows = table.getSelectedRows();
+
+ if(selectedRows.length > 1 || selectedRows.length < 1) {
+ resetPriorityRadioButtons();
+ } else {
+ FCPTransferQuery query =
tableModel.getQuery(selectedRows[0]);
+
priorityRadioButton[query.getFCPPriority()].setSelected(true);
+ }
}
/**
@@ -270,22 +301,20 @@
}
- public void refresh() {
+ public void refreshDetailPanel() {
int selected = table.getSelectedRow();
- /*
- if(lastRowSelected != selected) {
- lastRowSelected = selected;
-
- if(selected != -1)
-
detailPanel.setQuery(tableModel.getQuery(selected));
+
+
+ if(selected != -1) {
+ FCPTransferQuery query = tableModel.getQuery(selected);
+ detailPanel.setQuery(query);
}
- */
- lastRowSelected = selected;
-
- if(selected != -1)
- detailPanel.setQuery(tableModel.getQuery(selected));
}
+ private void resetPriorityRadioButtons() {
+ unknowPriority.setSelected(true);
+ }
+
public JPanel getPanel() {
return panel;
}
@@ -316,8 +345,23 @@
fileChooser.setDirectoryOnly(true);
fileChooser.setDialogType(JFileChooser.SAVE_DIALOG);
dir = fileChooser.askOneFile();
+
+ if(dir == null)
+ return;
}
+ int prioritySelected = 0;
+
+ for(prioritySelected = 0;
+ prioritySelected <= MIN_PRIORITY;
+ prioritySelected++) {
+ if(priorityRadioButton[prioritySelected] ==
e.getSource()) {
+ break;
+ }
+ }
+
+ if(prioritySelected > MIN_PRIORITY)
+ prioritySelected = -1;
for(Iterator queryIt = queries.iterator() ;
queryIt.hasNext() ;) {
FCPTransferQuery query =
(FCPTransferQuery)queryIt.next();
@@ -325,6 +369,13 @@
if(query == null)
continue;
+ if(prioritySelected >= 0) {
+ if(query.isPersistent()) {
+
query.setFCPPriority(prioritySelected);
+
query.updatePersistentRequest(false);
+ }
+ }
+
if(e.getSource() == removeItem) {
if(query.stop(core.getQueueManager())) {
@@ -361,7 +412,12 @@
if(e.getSource() == downloadItem
&& dir != null) {
- query.saveFileTo(dir.getPath());
+ if(query.isPersistent()) {
+
+ query.saveFileTo(dir.getPath());
+
if(query.getIdentifier().startsWith(core.getConfig().getValue("thawId")))
+
query.updatePersistentRequest(true);
+ }
}
} /* for i in selectedRows */
@@ -399,7 +455,7 @@
}
if(e.getButton() == MouseEvent.BUTTON1) {
- refresh();
+ refreshDetailPanel();
}
}
@@ -421,7 +477,7 @@
public void keyPressed(KeyEvent e) { }
- public void keyReleased(KeyEvent e) { refresh(); }
+ public void keyReleased(KeyEvent e) { refreshDetailPanel(); }
public void keyTyped(KeyEvent e) { }
}