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.

Reply via email to