Author: paperwing
Date: 2012-06-01 15:51:32 -0700 (Fri, 01 Jun 2012)
New Revision: 29427

Modified:
   
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/net/WebApp.java
   
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/net/WebQuerier.java
   
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/InstallFromStorePanel.java
Log:
#refs 1051 Search field now working, should work appropriately to unselect 
currently selected tags, app manager able to filter out non-3.0 compatible 
apps, but we don't have any on the app store right now

Modified: 
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/net/WebApp.java
===================================================================
--- 
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/net/WebApp.java
  2012-06-01 22:36:45 UTC (rev 29426)
+++ 
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/net/WebApp.java
  2012-06-01 22:51:32 UTC (rev 29427)
@@ -95,15 +95,6 @@
                        this.compatibleCytoscapeVersions = 
compatibleCytoscapeVersions;
                }
 
-               
-               
-               
-               /*
-               "release_download_url":"/apps/metanetter/download/0.1",
-        "created_iso":"2012-05-11T10:32:58",
-        "version":"0.1",
-        "works_with":"3.0";
-        */
        }
        
        public WebApp() {

Modified: 
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/net/WebQuerier.java
===================================================================
--- 
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/net/WebQuerier.java
      2012-06-01 22:36:45 UTC (rev 29426)
+++ 
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/net/WebQuerier.java
      2012-06-01 22:51:32 UTC (rev 29427)
@@ -226,13 +226,6 @@
                                                
                                                // Sort releases by release date
                                                Collections.sort(releases);
-                                               
-                                               /*
-                                               
"release_download_url":"/apps/metanetter/download/0.1",
-                                       "created_iso":"2012-05-11T10:32:58",
-                                       "version":"0.1",
-                                       "works_with":"3.0";
-                                       */
                                        }
                                        
                                        webApp.setReleases(releases);
@@ -244,10 +237,17 @@
                                // DebugHelper.print("Obtaining ImageIcon: " + 
iconUrlPrefix + webApp.getIconUrl());
                                // webApp.setImageIcon(new ImageIcon(new 
URL(iconUrlPrefix + webApp.getIconUrl())));
 
-                               // Obtain tags associated with this app
-                               processAppTags(webApp, jsonObject);
-
-                               result.add(webApp);
+                               
+                               // Check the app for compatible releases
+                               List<WebApp.Release> compatibleReleases = 
getCompatibleReleases(webApp);
+                               
+                               // Only add this app if it has compatible 
releases
+                               if (compatibleReleases.size() > -1) {
+                                       // Obtain tags associated with this app
+                                       processAppTags(webApp, jsonObject);
+       
+                                       result.add(webApp);
+                               }
                        }
                        
                } catch (IOException e) {
@@ -342,22 +342,15 @@
         */
        public File downloadApp(WebApp webApp, String version, File directory) 
throws AppDownloadException {
        
-               List<WebApp.Release> compatibleReleases = new 
LinkedList<WebApp.Release>();
+               List<WebApp.Release> compatibleReleases = 
getCompatibleReleases(webApp);
                
-               for (WebApp.Release release : webApp.getReleases()) {
-                       
-                       // Get releases that are compatible with the current 
version of Cytoscape
-                       if 
(release.getReleaseVersion().matches(COMPATIBLE_RELEASE_REGEX)) {
-                               compatibleReleases.add(release);
-                       }
-               }
-               
-               
                if (compatibleReleases.size() > 0) {
                        WebApp.Release releaseToDownload = null;
                        
                        if (version != null) {
                                for (WebApp.Release compatibleRelease : 
compatibleReleases) {
+                                       
+                                       // Check if the desired version is 
found in the list of available versions
                                        if 
(compatibleRelease.getReleaseVersion().matches(
                                                        "(^\\s*|.*,)\\s*" + 
version + "\\s*(\\s*$|,.*)")) {
                                                releaseToDownload = 
compatibleRelease;
@@ -412,66 +405,24 @@
                
                return null;
        }
-       
-       
+
        /**
-        * Obtain the release URL for a given app and version by querying the 
app store.
-        * 
-        * This method assumes that the appName parameter corresponds to the 
name of an
-        * app available on the web store.
-        * 
-        * @param appName The name of the app whose release URL is to be looked 
for
-        * @param version The desired version of the app, or <code>null</code> 
to obtain
-        * the the latest release 
-        * @return The download URL of the app, or <code>null</code> if no 
release was
-        * available, or a release with the given version was not found.
+        * Returns the list of compatible releases, in chronological order 
starting with the earliest.
+        * @param webApp
+        * @return
         */
-       private String getReleaseUrl(String appName, String version) {
+       private List<WebApp.Release> getCompatibleReleases(WebApp webApp) {
+               List<WebApp.Release> compatibleReleases = new 
LinkedList<WebApp.Release>();
                
-               try {
-                       String jsonResult = query(APP_STORE_URL + "apps/" + 
appName);
+               for (WebApp.Release release : webApp.getReleases()) {
                        
-                       JSONObject jsonObject = new JSONObject(jsonResult);
-               
-                       JSONArray releases = 
jsonObject.getJSONArray("releases");
-                       
-                       DebugHelper.print("Releases for " + appName + ": " + 
releases.length());
-                       
-                       String latestReleaseUrl = null;
-                       String latestReleaseDate = null;
-                       String releaseDate;
-                       
-                       for (int index = 0; index < releases.length(); index++) 
{
-                               JSONObject release = 
releases.getJSONObject(index);
-                       
-                               if (version != null) {
-                                       if 
(release.getString("version").equalsIgnoreCase(version)) {
-                                               latestReleaseUrl = 
APP_STORE_URL + release.getString("release_file_url");
-                                       }
-                               } else {
-                                       // If version was null, look for the 
latest release
-                                       releaseDate = 
release.getString("created_iso");
-                                       if (latestReleaseDate == null || 
releaseDate.compareToIgnoreCase(latestReleaseDate) >= 0) {
-                                               latestReleaseUrl = 
APP_STORE_URL + release.getString("release_file_url");
-                                               latestReleaseDate = releaseDate;
-                                       }
-                               }
+                       // Get releases that are compatible with the current 
version of Cytoscape (version 3)
+                       if 
(release.getReleaseVersion().matches(COMPATIBLE_RELEASE_REGEX)) {
+                               compatibleReleases.add(release);
                        }
-                       
-                       return latestReleaseUrl;
-                       
-               } catch (IOException e) {
-                       // TODO Auto-generated catch block
-                       e.printStackTrace();
-               } catch (JSONException e) {
-                       // TODO Auto-generated catch block
-                       e.printStackTrace();
                }
                
-               
-               
-               return null;
-               
+               return compatibleReleases;
        }
        
        
@@ -480,49 +431,5 @@
                Set<WebApp> webApps = getAllApps();
                
                return appsByTagName.get(tagName);
-               
-               /*
-                
-               // Construct a map used to quickly obtain references to WebApp 
objects given the app's name.
-               // The app's name is guaranteed to be unique by the app store 
website.
-               Map<String, WebApp> appMap = new HashMap<String, WebApp>();
-               for (WebApp webApp : webApps) {
-                       appMap.put(webApp.getName(), webApp);
-               }
-               
-               Set<WebApp> result = new HashSet<WebApp>();
-               
-               // Query for apps that match the given tag
-               String jsonResult = null;
-               try {
-                       // Obtain information about the app from the website
-                       jsonResult = query(APP_STORE_URL + "apps/with_tag/" + 
tagName);
-                       
-                       // Parse the JSON result
-                       JSONArray jsonArray = new JSONArray(jsonResult);
-                       JSONObject jsonObject = null;
-                       
-                       for (int index = 0; index < jsonArray.length(); 
index++) {
-                               jsonObject = jsonArray.getJSONObject(index);
-                               
-                               String appName = 
jsonObject.get("name").toString();
-
-                               // Assume any app obtained by querying with the 
tag was
-                               // already obtained by the query for all 
available apps
-                               result.add(appMap.get(appName));
-                       }
-
-               } catch (IOException e) {
-                       // TODO Auto-generated catch block
-                       e.printStackTrace();
-               } catch (JSONException e) {
-                       // TODO Auto-generated catch block
-                       DebugHelper.print("Error parsing JSON: " + 
e.getMessage());
-                       e.printStackTrace();
-               }
-               
-               return result;
-               
-               */
        }
 }

Modified: 
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/InstallFromStorePanel.java
===================================================================
--- 
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/InstallFromStorePanel.java
    2012-06-01 22:36:45 UTC (rev 29426)
+++ 
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/InstallFromStorePanel.java
    2012-06-01 22:51:32 UTC (rev 29427)
@@ -101,7 +101,7 @@
        tagsTree.addTreeSelectionListener(new TreeSelectionListener() {
                        
                        @Override
-                       public void valueChanged(TreeSelectionEvent arg0) {
+                       public void valueChanged(TreeSelectionEvent e) {
                                updateResultsTree();
                        }
                });
@@ -127,32 +127,7 @@
                        
                                taskMonitor.setStatusMessage("Getting available 
apps");
                                Set<WebApp> availableApps = 
webQuerier.getAllApps();
-                               
-                               // Note: Code below not used because web store 
now returns tag information when
-                               // returning all apps
-                               
-                               /* 
-                       // Obtain available tags
-                       Set<WebQuerier.AppTag> availableTags = 
webQuerier.getAllTags();
-                       
-                       double progress = 0;
-                       
-                       for (WebQuerier.AppTag appTag : availableTags) {
-
-                               taskMonitor.setStatusMessage("Getting apps for 
tag: " + appTag.getFullName());
-                               progress += 1.0 / availableTags.size();
-                               taskMonitor.setProgress(progress);
-                               
-                               // Obtain apps for the current tag
-                               Set<WebApp> tagApps = 
webQuerier.getAppsByTag(appTag.getName());
-                               
-                               // Assume the set of apps returned is a subset 
of all available apps
-                               for (WebApp tagApp : tagApps) {
-                                       tagApp.getAppTags().add(appTag);
-                               }
-                       }
-                               */
-                               
+                       
                                // Once the information is obtained, update the 
tree
                                
                                SwingUtilities.invokeLater(new Runnable() {
@@ -174,19 +149,6 @@
                        }
                        
                }));
-       
-               /*
-               addTagInformation();
-        populateTree(appManager.getWebQuerier().getAllApps());
-        */
-               
-               /*
-        setupDescriptionListener();
-        setupHyperlinkListener();
-        setupTextFieldListener();
-        */
-               
-               
     }
 
     private void initComponents() {
@@ -339,38 +301,6 @@
        
         if (files != null) {
                
-               /*
-               for (int index = 0; index < files.length; index++) {
-                       AppParser appParser = appManager.getAppParser();
-                       
-                       App app = null;
-                       
-                       // Attempt to parse each file as an App object
-                       try {
-                                       app = appParser.parseApp(files[index]);
-                                       
-                               } catch (AppParsingException e) {
-                                       
-                                       // TODO: Replace DebugHelper.print() 
messages with exception or a pop-up message box
-                                       DebugHelper.print("Error parsing app: " 
+ e.getMessage());
-                                       
-                                       JOptionPane.showMessageDialog(parent, 
"Error opening app: " + e.getMessage(),
-                                      "Error", JOptionPane.ERROR_MESSAGE);
-                               } finally {
-                                       
-                                       // Install the app if parsing was 
successful
-                                       if (app != null) {
-                                               try {
-                                                       
appManager.installApp(app);
-                                               } catch (AppInstallException e) 
{
-                                                       
JOptionPane.showMessageDialog(parent, "Error installing app: " + e.getMessage(),
-                                                      "Error", 
JOptionPane.ERROR_MESSAGE);
-                                               }
-                                       }
-                               }
-               }
-               */
-               
                taskManager.execute(new TaskIterator(new Task() {
 
                        @Override
@@ -423,9 +353,15 @@
                                                
                                                        
fillResultsTree(resultsFilterer.findMatches(filterTextField.getText(), 
                                                                
appManager.getWebQuerier().getAllApps()));
+                                                       
                                                } else {
+                                                       
//fillResultsTree(resultsFilterer.findMatches(filterTextField.getText(), 
+                                                       //      
appManager.getWebQuerier().getAppsByTag(currentSelectedAppTag.getName())));
+                                                       
                                                        
fillResultsTree(resultsFilterer.findMatches(filterTextField.getText(), 
-                                                               
appManager.getWebQuerier().getAppsByTag(currentSelectedAppTag.getName())));
+                                                                       
appManager.getWebQuerier().getAllApps()));
+                                                       
+                                                       
tagsTree.clearSelection();
                                                }
                                        }
                                        
@@ -448,12 +384,6 @@
                });
     }
     
-    
-    private void searchComboBoxPropertyChange(java.beans.PropertyChangeEvent 
evt) {
-
-    }
-    
-    
     private void installButtonActionPerformed(java.awt.event.ActionEvent evt) {
        final WebQuerier webQuerier = appManager.getWebQuerier();
         final WebApp appToDownload = selectedApp;
@@ -495,20 +425,23 @@
     private void buildTagsTree() {
        WebQuerier webQuerier = appManager.getWebQuerier();
        
-       // Obtain available tags
+       // Get all available apps and tags
+       Set<WebApp> availableApps = webQuerier.getAllApps();
        Set<WebQuerier.AppTag> availableTags = webQuerier.getAllTags();
        
-       
-       
        DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");
        
        DefaultMutableTreeNode allAppsTreeNode = new 
DefaultMutableTreeNode("all apps" 
-                       + " (" + webQuerier.getAllApps().size() + ")");
+                       + " (" + availableApps.size() + ")");
        root.add(allAppsTreeNode);
        
        DefaultMutableTreeNode appsByTagTreeNode = new 
DefaultMutableTreeNode("apps by tag");
-       root.add(appsByTagTreeNode);
        
+       // Only show the "apps by tag" node if we have at least 1 app
+       if (availableApps.size() > 0) {
+               root.add(appsByTagTreeNode);
+       }
+       
        DefaultMutableTreeNode treeNode = null;
        for (final WebQuerier.AppTag appTag : availableTags) {
                if (appTag.getCount() > 0) {
@@ -525,24 +458,28 @@
  
     private void updateResultsTree() {
        
-       DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) 
tagsTree.getSelectionPath().getLastPathComponent();
+       TreePath selectionPath = tagsTree.getSelectionPath();
        
 //     DebugHelper.print(String.valueOf(selectedNode.getUserObject()));
        currentSelectedAppTag = null;
        
-       // Check if the "all apps" node is selected
-       if (selectedNode.getLevel() == 1 
-                       && 
String.valueOf(selectedNode.getUserObject()).startsWith("all apps")) {
-               fillResultsTree(null);
-               
-       } else if (selectedNode.getUserObject() instanceof WebQuerier.AppTag) {
-               WebQuerier.AppTag selectedTag = (WebQuerier.AppTag) 
selectedNode.getUserObject();
-               
-               
fillResultsTree(appManager.getWebQuerier().getAppsByTag(selectedTag.getName()));
-               currentSelectedAppTag = selectedTag;
-       } else {
-               // Clear tree
-               resultsTree.setModel(new DefaultTreeModel(null));
+       if (selectionPath != null) {
+               DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) 
selectionPath.getLastPathComponent();
+               
+               // Check if the "all apps" node is selected
+               if (selectedNode.getLevel() == 1 
+                               && 
String.valueOf(selectedNode.getUserObject()).startsWith("all apps")) {
+                       fillResultsTree(null);
+                       
+               } else if (selectedNode.getUserObject() instanceof 
WebQuerier.AppTag) {
+                       WebQuerier.AppTag selectedTag = (WebQuerier.AppTag) 
selectedNode.getUserObject();
+                       
+                       
fillResultsTree(appManager.getWebQuerier().getAppsByTag(selectedTag.getName()));
+                       currentSelectedAppTag = selectedTag;
+               } else {
+                       // Clear tree
+                       resultsTree.setModel(new DefaultTreeModel(null));       
                
+               }
        }
     }
     
@@ -626,36 +563,5 @@
                                e.printStackTrace();
                        }
                }
-    }
-    
-    /**
-     * Populate the current tree of results with the available apps from the 
web store.
-     */
-    /*
-    private void populateTreeOld() {
-       WebQuerier webQuerier = appManager.getWebQuerier();
-       
-       DefaultMutableTreeNode root = new DefaultMutableTreeNode("Available 
Apps (" + webQuerier.getAllApps().size() + ")");
-       
-       // Obtain available tags
-       Set<WebQuerier.AppTag> availableTags = webQuerier.getAllTags();
-       
-       for (WebQuerier.AppTag appTag : availableTags) {
-               DefaultMutableTreeNode tagNode = new 
DefaultMutableTreeNode(appTag.getFullName() + " (" + appTag.getCount() + ")");
-               
-               // Obtain apps for the current tag
-               DebugHelper.print("Getting apps for tag: " + appTag.getName());
-               Set<WebApp> tagApps = webQuerier.getAppsByTag(appTag.getName());
-               
-               for (WebApp tagApp : tagApps) {
-                       tagNode.add(new DefaultMutableTreeNode(tagApp));
-               }
-               
-               root.add(tagNode);
-       }
-       
-       resultsTree.setModel(new DefaultTreeModel(root));
-    }
-    */
-    
+    }    
 }

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to