Author: kono
Date: 2011-06-28 17:27:02 -0700 (Tue, 28 Jun 2011)
New Revision: 25971

Modified:
   
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/EnhancedSearchIndex.java
   
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/EnhancedSearchPlugin.java
   
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/EnhancedSearchQuery.java
   
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/IndexAndSearchTask.java
   
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/SearchTaskFactory.java
   
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/ui/EnhancedSearchPanel.java
   
core3/search-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
   core3/search-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
Log:
EnhancedSearch now works without view.

Modified: 
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/EnhancedSearchIndex.java
===================================================================
--- 
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/EnhancedSearchIndex.java
        2011-06-28 22:30:36 UTC (rev 25970)
+++ 
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/EnhancedSearchIndex.java
        2011-06-29 00:27:02 UTC (rev 25971)
@@ -29,34 +29,34 @@
 
 
 import java.io.IOException;
+import java.util.List;
+import java.util.Set;
 
-import org.cytoscape.model.CyNetwork;
-import org.cytoscape.model.CyNode;
-import org.cytoscape.model.CyEdge;
-import org.cytoscape.model.CyTable; 
-import org.cytoscape.model.CyTableUtil; 
-
-import org.cytoscape.search.internal.util.EnhancedSearchUtils;
+import org.apache.lucene.analysis.standard.StandardAnalyzer;
+import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
+import org.apache.lucene.document.NumericField;
 import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.document.Document;
 import org.apache.lucene.store.RAMDirectory;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
-import java.util.Set;
-
+import org.apache.lucene.util.Version;
+import org.cytoscape.model.CyEdge;
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.model.CyRow;
+import org.cytoscape.model.CyTable;
 import org.cytoscape.model.CyTableEntry;
-import org.cytoscape.model.CyRow;
-import java.util.List;
-import java.util.Map;
-import org.apache.lucene.util.Version;
-import org.apache.lucene.document.NumericField;
+import org.cytoscape.model.CyTableUtil;
+import org.cytoscape.search.internal.util.EnhancedSearchUtils;
 
 
 public class EnhancedSearchIndex {
        RAMDirectory idx;
 
        // Index the given network
-       public EnhancedSearchIndex(CyNetwork network) {
+       public EnhancedSearchIndex(final CyNetwork network) {
+               if(network == null)
+                       throw new NullPointerException("Network is null.");
+               
                // Construct a RAMDirectory to hold the in-memory 
representation of the index.          
                idx = new RAMDirectory();
                BuildIndex(idx, network);

Modified: 
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/EnhancedSearchPlugin.java
===================================================================
--- 
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/EnhancedSearchPlugin.java
       2011-06-28 22:30:36 UTC (rev 25970)
+++ 
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/EnhancedSearchPlugin.java
       2011-06-29 00:27:02 UTC (rev 25971)
@@ -43,6 +43,7 @@
 import org.cytoscape.session.events.SetCurrentNetworkViewListener;
 import org.cytoscape.application.swing.CySwingApplication;
 import org.cytoscape.search.internal.ui.EnhancedSearchPanel;
+import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.work.swing.GUITaskManager;
 
 
@@ -55,15 +56,15 @@
        static CyEventHelper eventHelper;
        
        public EnhancedSearchPlugin(final CySwingApplication desktopApp,
-                                   final CyApplicationManager netmgr, 
+                                   final CyApplicationManager appManager, 
                                    final CyTableManager tableMgr,
                                    final GUITaskManager taskMgr,
-                                   final CyEventHelper eventHelper)
+                                   final CyEventHelper eventHelper, final 
CyNetworkViewManager viewManager)
        {
                
                searchMgr = new EnhancedSearchManager();
                // Add a text-field and a search button on tool-bar
-               searchPnl = new EnhancedSearchPanel(netmgr, tableMgr, 
searchMgr, taskMgr);
+               searchPnl = new EnhancedSearchPanel(appManager, viewManager, 
tableMgr, searchMgr, taskMgr);
                this.setToolBarGravity(150.0f);
                EnhancedSearchPlugin.eventHelper = eventHelper;
        }

Modified: 
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/EnhancedSearchQuery.java
===================================================================
--- 
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/EnhancedSearchQuery.java
        2011-06-28 22:30:36 UTC (rev 25970)
+++ 
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/EnhancedSearchQuery.java
        2011-06-29 00:27:02 UTC (rev 25971)
@@ -49,9 +49,14 @@
 import org.cytoscape.search.internal.util.AttributeFields;
 import org.cytoscape.search.internal.util.CustomMultiFieldQueryParser;
 import org.cytoscape.search.internal.util.EnhancedSearchUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 public class EnhancedSearchQuery {
+       
+       private static final Logger logger = 
LoggerFactory.getLogger(EnhancedSearchQuery.class);
+       
        private final RAMDirectory idx;
        private final CyNetwork network;
        private final CyTableManager tableMgr;
@@ -66,6 +71,8 @@
 
        public void executeQuery(String queryString) {
                try {
+                       logger.debug("Query start for: " + queryString);
+                       
                        // Define attribute fields in which the search is to be 
carried on
                        AttributeFields attFields = new 
AttributeFields(network, tableMgr);
 

Modified: 
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/IndexAndSearchTask.java
===================================================================
--- 
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/IndexAndSearchTask.java
 2011-06-28 22:30:36 UTC (rev 25970)
+++ 
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/IndexAndSearchTask.java
 2011-06-29 00:27:02 UTC (rev 25971)
@@ -29,25 +29,32 @@
 
 
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
-import java.util.Iterator;
+import java.util.Set;
 
 import org.apache.lucene.store.RAMDirectory;
-
+import org.cytoscape.model.CyEdge;
 import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.model.CyTableManager;
+import org.cytoscape.task.AbstractNetworkTask;
 import org.cytoscape.view.model.CyNetworkView;
-import org.cytoscape.model.CyNode;
-import org.cytoscape.model.CyEdge;
-import org.cytoscape.task.AbstractNetworkViewTask;
+import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.work.TaskMonitor;
-import org.cytoscape.model.CyTableManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
-public class IndexAndSearchTask extends AbstractNetworkViewTask {
+public class IndexAndSearchTask extends AbstractNetworkTask {
+       
+       private static final Logger logger = 
LoggerFactory.getLogger(IndexAndSearchTask.class);
+       
        private boolean interrupted = false;
-       private EnhancedSearch enhancedSearch;
-       private CyNetwork network;
-       private CyTableManager tableMgr;
+       
+       private final EnhancedSearch enhancedSearch;
+       private final CyTableManager tableMgr;
+       private final CyNetworkViewManager viewManager;
 
        public String query;
 
@@ -55,33 +62,36 @@
         * The constructor. Any necessary data that is <i>not</i> provided by
         * the user should be provided as arguments to the constructor.
         */
-       public IndexAndSearchTask(final CyNetworkView networkView,
-                                 final EnhancedSearch enhancedSearch,
-                                 final CyTableManager tableMgr, String query)
-       {
+       public IndexAndSearchTask(final CyNetwork network, final EnhancedSearch 
enhancedSearch,
+                       final CyTableManager tableMgr, final String query, 
final CyNetworkViewManager viewManager) {
+               
                // Will set a CyNetwork field called "net".
-               super(networkView);
-               network = networkView.getModel();
+               super(network);
                this.enhancedSearch = enhancedSearch;
                this.tableMgr = tableMgr;
                this.query = query;
+               this.viewManager = viewManager;
        }
 
        @Override
        public void run(final TaskMonitor taskMonitor) {
+               
+               logger.debug("Index and search start.");
+               
                // Give the task a title.
                taskMonitor.setTitle("Searching the network");
 
                // Index the given network or use existing index
                RAMDirectory idx = null;
 
-               String status = enhancedSearch.getNetworkIndexStatus(network);
-
+               final String status = 
enhancedSearch.getNetworkIndexStatus(network);
+               logger.debug("Index status = " + status);
+               
                if (status != null && 
status.equalsIgnoreCase(EnhancedSearch.INDEX_SET))
                        idx = enhancedSearch.getNetworkIndex(network);
                else {
                        taskMonitor.setStatusMessage("Indexing network");
-                       EnhancedSearchIndex indexHandler = new 
EnhancedSearchIndex(network);
+                       final EnhancedSearchIndex indexHandler = new 
EnhancedSearchIndex(network);
                        idx = indexHandler.getIndex();
                        enhancedSearch.setNetworkIndex(network, idx);
                }
@@ -96,12 +106,23 @@
 
                if (interrupted)
                        return;
+               
+               showResults(queryHandler, taskMonitor);
+               
+               updateView();
        }
 
+       /**
+        * If view(s) exists for the current network, update them.
+        */
+       private void updateView() {
+               final CyNetworkView targetView = 
viewManager.getNetworkView(network.getSUID());
+               if(targetView != null)
+                       targetView.updateView();
+       }
+
        // Display results
-       private void showResults(final EnhancedSearchQuery queryHandler,
-                                final TaskMonitor taskMonitor)
-       {
+       private void showResults(final EnhancedSearchQuery queryHandler, final 
TaskMonitor taskMonitor) {
                if (network == null || network.getNodeList().size() == 0)
                        return;
 
@@ -151,7 +172,7 @@
                }
 
                // Refresh view to show selected nodes and edges
-               view.updateView();
+               //view.updateView();
        }
 
        @Override

Modified: 
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/SearchTaskFactory.java
===================================================================
--- 
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/SearchTaskFactory.java
  2011-06-28 22:30:36 UTC (rev 25970)
+++ 
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/SearchTaskFactory.java
  2011-06-29 00:27:02 UTC (rev 25971)
@@ -1,24 +1,29 @@
 package org.cytoscape.search.internal;
 
+import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyTableManager;
-import org.cytoscape.task.AbstractNetworkViewTaskFactory;
+import org.cytoscape.task.AbstractNetworkTaskFactory;
+import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.work.TaskFactory;
 import org.cytoscape.work.TaskIterator;
-import org.cytoscape.view.model.CyNetworkView;
 
-public class SearchTaskFactory extends AbstractNetworkViewTaskFactory 
implements TaskFactory {
+
+public class SearchTaskFactory extends AbstractNetworkTaskFactory implements 
TaskFactory {
        private  CyTableManager tableMgr;
        private EnhancedSearch searchMgr;
        private String query;
        
-       public SearchTaskFactory(CyNetworkView view, EnhancedSearch searchMgr, 
CyTableManager tableMgr, String query) {
-               this.view = view;
+       private final CyNetworkViewManager viewManager;
+       
+       public SearchTaskFactory(final CyNetwork network, EnhancedSearch 
searchMgr, CyTableManager tableMgr, String query, final CyNetworkViewManager 
viewManager) {
+               this.network = network;
                this.searchMgr = searchMgr;
                this.tableMgr = tableMgr;
                this.query = query;
+               this.viewManager = viewManager;
        }
 
        public TaskIterator getTaskIterator() {
-               return new TaskIterator(new IndexAndSearchTask(view, searchMgr, 
tableMgr, query));
+               return new TaskIterator(new IndexAndSearchTask(network, 
searchMgr, tableMgr, query, viewManager));
        }
 }

Modified: 
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/ui/EnhancedSearchPanel.java
===================================================================
--- 
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/ui/EnhancedSearchPanel.java
     2011-06-28 22:30:36 UTC (rev 25970)
+++ 
core3/search-impl/trunk/src/main/java/org/cytoscape/search/internal/ui/EnhancedSearchPanel.java
     2011-06-29 00:27:02 UTC (rev 25971)
@@ -1,19 +1,33 @@
 package org.cytoscape.search.internal.ui;
 
+import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyTableManager;
+import org.cytoscape.search.internal.EnhancedSearch;
+import org.cytoscape.search.internal.SearchTaskFactory;
 import org.cytoscape.session.CyApplicationManager;
-import org.cytoscape.search.internal.*;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.CyNetworkViewManager;
+import org.cytoscape.work.AbstractTask;
+import org.cytoscape.work.TaskMonitor;
 import org.cytoscape.work.swing.GUITaskManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class EnhancedSearchPanel extends javax.swing.JPanel {
 
-       private CyApplicationManager netmgr;
+       private static final long serialVersionUID = 3748296514173533886L;
+       
+       private static final Logger logger = 
LoggerFactory.getLogger(EnhancedSearchPanel.class);
+       
+       private CyApplicationManager appManager;
        private CyTableManager tableMgr;
        private EnhancedSearch searchMgr;
        private GUITaskManager taskMgr;
+       
+       private final CyNetworkViewManager viewManager;
 
        /** Creates new form NewJPanel */
-       public EnhancedSearchPanel(CyApplicationManager netmgr, CyTableManager 
tableMgr, EnhancedSearch searchMgr,
+       public EnhancedSearchPanel(CyApplicationManager appManager, final 
CyNetworkViewManager viewManager, CyTableManager tableMgr, EnhancedSearch 
searchMgr,
                        GUITaskManager taskMgr) {
                initComponents();
 
@@ -21,12 +35,11 @@
                this.btnSearch.setVisible(false);
                this.lbSearch.setVisible(true);
 
-               this.netmgr = netmgr;
+               this.appManager = appManager;
                this.tableMgr = tableMgr;
                this.searchMgr = searchMgr;
                this.taskMgr = taskMgr;
-               // The following is for debug only
-               // this.tfSearchText.setText("TestNodeAttribute1:[0 to 5]");
+               this.viewManager = viewManager;
        }
 
        private void btnSearchActionPerformed(java.awt.event.ActionEvent evt) {
@@ -39,13 +52,18 @@
 
        // Do searching based on the query string from user on text-field
        private void doSearching() {
-               if (this.netmgr.getCurrentNetworkView() != null) {
-                       String queryStr = this.tfSearchText.getText().trim();
+               final String queryStr = this.tfSearchText.getText().trim();
+               logger.debug("Search Start.  Query text = " + queryStr);
 
-                       SearchTaskFactory factory = new 
SearchTaskFactory(this.netmgr.getCurrentNetworkView(), searchMgr, tableMgr,
-                                       queryStr);
+               final CyNetwork currentNetwork = appManager.getCurrentNetwork();
+               if (currentNetwork != null) {
+                       logger.debug("Target Network ID = " + 
currentNetwork.getSUID());
+
+                       final SearchTaskFactory factory = new 
SearchTaskFactory(currentNetwork, searchMgr,
+                                       tableMgr, queryStr, viewManager);
                        this.taskMgr.execute(factory);
-               }
+               } else
+                       logger.error("Could not find network for search");
        }
 
        /**
@@ -93,4 +111,25 @@
        private javax.swing.JTextField tfSearchText;
        // End of variables declaration
 
+       
+       /**
+        * Simply updates view if necessary.
+        */
+       private final class UpdateViewTask extends AbstractTask {
+
+               private final CyApplicationManager appManager;
+               
+               UpdateViewTask(final CyApplicationManager appManager) {
+                       this.appManager = appManager;
+               }
+               
+               @Override
+               public void run(TaskMonitor tm) throws Exception {
+                       CyNetworkView view = appManager.getCurrentNetworkView();
+                       
+                       if(view != null)
+                               view.updateView();
+               }
+               
+       }
 }

Modified: 
core3/search-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
===================================================================
--- 
core3/search-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
  2011-06-28 22:30:36 UTC (rev 25970)
+++ 
core3/search-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
  2011-06-29 00:27:02 UTC (rev 25971)
@@ -22,6 +22,9 @@
        <osgi:reference id="guiTaskManagerServiceRef" 
interface="org.cytoscape.work.swing.GUITaskManager" />
 
     <osgi:reference id="cyEventHelperServiceRef" 
interface="org.cytoscape.event.CyEventHelper" />
+    
+    <osgi:reference id="cyNetworkViewManagerServiceRef"
+               interface="org.cytoscape.view.model.CyNetworkViewManager" />
         
        <!--
        This code registers the bean we just created "sampleTaskFactory" as an 

Modified: 
core3/search-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
===================================================================
--- 
core3/search-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml   
    2011-06-28 22:30:36 UTC (rev 25970)
+++ 
core3/search-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml   
    2011-06-29 00:27:02 UTC (rev 25971)
@@ -21,5 +21,6 @@
                <constructor-arg ref="cyTableManagerServiceRef" />
                <constructor-arg ref="guiTaskManagerServiceRef" />
                <constructor-arg ref="cyEventHelperServiceRef" />
+               <constructor-arg ref="cyNetworkViewManagerServiceRef" />
        </bean>
 </beans>

-- 
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