kind-of update of taverna-plugins-gui

but this should not be used, as taverna-plugin-manager
is the replacement


Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/commit/4c5c6a82
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/tree/4c5c6a82
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/diff/4c5c6a82

Branch: refs/heads/master
Commit: 4c5c6a827bf5fbec6ee93e6f3b4fe2aae16c70ca
Parents: 9a62222
Author: Stian Soiland-Reyes <[email protected]>
Authored: Mon Oct 24 11:05:29 2016 +0100
Committer: Stian Soiland-Reyes <[email protected]>
Committed: Mon Oct 24 11:05:29 2016 +0100

----------------------------------------------------------------------
 pom.xml                                         |  8 ++-
 .../raven/plugins/ui/CheckForUpdatesDialog.java | 34 +++++----
 .../plugins/ui/CheckForUpdatesStartupHook.java  | 76 ++++++++++++--------
 .../plugins/ui/PluginListCellRenderer.java      |  9 +--
 .../raven/plugins/ui/PluginListModel.java       |  5 +-
 .../raven/plugins/ui/PluginManagerFrame.java    |  5 +-
 .../raven/plugins/ui/PluginSiteFrame.java       |  8 +--
 .../raven/plugins/ui/UpdatesAvailableIcon.java  |  3 +-
 8 files changed, 82 insertions(+), 66 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/4c5c6a82/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 68521f3..98e8e5b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -75,7 +75,6 @@
             <module>taverna-perspective-design</module>
             <module>taverna-perspective-myexperiment</module>
             <module>taverna-plugin-manager</module>
-            <module>taverna-plugins-gui</module>
             <module>taverna-reference-ui</module>
             <module>taverna-renderers-api</module>
             <module>taverna-renderers-exts</module>
@@ -108,6 +107,13 @@
             <module>taverna-report-impl</module>
             <module>taverna-report-view</module>
            -->
+<!--
+     The below contains outdated code which should be updated
+to use Taverna OSGi - it is provided for reference as some 
+of the functionality (e.g. update on startup chec) should be moved to its
+replacement, taverna-plugin-manager
+            <module>taverna-plugins-gui</module>
+-->
 
         </modules>
   <scm>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/4c5c6a82/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/CheckForUpdatesDialog.java
----------------------------------------------------------------------
diff --git 
a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/CheckForUpdatesDialog.java
 
b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/CheckForUpdatesDialog.java
index 36533a1..653436d 100644
--- 
a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/CheckForUpdatesDialog.java
+++ 
b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/CheckForUpdatesDialog.java
@@ -25,19 +25,20 @@ import java.awt.Rectangle;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.attribute.FileTime;
+import java.time.Instant;
 
 import javax.swing.JButton;
-import javax.swing.JDialog;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.border.CompoundBorder;
 import javax.swing.border.EmptyBorder;
 import javax.swing.border.EtchedBorder;
 
-import org.apache.taverna.workbench.helper.HelpEnabledDialog;
-
-import org.apache.commons.io.FileUtils;
 import org.apache.log4j.Logger;
+import org.apache.taverna.workbench.helper.HelpEnabledDialog;
 
 /**
  * Dialog that lets user know that there are updates available.
@@ -47,15 +48,17 @@ import org.apache.log4j.Logger;
 public class CheckForUpdatesDialog extends HelpEnabledDialog {
        
        private Logger logger = Logger.getLogger(CheckForUpdatesDialog.class);
+       private Path lastUpdateCheckFile;
 
-       public CheckForUpdatesDialog(){
+       public CheckForUpdatesDialog(Path lastUpdateCheckFile){
                super((Frame)null, "Updates available", true);
+               this.lastUpdateCheckFile = lastUpdateCheckFile;
                initComponents();
        }
        
        // For testing
-       public static void main (String[] args){
-               CheckForUpdatesDialog dialog = new CheckForUpdatesDialog();
+       public static void main (String[] args) throws IOException{
+               CheckForUpdatesDialog dialog = new 
CheckForUpdatesDialog(Files.createTempFile("update", ".tmp"));
                dialog.setVisible(true);
        }
 
@@ -98,16 +101,17 @@ public class CheckForUpdatesDialog extends 
HelpEnabledDialog {
                                (dimension.height - abounds.height) / 2);
                setSize(getPreferredSize());
        }
-       
+
        protected void okPressed() {
-              try {
-                   
FileUtils.touch(CheckForUpdatesStartupHook.lastUpdateCheckFile);
-               } catch (IOException ioex) {
-                       logger.error("Failed to touch the 'Last update check' 
file for Taverna updates.", ioex);
-               }
-               closeDialog();          
+               try {
+                       FileTime time = FileTime.from(Instant.now());
+                       Files.setLastModifiedTime(lastUpdateCheckFile, time);
+               } catch (IOException ioex) {
+                       logger.error("Failed to update file " + 
lastUpdateCheckFile, ioex);
+               }
+               closeDialog();
        }
-       
+
        private void closeDialog() {
                setVisible(false);
                dispose();

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/4c5c6a82/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/CheckForUpdatesStartupHook.java
----------------------------------------------------------------------
diff --git 
a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/CheckForUpdatesStartupHook.java
 
b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/CheckForUpdatesStartupHook.java
index 2cf2289..df7c20e 100644
--- 
a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/CheckForUpdatesStartupHook.java
+++ 
b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/CheckForUpdatesStartupHook.java
@@ -16,8 +16,14 @@
  */
 package org.apache.taverna.raven.plugins.ui;
 
-import java.io.File;
-import java.util.Date;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.attribute.FileTime;
+import java.time.Instant;
+import java.time.temporal.ChronoUnit;
+import java.util.Arrays;
 
 import org.apache.log4j.Logger;
 import org.apache.taverna.configuration.app.ApplicationConfiguration;
@@ -25,7 +31,6 @@ import org.apache.taverna.plugin.PluginException;
 import org.apache.taverna.plugin.PluginManager;
 import org.apache.taverna.workbench.StartupSPI;
 import org.osgi.service.event.Event;
-import org.osgi.service.event.EventAdmin;
 import org.osgi.service.event.EventHandler;
 
 /**
@@ -42,10 +47,9 @@ public class CheckForUpdatesStartupHook implements 
StartupSPI, EventHandler {
                this.applicationConfiguration = applicationConfiguration;
        }
 
-       public static final String CHECK_FOR_UPDATES_DIRECTORY_NAME = "updates";
-       public static final String LAST_UPDATE_CHECK_FILE_NAME = 
"last_update_check";
+       public static final String UPDATES = "updates";
+       public static final String LAST_UPDATE_CHECK = "last_update_check";
 
-       private EventAdmin eventAdmin;
        private PluginManager pluginManager;
        private ApplicationConfiguration applicationConfiguration;
        private Logger logger = 
Logger.getLogger(CheckForUpdatesStartupHook.class);
@@ -55,48 +59,62 @@ public class CheckForUpdatesStartupHook implements 
StartupSPI, EventHandler {
        }
 
        public boolean startup() {
-               File lastUpdateCheckFile = new 
File(getCheckForUpdatesDirectory(),
-                               LAST_UPDATE_CHECK_FILE_NAME);
-               // Check if more than 2 weeks passed since we checked for 
updates.
-               if (lastUpdateCheckFile.exists()) {
-                       long lastModified = lastUpdateCheckFile.lastModified();
-                       long now = new Date().getTime();
-
-                       if (now - lastModified < 14 * 24 * 3600 * 1000) { // 2 
weeks have not passed since we
-                                                                               
                                                // last asked
-                               // No need to check for updates yet
+               Path lastUpdateCheckFile = lastUpdateCheckFile();
+               if (Files.exists(lastUpdateCheckFile)) {
+                       FileTime lastChecked;
+                       try {
+                               lastChecked = 
Files.getLastModifiedTime(lastUpdateCheckFile);
+                       } catch (IOException e) {
+                               // Should be able to check time of an existing 
file, some kind
+                               // of disk error?
+                               logger.error("Can't check file " + 
lastUpdateCheckFile, e);
+                               return false;
+                       }
+                       Instant twoWeeksAgo = Instant.now().minus(2, 
ChronoUnit.WEEKS);
+                       if (lastChecked.toInstant().isAfter(twoWeeksAgo)) {
+                               // No need to check yet
                                return true;
                        }
                }
+               
+               // last-check-file didn't exist, or it's more than two weeks ago
+               
                try {
                        pluginManager.checkForUpdates();
+                       // Content of file doesn't matter.. but we'll write
+                       // today's date even if we don't check the content of 
the
+                       // file later
+                       String message = Instant.now().toString();              
        
+                       Files.write(lastUpdateCheckFile, 
Arrays.asList(message), StandardCharsets.UTF_8);
                } catch (PluginException e) {
                        logger.error("Can't check for updates", e);
                        return false;
+               } catch (IOException e) {
+                       logger.error("Can't write to file " + 
lastUpdateCheckFile, e);
+                       return false;
                }
                return true;
        }
 
-
-       /**
-        * Gets the registration directory where info about registration will 
be saved to.
-        */
-       public File getCheckForUpdatesDirectory() {
-
-               File home = 
applicationConfiguration.getApplicationHomeDir().toFile();
-
-               File registrationDirectory = new File(home, 
CHECK_FOR_UPDATES_DIRECTORY_NAME);
-               if (!registrationDirectory.exists()) {
-                       registrationDirectory.mkdir();
+       private Path lastUpdateCheckFile() {
+               Path dir = 
applicationConfiguration.getApplicationHomeDir().resolve(UPDATES);
+               try {
+                       Files.createDirectories(dir);
+               } catch (IOException e) {
+                       logger.error("Can't create directories" + dir, e);
+                       // We can't recover from this here, but this would 
cause another
+                       // error in the calling methods. It's still OK to 
return 
+                       // the non-existing path below:
                }
-               return registrationDirectory;
+               return dir.resolve(LAST_UPDATE_CHECK);
        }
 
+
        @Override
        public void handleEvent(Event event) {
                // TODO: Handle Plug
                if (event.getTopic().equals(PluginManager.UPDATES_AVAILABLE)) {
-                       CheckForUpdatesDialog dialog = new 
CheckForUpdatesDialog();
+                       CheckForUpdatesDialog dialog = new 
CheckForUpdatesDialog(lastUpdateCheckFile());
                        dialog.setVisible(true);
                }
        }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/4c5c6a82/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginListCellRenderer.java
----------------------------------------------------------------------
diff --git 
a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginListCellRenderer.java
 
b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginListCellRenderer.java
index efd13a5..3f7c7ba 100644
--- 
a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginListCellRenderer.java
+++ 
b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginListCellRenderer.java
@@ -30,12 +30,9 @@ import javax.swing.JPanel;
 import javax.swing.ListCellRenderer;
 import javax.swing.border.AbstractBorder;
 
-import uk.org.taverna.commons.plugin.PluginManager;
+import org.apache.taverna.plugin.Plugin;
+import org.apache.taverna.plugin.PluginManager;
 
-/**
- *
- * @author David Withers
- */
 public class PluginListCellRenderer extends JPanel implements ListCellRenderer 
{
 
        private static final long serialVersionUID = 1L;
@@ -157,7 +154,7 @@ public class PluginListCellRenderer extends JPanel 
implements ListCellRenderer {
                if (value instanceof Plugin) {
                        Plugin plugin = (Plugin) value;
                        name.setText(plugin.getName());
-                       version.setText(plugin.getVersion());
+                       version.setText(plugin.getVersion().toString());
                        description.setText("<html>"+plugin.getDescription());
 
                        status2.setText("");

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/4c5c6a82/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginListModel.java
----------------------------------------------------------------------
diff --git 
a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginListModel.java
 
b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginListModel.java
index 9d6c99d..725290e 100644
--- 
a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginListModel.java
+++ 
b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginListModel.java
@@ -19,11 +19,8 @@ package org.apache.taverna.raven.plugins.ui;
 import javax.swing.AbstractListModel;
 
 import org.apache.log4j.Logger;
+import org.apache.taverna.plugin.PluginManager;
 
-/**
- *
- * @author David Withers
- */
 @SuppressWarnings("serial")
 public class PluginListModel extends AbstractListModel implements 
PluginManagerListener {
        private PluginManager pluginManager;

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/4c5c6a82/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginManagerFrame.java
----------------------------------------------------------------------
diff --git 
a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginManagerFrame.java
 
b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginManagerFrame.java
index 55ca4a5..00261b8 100644
--- 
a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginManagerFrame.java
+++ 
b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginManagerFrame.java
@@ -37,8 +37,7 @@ import javax.swing.ListSelectionModel;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
 
-import uk.org.taverna.commons.plugin.PluginManager;
-
+import org.apache.taverna.plugin.PluginManager;
 import org.apache.taverna.workbench.helper.HelpEnabledDialog;
 
 /**
@@ -70,8 +69,6 @@ public class PluginManagerFrame extends HelpEnabledDialog {
        
        private JButton closeButton = null;
        
-       private PluginManagerListener managerListener;
-       
        /**
         * This is the default constructor
         */

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/4c5c6a82/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginSiteFrame.java
----------------------------------------------------------------------
diff --git 
a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginSiteFrame.java
 
b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginSiteFrame.java
index 5c9aebf..c7a20cd 100644
--- 
a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginSiteFrame.java
+++ 
b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginSiteFrame.java
@@ -46,15 +46,11 @@ import javax.swing.JProgressBar;
 import javax.swing.JScrollPane;
 import javax.swing.border.EtchedBorder;
 
-import uk.org.taverna.commons.plugin.PluginManager;
-
+import org.apache.taverna.plugin.PluginManager;
+import org.apache.taverna.plugin.PluginSite;
 import org.apache.taverna.workbench.helper.HelpEnabledDialog;
 
 
-/**
- *
- * @author David Withers
- */
 public class PluginSiteFrame extends HelpEnabledDialog {
 
        private static final long serialVersionUID = 1L;

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/4c5c6a82/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/UpdatesAvailableIcon.java
----------------------------------------------------------------------
diff --git 
a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/UpdatesAvailableIcon.java
 
b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/UpdatesAvailableIcon.java
index f083d84..59289d2 100644
--- 
a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/UpdatesAvailableIcon.java
+++ 
b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/UpdatesAvailableIcon.java
@@ -29,6 +29,7 @@ import javax.swing.SwingUtilities;
 
 
 import org.apache.log4j.Logger;
+import org.osgi.service.event.EventHandler;
 
 /**
  * A JLabel that periodically checks for updates, running on a daemon thread. 
If
@@ -41,7 +42,7 @@ import org.apache.log4j.Logger;
  */
 
 @SuppressWarnings("serial")
-public class UpdatesAvailableIcon extends JLabel implements 
PluginManagerListener {
+public class UpdatesAvailableIcon extends JLabel implements EventHandler {
 
        private UpdatePluginsMouseAdaptor updatePluginMouseAdaptor = new 
UpdatePluginsMouseAdaptor();
        private static Logger logger = 
Logger.getLogger(UpdatesAvailableIcon.class);

Reply via email to