Author: kono
Date: 2011-06-15 21:15:27 -0700 (Wed, 15 Jun 2011)
New Revision: 25776
Added:
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/ImportTableTask.java
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/NCBIQuery.java
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/task/ImportTableFromNCBITask.java
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/ui/AnnotationCategory.java
Modified:
core3/webservice-impl/trunk/src/main/java/org/cytoscape/webservice/internal/ui/UnifiedNetworkImportDialog.java
core3/webservice-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/NCBITableImportAction.java
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/NCBITableImportClient.java
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/NCBIWebServiceClient.java
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/EntrezRestClient.java
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/EntryProcessor.java
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/ImportNetworkTask.java
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/task/ImportNetworkFromGeneTask.java
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/ui/AttributeImportPanel.java
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/ui/NCBIGeneDialog.java
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/ui/NCBIGenePanel.java
core3/webservice-ncbi-client-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
core3/webservice-ncbi-client-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
core3/webservice-ncbi-client-impl/trunk/src/test/java/org/cytoscape/webservice/ncbi/EntrezRestClientTest.java
Log:
Table imports are partially working, but still buggy.
Modified:
core3/webservice-impl/trunk/src/main/java/org/cytoscape/webservice/internal/ui/UnifiedNetworkImportDialog.java
===================================================================
---
core3/webservice-impl/trunk/src/main/java/org/cytoscape/webservice/internal/ui/UnifiedNetworkImportDialog.java
2011-06-16 01:29:11 UTC (rev 25775)
+++
core3/webservice-impl/trunk/src/main/java/org/cytoscape/webservice/internal/ui/UnifiedNetworkImportDialog.java
2011-06-16 04:15:27 UTC (rev 25776)
@@ -139,7 +139,7 @@
serviceUIPanels.put(client, container);
}
}
- logger.info("\n\n\n================== New network import client
registered: " + client);
+ logger.info("New network import client registered: " + client);
}
@@ -431,10 +431,10 @@
return;
WebServiceClient client = null;
- if(selected instanceof SearchWebServiceClient && selected
instanceof WebServiceClient) {
+ if(selected instanceof WebServiceClient) {
client = (WebServiceClient) selected;
} else {
- throw new IllegalStateException("Selected cleint does
not have search function.");
+ throw new IllegalStateException("Selected cleint is not
a compatible client.");
}
// Set query. Just pass the text in the panel.
Modified:
core3/webservice-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
===================================================================
---
core3/webservice-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
2011-06-16 01:29:11 UTC (rev 25775)
+++
core3/webservice-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
2011-06-16 04:15:27 UTC (rev 25776)
@@ -29,6 +29,7 @@
<osgi:interfaces>
<value>org.cytoscape.io.webservice.NetworkImportWebServiceClient</value>
<value>org.cytoscape.io.webservice.WebServiceClient</value>
+
<value>org.cytoscape.io.webservice.SearchWebServiceClient</value>
</osgi:interfaces>
<osgi:listener bind-method="addNetworkImportClient"
unbind-method="removeNetworkImportClient"
ref="unifiedNetworkImportDialog" />
Added:
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/ImportTableTask.java
===================================================================
---
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/ImportTableTask.java
(rev 0)
+++
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/ImportTableTask.java
2011-06-16 04:15:27 UTC (rev 25776)
@@ -0,0 +1,170 @@
+package org.cytoscape.webservice.ncbi;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.Callable;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.cytoscape.model.CyNode;
+import org.cytoscape.model.CyRow;
+import org.cytoscape.model.CyTable;
+import org.cytoscape.model.CyTableEntry;
+import org.cytoscape.webservice.ncbi.rest.EntrezRestClient;
+import org.cytoscape.webservice.ncbi.ui.AnnotationCategory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class ImportTableTask implements Callable<String> {
+
+ private static final Logger logger =
LoggerFactory.getLogger(ImportTableTask.class);
+
+ private String ENTRY_KEY = "Entrezgene";
+
+ private final String[] ids;
+ private final CyTable table;
+
+ private Map<String, String> valueMap;
+
+ private static final String GENE_ID_TAG = "Gene-track_geneid";
+
+ final Set<AnnotationCategory> category;
+
+ public ImportTableTask(final String[] ids, final
Set<AnnotationCategory> category, final CyTable table) {
+ this.ids = ids;
+ this.table = table;
+ this.category = category;
+ }
+
+ @Override
+ public String call() throws Exception {
+
+ final URL url = createURL();
+
+ final DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
+ final DocumentBuilder builder = factory.newDocumentBuilder();
+ InputStream is = url.openStream();
+
+ final Document result = builder.parse(is);
+ final NodeList entries = result.getElementsByTagName(ENTRY_KEY);
+ logger.debug("######## 1 Got Result for = " + url.toString());
+ logger.debug("######## 2 Got Entries: " + entries.getLength());
+
+ final int dataSize = entries.getLength();
+ for (int i = 0; i < dataSize; i++) {
+ Node item = entries.item(i);
+ logger.debug(i + ": Item = " + item.getNodeName());
+ processEntry(item);
+
+ // final String geneIDString = walk(item, GENE_ID_TAG);
+ // logger.debug("Gene ID ======== " + geneIDString);
+ // if (geneIDString == null)
+ // throw new
+ // NullPointerException("Could not find NCBI Gene ID
for the entry.");
+ // final CyRow row = table.getRow(geneIDString);
+ // row.set(CyTableEntry.NAME, geneIDString);
+ // if (table.getColumn("Entrez Gene ID") == null)
+ // table.createColumn("Entrez Gene ID", String.class,
false);
+ // row.set("Entrez Gene ID", geneIDString);
+ //
+ // final Set<String> idSet = new HashSet<String>();
+ // final NodeList ids =
+ // result.getElementsByTagName("Gene-commentary");
+ }
+
+ // boolean interactionFound = false;
+ // Node interactionNode = null;
+ // for (int i = 0; i < dataSize; i++) {
+ // // logger.debug(" GC = " +
+ // // ids.item(i).getChildNodes().getLength());
+ // NodeList children = ids.item(i).getChildNodes();
+ // for (int j = 0; j < children.getLength(); j++) {
+ // if
(children.item(j).getNodeName().equals("Gene-commentary_heading"))
+ // {
+ //
+ // //logger.debug("HEADING = " +
children.item(j).getTextContent());
+ // if
(children.item(j).getTextContent().equals("Interactions")) {
+ // logger.debug("FOUND interactions");
+ // interactionFound = true;
+ // break;
+ // }
+ // }
+ // }
+ // if (interactionFound) {
+ // interactionNode = ids.item(i);
+ // break;
+ // }
+ // }
+
+ is.close();
+ is = null;
+
+ return null;
+ }
+
+ private void processEntry(Node entry) {
+ valueMap = new HashMap<String, String>();
+ walk(entry, GENE_ID_TAG);
+ walk(entry, "Gene-ref_locus");
+ walk(entry, "Gene-source_src");
+ walk(entry, "Prot-ref_desc");
+ if (category.contains(AnnotationCategory.SUMMARY)) {
+ logger.debug("2 !!!!!! Calling summary");
+ for (Node child = entry.getFirstChild(); child != null;
child = child.getNextSibling()) {
+ logger.debug("node = " + child.getNodeName());
+ if
(child.getNodeName().equals("Entrezgene_summary")) {
+ logger.debug("Summary = " +
child.getTextContent());
+ }
+
+ }
+ }
+
+ final CyRow row = table.getRow(valueMap.get(GENE_ID_TAG));
+ row.set(CyTableEntry.NAME, valueMap.get(GENE_ID_TAG));
+ for (String key : valueMap.keySet()) {
+ logger.debug(key + " = " + valueMap.get(key));
+ }
+ }
+
+ private String walk(Node node, final String targetTag) {
+ String result = null;
+ for (Node child = node.getFirstChild(); child != null; child =
child.getNextSibling()) {
+ if (child.getNodeType() == Node.ELEMENT_NODE) {
+ if (child.getNodeName().equals(targetTag)) {
+ result = child.getTextContent();
+ logger.debug("Found: " + result);
+ valueMap.put(targetTag, result);
+ break;
+ } else
+ walk(child, targetTag);
+ }
+ }
+ return result;
+ }
+
+ private URL createURL() throws IOException {
+
+ final StringBuilder builder = new StringBuilder();
+
+ for (final String id : ids) {
+ System.out.println("ID = " + id);
+ if (id != null)
+ builder.append(id + ",");
+ }
+
+ String urlString = builder.toString();
+ urlString = urlString.substring(0, urlString.length() - 1);
+ final URL url = new URL(EntrezRestClient.FETCH_URL + urlString);
+ logger.debug("Table Import Query URL = " + url.toString());
+ return url;
+ }
+}
Added:
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/NCBIQuery.java
===================================================================
---
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/NCBIQuery.java
(rev 0)
+++
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/NCBIQuery.java
2011-06-16 04:15:27 UTC (rev 25776)
@@ -0,0 +1,24 @@
+package org.cytoscape.webservice.ncbi;
+
+import java.util.Set;
+
+import org.cytoscape.webservice.ncbi.ui.AnnotationCategory;
+
+public class NCBIQuery {
+
+ final Set<AnnotationCategory> category;
+ final Set<String> ids;
+
+ public NCBIQuery(final Set<AnnotationCategory> category, final
Set<String> ids) {
+ this.category = category;
+ this.ids = ids;
+ }
+
+ public Set<AnnotationCategory> getCategory() {
+ return this.category;
+ }
+
+ public Set<String> getIds() {
+ return this.ids;
+ }
+}
Modified:
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/NCBITableImportAction.java
===================================================================
---
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/NCBITableImportAction.java
2011-06-16 01:29:11 UTC (rev 25775)
+++
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/NCBITableImportAction.java
2011-06-16 04:15:27 UTC (rev 25776)
@@ -8,25 +8,30 @@
import org.cytoscape.model.CyTableManager;
import org.cytoscape.session.CyApplicationManager;
import org.cytoscape.webservice.ncbi.ui.NCBIGeneDialog;
+import org.cytoscape.work.TaskManager;
public class NCBITableImportAction extends AbstractCyAction {
-
+
private static final long serialVersionUID = 3101400401346193602L;
-
+
final CyTableManager tblManager;
final CyNetworkManager netManager;
+ private final NCBITableImportClient client;
+ private final TaskManager taskManager;
- public NCBITableImportAction(final CyTableManager tblManager, final
CyNetworkManager netManager, CyApplicationManager applicationManager) {
+ public NCBITableImportAction(final NCBITableImportClient client, final
TaskManager taskManager,
+ final CyTableManager tblManager, final CyNetworkManager
netManager, CyApplicationManager applicationManager) {
super("Import Data Table from NCBI...", applicationManager);
setPreferredMenu("File.Import");
this.tblManager = tblManager;
this.netManager = netManager;
+ this.client = client;
+ this.taskManager = taskManager;
}
-
@Override
- public void actionPerformed(ActionEvent arg0) {
- NCBIGeneDialog dialog = new NCBIGeneDialog(tblManager,
netManager);
+ public void actionPerformed(ActionEvent evt) {
+ final NCBIGeneDialog dialog = new NCBIGeneDialog(client,
taskManager, tblManager, netManager);
dialog.setVisible(true);
}
Modified:
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/NCBITableImportClient.java
===================================================================
---
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/NCBITableImportClient.java
2011-06-16 01:29:11 UTC (rev 25775)
+++
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/NCBITableImportClient.java
2011-06-16 04:15:27 UTC (rev 25776)
@@ -5,24 +5,27 @@
import org.cytoscape.io.webservice.TableImportWebServiceClient;
import org.cytoscape.io.webservice.client.AbstractWebServiceClient;
import org.cytoscape.model.CyTable;
+import org.cytoscape.model.CyTableFactory;
+import org.cytoscape.webservice.ncbi.task.ImportTableFromNCBITask;
import org.cytoscape.work.TaskIterator;
public class NCBITableImportClient extends AbstractWebServiceClient implements
TableImportWebServiceClient {
- public NCBITableImportClient(String uri, String displayName, String
description) {
+ private final CyTableFactory tableFactory;
+
+ public NCBITableImportClient(String uri, String displayName, String
description, final CyTableFactory tableFactory) {
super(uri, displayName, description);
- // TODO Auto-generated constructor stub
+ this.tableFactory = tableFactory;
}
@Override
public TaskIterator getTaskIterator() {
- // TODO Auto-generated method stub
- return null;
+ return new TaskIterator(new
ImportTableFromNCBITask(tableFactory, ((NCBIQuery) this.currentQuery).getIds(),
+ ((NCBIQuery) this.currentQuery).getCategory()));
}
@Override
public Set<CyTable> getTables() {
- // TODO Auto-generated method stub
return null;
}
Modified:
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/NCBIWebServiceClient.java
===================================================================
---
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/NCBIWebServiceClient.java
2011-06-16 01:29:11 UTC (rev 25775)
+++
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/NCBIWebServiceClient.java
2011-06-16 04:15:27 UTC (rev 25776)
@@ -4,25 +4,29 @@
import java.util.Set;
import org.cytoscape.io.webservice.NetworkImportWebServiceClient;
+import org.cytoscape.io.webservice.SearchWebServiceClient;
import org.cytoscape.io.webservice.client.AbstractWebServiceClient;
import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.CyNetworkFactory;
import org.cytoscape.model.CyNetworkManager;
+import org.cytoscape.model.CyTableFactory;
import org.cytoscape.webservice.ncbi.task.ImportNetworkFromGeneTask;
import org.cytoscape.work.TaskIterator;
-public class NCBIWebServiceClient extends AbstractWebServiceClient implements
NetworkImportWebServiceClient {
+public class NCBIWebServiceClient extends AbstractWebServiceClient implements
NetworkImportWebServiceClient, SearchWebServiceClient<Set<String>> {
private final CyNetworkFactory networkFactory;
+ private final CyTableFactory tableFactory;
private final CyNetworkManager manager;
private ImportNetworkFromGeneTask networkTask;
public NCBIWebServiceClient(final String uri, String displayName,
String description,
- final CyNetworkFactory networkFactory, final
CyNetworkManager manager) {
+ final CyNetworkFactory networkFactory, final
CyTableFactory tableFactory, final CyNetworkManager manager) {
super(uri, displayName, description);
this.networkFactory = networkFactory;
this.manager = manager;
+ this.tableFactory = tableFactory;
}
@Override
@@ -30,7 +34,7 @@
if (currentQuery == null)
throw new NullPointerException("Query object is null.");
else {
- networkTask = new
ImportNetworkFromGeneTask(this.currentQuery.toString(), networkFactory,
manager);
+ networkTask = new
ImportNetworkFromGeneTask(this.currentQuery.toString(), networkFactory,
tableFactory, manager);
return new TaskIterator(networkTask);
}
}
@@ -45,4 +49,10 @@
}
return result;
}
+
+ @Override
+ public Set<String> getSearchResult() {
+ // TODO Auto-generated method stub
+ return null;
+ }
}
Modified:
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/EntrezRestClient.java
===================================================================
---
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/EntrezRestClient.java
2011-06-16 01:29:11 UTC (rev 25775)
+++
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/EntrezRestClient.java
2011-06-16 04:15:27 UTC (rev 25776)
@@ -19,6 +19,11 @@
import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.CyNetworkFactory;
import org.cytoscape.model.CyNode;
+import org.cytoscape.model.CyTable;
+import org.cytoscape.model.CyTableEntry;
+import org.cytoscape.model.CyTableFactory;
+import org.cytoscape.webservice.ncbi.ImportTableTask;
+import org.cytoscape.webservice.ncbi.ui.AnnotationCategory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
@@ -31,19 +36,21 @@
private static final Logger logger =
LoggerFactory.getLogger(EntrezRestClient.class);
private static final String BASE_URL =
"http://eutils.ncbi.nlm.nih.gov/entrez/eutils/";
- static final String FETCH_URL = BASE_URL +
"efetch.fcgi?db=gene&retmode=xml&id=";
+ public static final String FETCH_URL = BASE_URL +
"efetch.fcgi?db=gene&retmode=xml&id=";
private static final String SEARCH_URL = BASE_URL +
"esearch.fcgi?db=gene&retmax=100000&term=";
private final String regex = "\\s+";
private static final String ID = "Id";
+ private final CyTableFactory tableFactory;
+
private final CyNetworkFactory networkFactory;
-
- public EntrezRestClient(final CyNetworkFactory networkFactory) {
+ public EntrezRestClient(final CyNetworkFactory networkFactory, final
CyTableFactory tableFactory) {
this.networkFactory = networkFactory;
+ this.tableFactory = tableFactory;
}
@@ -126,20 +133,62 @@
return newNetwork;
}
- private void walk(Node node, final String targetTag, final String
targetVal) {
- for(Node child = node.getFirstChild(); child != null; child =
child.getNextSibling()) {
- if(child.getNodeType() == Node.ELEMENT_NODE) {
- if(child.getNodeName().equals(targetTag)) {
- logger.debug(targetTag + " Tag = " +
child.getTextContent());
- //this.resultMap.put(targetVal,
child.getTextContent());
- break;
- } else
- walk(child, targetTag, targetVal);
+
+
+ public CyTable importDataTable(final Set<String> idList, final
Set<AnnotationCategory> category) {
+ if(idList == null || idList.size() == 0)
+ throw new IllegalArgumentException("ID list is null.");
+
+ long startTime = System.currentTimeMillis();
+ final ExecutorService executer =
Executors.newFixedThreadPool(4);
+
+ logger.debug("Table Import Executor initialized.");
+
+ final CyTable table = tableFactory.createTable("NCBI Global
Table", CyTableEntry.NAME, String.class, true, true);
+
+ int group = 0;
+ int buketNum = 10;
+ String[] box = new String[buketNum];
+
+
+ for (String entrezID : idList) {
+ box[group] = entrezID;
+ group++;
+
+ if (group == buketNum) {
+ executer.submit(new ImportTableTask(box,
category, table));
+ group = 0;
+ box = new String[buketNum];
}
}
+
+ String[] newbox = new String[group];
+
+ for (int i = 0; i < group; i++)
+ newbox[i] = box[i];
+
+ executer.submit(new ImportTableTask(box, category, table));
+
+ try {
+ executer.shutdown();
+ executer.awaitTermination(1000, TimeUnit.SECONDS);
+
+ long endTime = System.currentTimeMillis();
+ double sec = (endTime - startTime) / (1000.0);
+ System.out.println("Table Import Finished in " + sec +
" sec.");
+
+// if ((canceled != null) && canceled) {
+// canceled = null;
+//
+// return null;
+// }
+ } catch( Exception ex) {
+ ex.printStackTrace();
+ }
+
+ return table;
}
-
private URL createURL(final String base, final String queryString)
throws IOException {
final String[] parts = queryString.split(regex);
Modified:
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/EntryProcessor.java
===================================================================
---
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/EntryProcessor.java
2011-06-16 01:29:11 UTC (rev 25775)
+++
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/EntryProcessor.java
2011-06-16 04:15:27 UTC (rev 25776)
@@ -8,8 +8,4 @@
public EntryProcessor(Callable<V> callable) {
super(callable);
}
-
-
-
-
}
Modified:
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/ImportNetworkTask.java
===================================================================
---
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/ImportNetworkTask.java
2011-06-16 01:29:11 UTC (rev 25775)
+++
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/ImportNetworkTask.java
2011-06-16 04:15:27 UTC (rev 25776)
@@ -160,10 +160,7 @@
}
- private void processOneInteractionEntry() {
- }
-
private URL createURL() throws IOException {
final StringBuilder builder = new StringBuilder();
Modified:
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/task/ImportNetworkFromGeneTask.java
===================================================================
---
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/task/ImportNetworkFromGeneTask.java
2011-06-16 01:29:11 UTC (rev 25775)
+++
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/task/ImportNetworkFromGeneTask.java
2011-06-16 04:15:27 UTC (rev 25776)
@@ -6,6 +6,7 @@
import org.cytoscape.model.CyNetworkFactory;
import org.cytoscape.model.CyNetworkManager;
import org.cytoscape.model.CyTableEntry;
+import org.cytoscape.model.CyTableFactory;
import org.cytoscape.webservice.ncbi.rest.EntrezRestClient;
import org.cytoscape.work.AbstractTask;
import org.cytoscape.work.TaskMonitor;
@@ -18,21 +19,23 @@
private final String queryString;
private final CyNetworkFactory networkFactory;
+ private final CyTableFactory tableFactory;
private final CyNetworkManager manager;
private CyNetwork newNetwork;
- public ImportNetworkFromGeneTask(final String queryString, final
CyNetworkFactory networkFactory, final CyNetworkManager manager) {
+ public ImportNetworkFromGeneTask(final String queryString, final
CyNetworkFactory networkFactory, final CyTableFactory tableFactory, final
CyNetworkManager manager) {
this.queryString = queryString;
this.networkFactory = networkFactory;
this.manager = manager;
+ this.tableFactory = tableFactory;
}
@Override
public void run(TaskMonitor taskMonitor) throws Exception {
logger.debug("Import Start: Query = " + queryString);
- final EntrezRestClient restClient = new
EntrezRestClient(networkFactory);
+ final EntrezRestClient restClient = new
EntrezRestClient(networkFactory, tableFactory);
taskMonitor.setTitle("Accessing NCBI Entrez Gene");
taskMonitor.setStatusMessage("Searching matching genes...");
Added:
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/task/ImportTableFromNCBITask.java
===================================================================
---
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/task/ImportTableFromNCBITask.java
(rev 0)
+++
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/task/ImportTableFromNCBITask.java
2011-06-16 04:15:27 UTC (rev 25776)
@@ -0,0 +1,34 @@
+package org.cytoscape.webservice.ncbi.task;
+
+import java.util.Set;
+
+import org.cytoscape.model.CyTableFactory;
+import org.cytoscape.webservice.ncbi.rest.EntrezRestClient;
+import org.cytoscape.webservice.ncbi.ui.AnnotationCategory;
+import org.cytoscape.work.AbstractTask;
+import org.cytoscape.work.TaskMonitor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ImportTableFromNCBITask extends AbstractTask {
+
+ private static final Logger logger =
LoggerFactory.getLogger(ImportTableFromNCBITask.class);
+
+ private final CyTableFactory tableFactory;
+ private final Set<String> idList;
+ private final Set<AnnotationCategory> category;
+
+ public ImportTableFromNCBITask(final CyTableFactory tableFactory, final
Set<String> idList, final Set<AnnotationCategory> category) {
+ this.tableFactory = tableFactory;
+ this.idList = idList;
+ this.category = category;
+ }
+
+ @Override
+ public void run(TaskMonitor taskMonitor) throws Exception {
+ logger.debug("Table Import Task Start.");
+ EntrezRestClient client = new EntrezRestClient(null,
tableFactory);
+ client.importDataTable(idList, category);
+ }
+
+}
Added:
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/ui/AnnotationCategory.java
===================================================================
---
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/ui/AnnotationCategory.java
(rev 0)
+++
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/ui/AnnotationCategory.java
2011-06-16 04:15:27 UTC (rev 25776)
@@ -0,0 +1,28 @@
+package org.cytoscape.webservice.ncbi.ui;
+
+public enum AnnotationCategory {
+ SUMMARY("Summary"), PUBLICATION("Publications"),
PHENOTYPE("Phenotypes"), PATHWAY("Pathways"), GENERAL(
+ "General Protein Information"), LINK("Additional
Links"),
+
+ // MARKERS("Markers"),
+ GO("Gene Ontology");
+ private String name;
+
+ private AnnotationCategory(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public static AnnotationCategory getValue(String dispName) {
+ for (AnnotationCategory ann : values()) {
+ if (ann.name.equals(dispName)) {
+ return ann;
+ }
+ }
+
+ return null;
+ }
+}
\ No newline at end of file
Modified:
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/ui/AttributeImportPanel.java
===================================================================
---
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/ui/AttributeImportPanel.java
2011-06-16 01:29:11 UTC (rev 25775)
+++
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/ui/AttributeImportPanel.java
2011-06-16 04:15:27 UTC (rev 25776)
@@ -119,7 +119,7 @@
protected String attributePanelTitle;
protected final CyTableManager tblManager;
- private final CyNetworkManager netManager;
+ protected final CyNetworkManager netManager;
protected AttributeImportPanel(final CyTableManager tblManager, final
CyNetworkManager netManager,
Modified:
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/ui/NCBIGeneDialog.java
===================================================================
---
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/ui/NCBIGeneDialog.java
2011-06-16 01:29:11 UTC (rev 25775)
+++
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/ui/NCBIGeneDialog.java
2011-06-16 04:15:27 UTC (rev 25776)
@@ -8,36 +8,34 @@
import org.cytoscape.model.CyNetworkManager;
import org.cytoscape.model.CyTableManager;
+import org.cytoscape.webservice.ncbi.NCBITableImportClient;
+import org.cytoscape.work.TaskManager;
public class NCBIGeneDialog extends JDialog implements PropertyChangeListener {
-
+
private static final long serialVersionUID = -2609215983943863094L;
private final CyTableManager tblManager;
private final CyNetworkManager netManager;
-
- public NCBIGeneDialog(final CyTableManager tblManager, final
CyNetworkManager netManager) {
+
+ public NCBIGeneDialog(final NCBITableImportClient client, final
TaskManager taskManager, final CyTableManager tblManager, final
CyNetworkManager netManager) {
this.tblManager = tblManager;
this.netManager = netManager;
-
+
setTitle("NCBI Entrez Gene");
-
- try {
- final JPanel panel = new NCBIGenePanel(tblManager,
netManager, "NCBI table import");
- panel.addPropertyChangeListener(this);
- add(panel);
- pack();
- setLocationRelativeTo(null);
- } catch (Exception e) {
- e.printStackTrace();
- }
+
+ final JPanel panel = new NCBIGenePanel(client, taskManager,
tblManager, netManager, "NCBI table import");
+ panel.addPropertyChangeListener(this);
+ add(panel);
+ pack();
+ setLocationRelativeTo(null);
+
}
public void propertyChange(PropertyChangeEvent evt) {
- if(evt.getPropertyName().equals("CLOSE")) {
+ if (evt.getPropertyName().equals("CLOSE")) {
dispose();
}
-
}
}
Modified:
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/ui/NCBIGenePanel.java
===================================================================
---
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/ui/NCBIGenePanel.java
2011-06-16 01:29:11 UTC (rev 25775)
+++
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/ui/NCBIGenePanel.java
2011-06-16 04:15:27 UTC (rev 25776)
@@ -31,40 +31,54 @@
You should have received a copy of the GNU Lesser General Public License
along with this library; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
-*/
+ */
package org.cytoscape.webservice.ncbi.ui;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
-import java.io.IOException;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
import javax.swing.DefaultListModel;
import javax.swing.Icon;
import javax.swing.ImageIcon;
-import javax.swing.JComboBox;
+import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.CyNetworkManager;
+import org.cytoscape.model.CyNode;
import org.cytoscape.model.CyTableManager;
+import org.cytoscape.webservice.ncbi.NCBIQuery;
+import org.cytoscape.webservice.ncbi.NCBITableImportClient;
+import org.cytoscape.work.TaskManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
- * Simple attribute import GUI for Entrez Gene database
- * This UI depends on
+ * Simple attribute import GUI for Entrez Gene database This UI depends on
*/
public class NCBIGenePanel extends AttributeImportPanel {
-
+
private static final long serialVersionUID = -7433578094886775930L;
-
+
+ private static final Logger logger =
LoggerFactory.getLogger(NCBIGenePanel.class);
+
private static final Icon LOGO = new
ImageIcon(NCBIGenePanel.class.getResource("/images/entrez_page_title.gif"));
private DefaultListModel model;
- private JComboBox attrList;
+ private final NCBITableImportClient client;
+ private final TaskManager taskManager;
+ public NCBIGenePanel(final NCBITableImportClient client, final
TaskManager taskManager,
+ final CyTableManager tblManager, final CyNetworkManager
netManager, String attrPanelName) {
+ super(tblManager, netManager, LOGO, "NCBI Client",
attrPanelName);
+ this.client = client;
+ this.taskManager = taskManager;
- public NCBIGenePanel(final CyTableManager tblManager, final
CyNetworkManager netManager, String attrPanelName) throws IOException {
- super(tblManager, netManager, LOGO, "NCBI Client",
attrPanelName);
initDataSources();
- this.setPreferredSize(new Dimension(550, 480));
+ titleLabel.setText("");
+ this.setPreferredSize(new Dimension(650, 480));
}
private void initDataSources() {
@@ -76,35 +90,68 @@
private void setDataType() {
this.attributeTypeComboBox.addItem("Entrez Gene ID");
attributeTypeComboBox.setEnabled(false);
-
+
buildList();
}
protected void importButtonActionPerformed(ActionEvent e) {
importAttributes();
}
-
+
protected void resetButtonActionPerformed(ActionEvent e) {
buildList();
}
-
+
private void buildList() {
-// model = new DefaultListModel();
-// this.attributeComboBox.setModel((ComboBoxModel) model);
-// for(AnnotationCategory dispAttrName :
AnnotationCategory.values()) {
-// model.addElement(dispAttrName.getName());
-// }
+ model = new DefaultListModel();
+ attrCheckboxList.setModel(model);
+ for (AnnotationCategory dispAttrName :
AnnotationCategory.values()) {
+ model.addElement(dispAttrName.getName());
+ }
}
-
@Override
- protected void databaseComboBoxActionPerformed(ActionEvent arg0) {
- // TODO Auto-generated method stub
+ protected void importAttributes() {
+ logger.debug("Import start.");
+ client.setQuery(new NCBIQuery(getCategory(), createIDSet()));
+ taskManager.execute(client);
}
+
+ private Set<AnnotationCategory> getCategory() {
+ final Set<AnnotationCategory> category = new
HashSet<AnnotationCategory>();
+ final Object[] selectedAttr =
attrCheckboxList.getSelectedValues();
+ for (Object name : selectedAttr) {
+ logger.debug("Category Selected: " + name);
+ AnnotationCategory ann =
AnnotationCategory.getValue(name.toString());
- @Override
- protected void importAttributes() {
+ if (ann != null)
+ category.add(ann);
+ }
+ return category;
+ }
+
+ private Set<String> createIDSet() {
+ final Set<String> idList = new HashSet<String>();
+ final String attrName =
this.attributeComboBox.getSelectedItem().toString();
+ logger.debug("Attr Name = " + attrName);
+
+ final Set<CyNetwork> networks = this.netManager.getNetworkSet();
+ for(final CyNetwork net: networks) {
+ final List<CyNode> nodes = net.getNodeList();
+ for(final CyNode node: nodes) {
+ final String val =
node.getCyRow().get(attrName, String.class);
+ if(val != null) {
+ logger.debug("node ID found = " + val);
+ idList.add(val);
+ }
+ }
+ }
+ return idList;
}
+ @Override
+ protected void databaseComboBoxActionPerformed(ActionEvent evt) {
+ // TODO Auto-generated method stub
+ }
}
Modified:
core3/webservice-ncbi-client-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
===================================================================
---
core3/webservice-ncbi-client-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
2011-06-16 01:29:11 UTC (rev 25775)
+++
core3/webservice-ncbi-client-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
2011-06-16 04:15:27 UTC (rev 25776)
@@ -6,22 +6,27 @@
default-lazy-init="false">
- <osgi:service id="ncbiClientService" ref="ncbiClient"
- auto-export="interfaces" />
+ <!-- Import Required Services -->
+
<osgi:reference id="cyApplicationManagerRef"
interface="org.cytoscape.session.CyApplicationManager" />
-
<osgi:reference id="cyNetworkFactoryServiceRef"
interface="org.cytoscape.model.CyNetworkFactory" />
<osgi:reference id="cyNetworkManagerServiceRef"
interface="org.cytoscape.model.CyNetworkManager" />
+ <osgi:reference id="taskManagerServiceRef"
+ interface="org.cytoscape.work.swing.GUITaskManager" />
<osgi:reference id="cyTableManagerServiceRef"
interface="org.cytoscape.model.CyTableManager" />
+ <osgi:reference id="cyDataTableFactoryServiceRef"
interface="org.cytoscape.model.CyTableFactory" />
- <osgi:service id="ncbiTableImportClientService"
ref="ncbiTableImportClient"
+ <!-- Export Network Import Client -->
+ <osgi:service id="ncbiClientService" ref="ncbiClient"
+ auto-export="interfaces" />
+ <osgi:service id="ncbiTableImportClientService"
ref="ncbiTableImportAction"
interface="org.cytoscape.application.swing.CyAction" />
</beans>
Modified:
core3/webservice-ncbi-client-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
===================================================================
---
core3/webservice-ncbi-client-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
2011-06-16 01:29:11 UTC (rev 25775)
+++
core3/webservice-ncbi-client-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
2011-06-16 04:15:27 UTC (rev 25776)
@@ -19,22 +19,34 @@
<context:annotation-config />
- <!-- Wrapper for the REST client -->
+ <!-- Network import client -->
<bean id="ncbiClient"
class="org.cytoscape.webservice.ncbi.NCBIWebServiceClient">
<constructor-arg index="0"
value="http://www.ncbi.nlm.nih.gov/entrez/eutils/soap/v2.0/eutils.wsdl" />
- <constructor-arg index="1" value="NCBI Client" />
+ <constructor-arg index="1" value="NCBI Network Import Client" />
<constructor-arg index="2"
- value="SOAP version of NCBI Web Service Client." />
+ value="REST version of NCBI Web Service Client." />
<constructor-arg index="3" ref="cyNetworkFactoryServiceRef" />
- <constructor-arg index="4" ref="cyNetworkManagerServiceRef" />
+ <constructor-arg index="4" ref="cyDataTableFactoryServiceRef" />
+ <constructor-arg index="5" ref="cyNetworkManagerServiceRef" />
</bean>
- <bean id="ncbiTableImportClient"
class="org.cytoscape.webservice.ncbi.NCBITableImportAction">
+
+ <bean id="ncbiTableImportClient"
class="org.cytoscape.webservice.ncbi.NCBITableImportClient">
+ <constructor-arg index="0"
+
value="http://www.ncbi.nlm.nih.gov/entrez/eutils/soap/v2.0/eutils.wsdl" />
+ <constructor-arg index="1" value="NCBI Table Import Client" />
+ <constructor-arg index="2"
+ value="REST version of NCBI Web Service Client for
importing tables." />
+ <constructor-arg index="3" ref="cyDataTableFactoryServiceRef" />
+ </bean>
+
+ <!-- Table Import Action -->
+ <bean id="ncbiTableImportAction"
class="org.cytoscape.webservice.ncbi.NCBITableImportAction">
+ <constructor-arg ref="ncbiTableImportClient" />
+ <constructor-arg ref="taskManagerServiceRef" />
<constructor-arg ref="cyTableManagerServiceRef" />
<constructor-arg ref="cyNetworkManagerServiceRef" />
<constructor-arg ref="cyApplicationManagerRef" />
-
-
</bean>
</beans>
Modified:
core3/webservice-ncbi-client-impl/trunk/src/test/java/org/cytoscape/webservice/ncbi/EntrezRestClientTest.java
===================================================================
---
core3/webservice-ncbi-client-impl/trunk/src/test/java/org/cytoscape/webservice/ncbi/EntrezRestClientTest.java
2011-06-16 01:29:11 UTC (rev 25775)
+++
core3/webservice-ncbi-client-impl/trunk/src/test/java/org/cytoscape/webservice/ncbi/EntrezRestClientTest.java
2011-06-16 04:15:27 UTC (rev 25776)
@@ -20,7 +20,7 @@
@Before
public void setUp() throws Exception {
NetworkTestSupport support = new NetworkTestSupport();
- client = new EntrezRestClient(support.getNetworkFactory());
+ client = new EntrezRestClient(support.getNetworkFactory(),
null);
}
@Test
--
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.