Author: jflesch
Date: 2006-07-09 02:58:22 +0000 (Sun, 09 Jul 2006)
New Revision: 9518

Modified:
   trunk/apps/Thaw/build.xml
   trunk/apps/Thaw/src/thaw/core/Core.java
   trunk/apps/Thaw/src/thaw/fcp/FCPClientGet.java
   trunk/apps/Thaw/src/thaw/fcp/FCPClientHello.java
   trunk/apps/Thaw/src/thaw/fcp/FCPConnection.java
   trunk/apps/Thaw/src/thaw/fcp/FCPQuery.java
   trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java
   trunk/apps/Thaw/src/thaw/plugins/queueWatcher/DetailPanel.java
   trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueuePanel.java
   trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueueTableModel.java
Log:
Fixing some little things + Adding some colors to have more readability (Todo: 
find better colors)

Modified: trunk/apps/Thaw/build.xml
===================================================================
--- trunk/apps/Thaw/build.xml   2006-07-08 20:39:16 UTC (rev 9517)
+++ trunk/apps/Thaw/build.xml   2006-07-09 02:58:22 UTC (rev 9518)
@@ -11,7 +11,29 @@

   <property name="javac.debug" value="false" />

+  
+  <target name="compile-gcj">
+    <mkdir dir="${bin.dir}" />

+    <javac compiler="gcj" srcdir="${src.dir}" destdir="${bin.dir}" 
debug="true" optimize="true">
+
+      <compilerarg value="-Xlint" />
+
+      <classpath>
+        <pathelement location="${hsqldb.location}"/>
+      </classpath>
+
+    </javac>
+
+    <copy todir="${bin.dir}">
+      <fileset dir="${src.dir}">
+        <include name="**/*.properties" />
+      </fileset>
+    </copy>
+
+  </target>
+
+
   <target name="compile">
     <mkdir dir="${bin.dir}" />


Modified: trunk/apps/Thaw/src/thaw/core/Core.java
===================================================================
--- trunk/apps/Thaw/src/thaw/core/Core.java     2006-07-08 20:39:16 UTC (rev 
9517)
+++ trunk/apps/Thaw/src/thaw/core/Core.java     2006-07-09 02:58:22 UTC (rev 
9518)
@@ -233,7 +233,8 @@
         */
        public void exit() {
                Logger.info(this, "Stopping scheduler ...");
-               queueManager.stopScheduler();
+               if(queueManager != null)
+                   queueManager.stopScheduler();

                Logger.info(this, "Stopping plugins ...");
                pluginManager.stopPlugins();

Modified: trunk/apps/Thaw/src/thaw/fcp/FCPClientGet.java
===================================================================
--- trunk/apps/Thaw/src/thaw/fcp/FCPClientGet.java      2006-07-08 20:39:16 UTC 
(rev 9517)
+++ trunk/apps/Thaw/src/thaw/fcp/FCPClientGet.java      2006-07-09 02:58:22 UTC 
(rev 9518)
@@ -11,7 +11,7 @@
  * notify() only when progress has really changes.
  */
 public class FCPClientGet extends Observable implements Observer, FCPQuery {
-       private final static String MAX_RETRIES = "3";
+       private final static int MAX_RETRIES = 3;
        private final static int PACKET_SIZE = 1024;
        private final static int BLOCK_SIZE = 32768;

@@ -32,6 +32,9 @@
        private int progress; /* in pourcent */
        private long fileSize;

+       private boolean running = false;
+       private boolean successful = false;
+
        /**
         * @param persistence 0 = Forever ; 1 = Until node reboot ; 2 = Until 
the app disconnect
         */
@@ -51,12 +54,11 @@
                this.progress = 0;
                this.fileSize = 0;

-               String cutcut[] = key.split("/");
-               
-               filename = cutcut[cutcut.length-1];
-
-               if(filename.equals("") || filename.indexOf('.') < 0) {
+               if(key.indexOf('/') == key.length()-1) {
                        filename = "index.html";
+               } else {
+                       String cutcut[] = key.split("/");                       
+                       filename = cutcut[cutcut.length-1];
                }

                Logger.debug(this, "Getting "+key);
@@ -66,6 +68,8 @@
        }

        public boolean start(FCPQueueManager queueManager) {
+               running = true;
+
                this.queueManager = queueManager;

                status = "Requesting";
@@ -80,7 +84,7 @@
                queryMessage.setValue("URI", getFileKey());
                queryMessage.setValue("Identifier", id);
                queryMessage.setValue("Verbosity", "1");
-               queryMessage.setValue("MaxRetries", MAX_RETRIES);
+               queryMessage.setValue("MaxRetries", "0");
                queryMessage.setValue("PriorityClass", (new 
Integer(priority)).toString());

                if(persistence == 0)
@@ -109,16 +113,10 @@
                FCPMessage message = (FCPMessage)arg;

                if(message.getValue("Identifier") == null
-                  || !message.getValue("Identifier").equals(id)) {
-                       if(message.getValue("Identifier") != null)
-                               Logger.verbose(this, "Not for us : 
"+message.getValue("Identifier"));
-                       else
-                               Logger.verbose(this, "Not for us");
+                  || !message.getValue("Identifier").equals(id))
                        return;
-               } else {
-                       Logger.verbose(this, "For us for us !");
-               }

+
                if(message.getMessageName().equals("DataFound")) {
                        Logger.debug(this, "DataFound!");

@@ -163,6 +161,7 @@

                        status = "Protocol Error";
                        progress = 100;
+                       running = false;

                        queueManager.getQueryManager().deleteObserver(this);

@@ -175,10 +174,16 @@
                if(message.getMessageName().equals("GetFailed")) {
                        Logger.debug(this, "GetFailed !");

-                       status = "Failed";
-                       progress = 100;
+                       attempt++;

-                       queueManager.getQueryManager().deleteObserver(this);
+                       if(attempt >= MAX_RETRIES) {
+                           status = "Failed";
+                           progress = 100;
+                           running = false;
+                           queueManager.getQueryManager().deleteObserver(this);
+                       } else {
+                           status = "Retrying";
+                       }

                        setChanged();
                        notifyObservers();
@@ -215,10 +220,14 @@

                        fileSize = (new 
Long(message.getValue("DataLength"))).longValue();

-                       status = "Available";
+                       status = "Writing";

-                       fetchDirectly(fileSize);
-
+                       if(fetchDirectly(fileSize)) {
+                               successful = true;
+                               status = "Available";
+                       }
+                       
+                       running = false;
                        progress = 100;

                        queueManager.getQueryManager().deleteObserver(this);
@@ -230,13 +239,13 @@
                        /* Should not bother us */
                        return;
                }
-
+               
                Logger.warning(this, "Unknow message : 
"+message.getMessageName() + " !");
-
+               
        }


-       public void fetchDirectly(long size) {
+       public boolean fetchDirectly(long size) {
                FCPConnection connection;
                File newFile = new File(getPath());
                FileOutputStream fileWriter;
@@ -250,7 +259,7 @@
                } catch(java.io.IOException e) {
                        Logger.error(this, "Unable to write file on disk ... 
perms ? : "+e.toString());
                        status = "Write error";
-                       return;
+                       return false;
                }

                /* size == bytes remaining on socket */
@@ -277,13 +286,13 @@
                        } catch(java.io.IOException e) {
                                Logger.error(this, "Unable to write file on 
disk ... out of space ? : "+e.toString());
                                status = "Write error";
-                               return;
+                               return false;
                        }

                        size = size - amount;

                }
-               
+
                try {
                        fileWriter.close();
                } catch(java.io.IOException e) {
@@ -292,6 +301,7 @@

                Logger.info(this, "File written");

+               return true;
        }


@@ -340,4 +350,12 @@
        public int getAttempt() {
                return attempt;
        }
+
+       public boolean isSuccessful() {
+               return successful;
+       }
+
+       public boolean isRunning() {
+               return running;
+       }
 }

Modified: trunk/apps/Thaw/src/thaw/fcp/FCPClientHello.java
===================================================================
--- trunk/apps/Thaw/src/thaw/fcp/FCPClientHello.java    2006-07-08 20:39:16 UTC 
(rev 9517)
+++ trunk/apps/Thaw/src/thaw/fcp/FCPClientHello.java    2006-07-09 02:58:22 UTC 
(rev 9518)
@@ -23,6 +23,7 @@
        private int nmbCompressionCodecs = -1;

        private boolean receiveAnswer = false;
+       private boolean successful = false;

        private FCPQueryManager queryManager = null;

@@ -111,6 +112,7 @@
                if(o == queryManager) {

                        if(answer.getMessageName().equals("NodeHello")) {
+                               successful = true;
                                Logger.info(this, "Received a nodeHello");

                                nodeFCPVersion = answer.getValue("FCPVersion");
@@ -166,10 +168,14 @@
                return 0;
        }

-       public boolean isFinished() {
+       public boolean isRunning() {
                return false;
        }

+       public boolean isFinished() {
+               return true;
+       }
+
        public String getPath() {
                return null;
        }
@@ -178,5 +184,9 @@
                return -1;
        }

+       public boolean isSuccessful() {
+               return successful;
+       }
+
 }


Modified: trunk/apps/Thaw/src/thaw/fcp/FCPConnection.java
===================================================================
--- trunk/apps/Thaw/src/thaw/fcp/FCPConnection.java     2006-07-08 20:39:16 UTC 
(rev 9517)
+++ trunk/apps/Thaw/src/thaw/fcp/FCPConnection.java     2006-07-09 02:58:22 UTC 
(rev 9518)
@@ -66,7 +66,10 @@

        public void disconnect() {
                try {
+                   if(isConnected())
                        socket.close();
+                   else
+                       Logger.notice(this, "Disconnect(): Already disconnected 
!");
                } catch(java.io.IOException e) {
                        Logger.warning(this, "Unable to close cleanly the 
connection : "+e.toString());
                }

Modified: trunk/apps/Thaw/src/thaw/fcp/FCPQuery.java
===================================================================
--- trunk/apps/Thaw/src/thaw/fcp/FCPQuery.java  2006-07-08 20:39:16 UTC (rev 
9517)
+++ trunk/apps/Thaw/src/thaw/fcp/FCPQuery.java  2006-07-09 02:58:22 UTC (rev 
9518)
@@ -72,5 +72,13 @@
         */
        public int getAttempt();

+       public boolean isRunning();
+
        public boolean isFinished();
+
+       /**
+        * If unknow, return false.
+        * Query is considered as a failure is isFinished() && !isSuccesful()
+        */
+       public boolean isSuccessful();
 }

Modified: trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java  2006-07-08 20:39:16 UTC 
(rev 9517)
+++ trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java  2006-07-09 02:58:22 UTC 
(rev 9518)
@@ -66,7 +66,13 @@

                
core.getMainWindow().addTab(I18n.getMessage("thaw.common.status"), mainPanel);

-               core.getQueueManager().addObserver(this);
+               if(core.getQueueManager() != null)
+                   core.getQueueManager().addObserver(this);
+               else {
+                   Logger.warning(this, "Unable to connect to QueueManager. Is 
the connection established ?");
+                   return false;
+               }
+                   

                return true;
        }
@@ -105,15 +111,20 @@

                FCPQueueManager manager = (FCPQueueManager)o;

-               queuePanels[0].resetTable();
-               queuePanels[1].resetTable();
+               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]);

-               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");
+               }

        }


Modified: trunk/apps/Thaw/src/thaw/plugins/queueWatcher/DetailPanel.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/queueWatcher/DetailPanel.java      
2006-07-08 20:39:16 UTC (rev 9517)
+++ trunk/apps/Thaw/src/thaw/plugins/queueWatcher/DetailPanel.java      
2006-07-09 02:58:22 UTC (rev 9518)
@@ -112,7 +112,10 @@
        public void refresh() {
                if(query != null) {
                        progress.setValue(query.getProgression());
-                       progress.setString((new 
Integer(query.getProgression())).toString() + "%");
+                       if(!query.isFinished() || query.isSuccessful())
+                               progress.setString((new 
Integer(query.getProgression())).toString() + "%");
+                       else
+                               progress.setString("FAILED");
                } else {
                        progress.setValue(0);
                        progress.setString("");

Modified: trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueuePanel.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueuePanel.java       
2006-07-08 20:39:16 UTC (rev 9517)
+++ trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueuePanel.java       
2006-07-09 02:58:22 UTC (rev 9518)
@@ -5,9 +5,15 @@
 import javax.swing.JLabel;
 import javax.swing.JScrollPane;
 import javax.swing.event.TableModelEvent;
+import javax.swing.JProgressBar;
 import java.awt.BorderLayout;
+import java.awt.Component;
 import java.util.Vector;

+import javax.swing.table.DefaultTableCellRenderer;
+import java.awt.Color;
+import java.awt.Component;
+
 import java.awt.event.MouseListener;
 import java.awt.event.MouseEvent;

@@ -52,10 +58,59 @@
                panel.add(label, BorderLayout.NORTH);
                panel.add(new JScrollPane(table), BorderLayout.CENTER);

+               table.setDefaultRenderer( table.getColumnClass(0), new 
ProgressRenderer(table, tableModel) );
+
                tableModel.addTableModelListener(table);
                table.addMouseListener(this);
        }

+
+       private class ProgressRenderer extends DefaultTableCellRenderer {
+               private final static long serialVersionUID = 20060709;
+
+               private final Color SUCCESS = Color.GREEN;
+               private final Color FAILURE = Color.RED;
+               private final Color RUNNING = Color.ORANGE;
+               private final Color PENDING = Color.WHITE;
+
+               QueueTableModel model = null;
+               JTable tabl = null;
+
+               public ProgressRenderer(JTable table, QueueTableModel model) {
+                       this.model = model;
+                       this.tabl = table;
+               }
+
+               public Component getTableCellRendererComponent(JTable table, 
Object value,
+                                                              boolean 
isSelected, boolean hasFocus,
+                                                              int row, int 
column) {
+
+                       Component cell = 
super.getTableCellRendererComponent(table, value,
+                                                                            
isSelected, hasFocus,
+                                                                            
row, column);
+
+                       if(!isSelected) {
+       
+                               FCPQuery query = model.getQuery(row);
+                               
+                               if(!query.isRunning() && !query.isFinished())
+                                       cell.setBackground(PENDING);
+                               if(query.isFinished() && query.isSuccessful())
+                                       cell.setBackground(SUCCESS);
+                               if(query.isFinished() && !query.isSuccessful())
+                                       cell.setBackground(FAILURE);
+                               if(query.isRunning() && !query.isFinished())
+                                       cell.setBackground(RUNNING);
+                       }
+                       
+
+                       return cell;
+               }
+
+       }
+
+
+
        public void resetTable() {
                tableModel.resetTable();
        }

Modified: trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueueTableModel.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueueTableModel.java  
2006-07-08 20:39:16 UTC (rev 9517)
+++ trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueueTableModel.java  
2006-07-09 02:58:22 UTC (rev 9518)
@@ -7,6 +7,7 @@

 import javax.swing.event.TableModelListener;
 import javax.swing.event.TableModelEvent;
+import javax.swing.JProgressBar;

 import thaw.core.*;
 import thaw.i18n.I18n;
@@ -17,7 +18,7 @@

        private Vector columnNames = new Vector();

-       private Vector queries = null;
+        private Vector queries = null;

        public QueueTableModel(boolean isForInsertions) {
                super();
@@ -30,6 +31,8 @@
                resetTable();
        }

+
+

        public int getRowCount() {
                if(queries != null)
@@ -66,7 +69,7 @@
                }

                if(column == 3) {
-                       return (new Integer(query.getProgression())).toString() 
+ "%";
+                       return ((new 
Integer(query.getProgression())).toString() + " %");
                }

                return null;
@@ -91,7 +94,14 @@
        }

        public void addQuery(FCPQuery query) {
+               JProgressBar bar;
+
                ((Observable)query).addObserver(this);
+               
+               bar = new JProgressBar(0, 100);
+               bar.setStringPainted(true);
+               bar.setString((new 
Integer(query.getProgression())).toString()+"%");
+               bar.setValue(query.getProgression());

                queries.add(query);



Reply via email to