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.