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) { }
 }



Reply via email to