Author: kono
Date: 2011-04-11 11:56:27 -0700 (Mon, 11 Apr 2011)
New Revision: 24738

Removed:
   core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/attrs/
Modified:
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/gml/GMLNetworkViewReader.java
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/session/SessionReaderImpl.java
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReader.java
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReaderFactory.java
   
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
   core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
   
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReaderTest.java
Log:
Fixed some performance issues related to rowSet events.

Modified: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/gml/GMLNetworkViewReader.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/gml/GMLNetworkViewReader.java
      2011-04-11 18:12:07 UTC (rev 24737)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/gml/GMLNetworkViewReader.java
      2011-04-11 18:56:27 UTC (rev 24738)
@@ -294,6 +294,8 @@
 
             if (nodeNameSet.add(label)) {
                 CyNode node = network.addNode();
+                
+                //FIXME this fires too many events!!
                 node.getCyRow().set(CyTableEntry.NAME, label);
 
                 nodeIDMap.put(label, node);

Modified: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/session/SessionReaderImpl.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/session/SessionReaderImpl.java
     2011-04-11 18:12:07 UTC (rev 24737)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/session/SessionReaderImpl.java
     2011-04-11 18:56:27 UTC (rev 24738)
@@ -392,6 +392,7 @@
                // set attr values based on ids
                while (it.hasNext()) {
                        final Node nodeObject = (Node) it.next();
+                       // FIXME this fires too many events
                        
nodeMap.get(nodeObject.getId()).getCyRow().set(attrName,true);
                }
        }
@@ -408,6 +409,7 @@
                // set attr values based on ids
                while (it.hasNext()) {
                        final Edge edgeObject = (Edge) it.next();
+                       // FIXME this fires too many events
                        
edgeMap.get(edgeObject.getId()).getCyRow().set(attrName,true);
                }
        }

Modified: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReader.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReader.java
      2011-04-11 18:12:07 UTC (rev 24737)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReader.java
      2011-04-11 18:56:27 UTC (rev 24738)
@@ -27,7 +27,6 @@
  */
 package org.cytoscape.io.internal.read.sif;
 
-
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.HashMap;
@@ -35,144 +34,160 @@
 import java.util.Map;
 import java.util.Set;
 
+import org.cytoscape.event.CyEventHelper;
+import org.cytoscape.io.internal.read.AbstractNetworkViewReader;
 import org.cytoscape.io.internal.util.ReadUtils;
-import org.cytoscape.io.internal.read.AbstractNetworkViewReader;
 import org.cytoscape.model.CyEdge;
 import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNetworkFactory;
 import org.cytoscape.model.CyNode;
-import org.cytoscape.model.CyNetworkFactory;
+import org.cytoscape.model.CyTable;
 import org.cytoscape.model.CyTableEntry;
+import org.cytoscape.model.events.RowsAboutToChangeEvent;
+import org.cytoscape.model.events.RowsFinishedChangingEvent;
+import org.cytoscape.view.layout.CyLayouts;
 import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.view.model.CyNetworkViewFactory;
 import org.cytoscape.work.Task;
 import org.cytoscape.work.TaskFactory;
 import org.cytoscape.work.TaskIterator;
 import org.cytoscape.work.TaskMonitor;
-import org.cytoscape.view.layout.CyLayouts;
 
-
 /**
  * Reader for graphs in the interactions file format. Given the filename,
  * provides the graph and attributes objects constructed from the file.
  */
 public class SIFNetworkViewReader extends AbstractNetworkViewReader {
-       private static final String DEF_DELIMITER = " ";
-       private static final String LINE_SEP = 
System.getProperty("line.separator");
-       private static final String INTERACTION = "interaction";
 
-       private final Set<Interaction> interactions = new 
HashSet<Interaction>();
-       private final ReadUtils readUtil;
-       private final CyLayouts layouts;
-       private boolean cancelled = false;
+    private static final String DEF_DELIMITER = " ";
+    private static final String LINE_SEP = 
System.getProperty("line.separator");
+    private static final String INTERACTION = "interaction";
 
-       public SIFNetworkViewReader(InputStream is, ReadUtils readUtil, 
CyLayouts layouts, CyNetworkViewFactory cyNetworkViewFactory, CyNetworkFactory 
cyNetworkFactory) {
-               super(is,cyNetworkViewFactory, cyNetworkFactory);
-               this.readUtil = readUtil;
-               this.layouts = layouts;
+    private final CyEventHelper eventHelper;
+
+    private final Set<Interaction> interactions = new HashSet<Interaction>();
+    private final ReadUtils readUtil;
+    private final CyLayouts layouts;
+
+    private boolean cancelled = false;
+
+    public SIFNetworkViewReader(InputStream is, ReadUtils readUtil, CyLayouts 
layouts,
+           CyNetworkViewFactory cyNetworkViewFactory, CyNetworkFactory 
cyNetworkFactory,
+           final CyEventHelper eventHelper) {
+       super(is, cyNetworkViewFactory, cyNetworkFactory);
+       this.readUtil = readUtil;
+       this.layouts = layouts;
+       this.eventHelper = eventHelper;
+    }
+
+    @Override
+    public void run(TaskMonitor tm) throws IOException {
+       try {
+           readInput(tm);
+           createNetwork(tm);
+       } finally {
+           if (inputStream != null) {
+               inputStream.close();
+               inputStream = null;
+           }
        }
+    }
 
-       @Override
-       public void run(TaskMonitor tm) throws IOException {
-               try {
-                       readInput(tm);
-                       createNetwork(tm);
-               } finally { 
-                       if (inputStream != null) {
-                               inputStream.close();
-                               inputStream = null;
-                       }
-               }
+    private void readInput(TaskMonitor tm) throws IOException {
+       tm.setProgress(0.00);
+       String delimiter = DEF_DELIMITER;
+
+       final String rawText = readUtil.getInputString(inputStream);
+
+       tm.setProgress(0.10);
+       if (rawText.indexOf("\t") >= 0)
+           delimiter = "\t";
+
+       final String[] lines = rawText.split(LINE_SEP);
+
+       tm.setProgress(0.15);
+       final int size = lines.length;
+       for (int i = 0; i < size; i++) {
+           if (lines[i].length() <= 0)
+               continue;
+           interactions.add(new Interaction(lines[i], delimiter));
        }
+       tm.setProgress(0.20);
+    }
 
-       private void readInput(TaskMonitor tm) throws IOException {
-               tm.setProgress(0.00);
-               String delimiter = DEF_DELIMITER;
+    private void createNetwork(TaskMonitor tm) {
 
-               final String rawText = readUtil.getInputString(inputStream);
+       // Create network model. At this point, there are no nodes/edges.
+       final CyNetwork network = cyNetworkFactory.getInstance();
 
-               tm.setProgress(0.10);
-               if (rawText.indexOf("\t") >= 0)
-                       delimiter = "\t";
+       Map<String, CyNode> nodeMap = new HashMap<String, CyNode>();
 
-               final String[] lines = rawText.split(LINE_SEP);
+       // put all node names in the Set
+       for (final Interaction interaction : interactions) {
+           nodeMap.put(interaction.getSource(), null);
+           for (String target : interaction.getTargets())
+               nodeMap.put(target, null);
+       }
 
-               tm.setProgress(0.15);
-               final int size = lines.length;
-               for (int i = 0; i < size; i++) {
-                       if (lines[i].length() <= 0)
-                               continue;
-                       interactions.add(new Interaction(lines[i], delimiter));
-               }
-               tm.setProgress(0.20);
+       tm.setProgress(0.25);
+
+       final CyTable table = network.getDefaultNodeTable();
+       try {
+           eventHelper.fireSynchronousEvent(new RowsAboutToChangeEvent(this, 
table));
+
+           for (final String nodeName : nodeMap.keySet()) {
+               if (cancelled)
+                   return;
+
+               // tm.setProgress(progress);
+
+               final CyNode node = network.addNode();
+               node.getCyRow().set(CyTableEntry.NAME, nodeName);
+               nodeMap.put(nodeName, node);
+           }
+
+       } finally {
+           eventHelper.fireSynchronousEvent(new 
RowsFinishedChangingEvent(this, table));
        }
 
-       private void createNetwork(TaskMonitor tm) {
-               
-               // Create network model.  At this point, there are no 
nodes/edges.
-               final CyNetwork network = cyNetworkFactory.getInstance();
-               
-               Map<String, CyNode> nodeMap = new HashMap<String, CyNode>();
+       tm.setProgress(0.65);
 
-               // put all node names in the Set
-               for (Interaction interaction : interactions) {
-                       nodeMap.put(interaction.getSource(), null);
-                       for (String target : interaction.getTargets())
-                               nodeMap.put(target, null);
-               }
+       // Now loop over the interactions again, this time creating edges
+       // between
+       // all sources and each of their respective targets.
+       String srcName;
+       String interactionType;
+       CyEdge edge;
 
-               tm.setProgress(0.25);
-                               
-               for (String nodeName : nodeMap.keySet()) {
-                       if (cancelled)
-                               return;
+       for (Interaction interaction : interactions) {
+           if (cancelled)
+               return;
 
-                       //tm.setProgress(progress);
-                       
-                       final CyNode node = network.addNode();
-                       node.getCyRow().set(CyTableEntry.NAME, nodeName);
-                       nodeMap.put(nodeName, node);
-               }
+           srcName = interaction.getSource();
+           interactionType = interaction.getType();
 
-               tm.setProgress(0.65);
-               
-               // Now loop over the interactions again, this time creating 
edges
-               // between
-               // all sources and each of their respective targets.
-               String srcName;
-               String interactionType;
-               CyEdge edge;
-               
-               for (Interaction interaction : interactions) {
-                       if (cancelled)
-                               return;
+           for (String tgtName : interaction.getTargets()) {
+               edge = network.addEdge(nodeMap.get(srcName), 
nodeMap.get(tgtName), true);
+               edge.getCyRow().set(CyTableEntry.NAME, srcName + " (" + 
interactionType + ") " + tgtName);
+               edge.getCyRow().set(INTERACTION, interactionType);
+           }
+       }
 
-                       srcName = interaction.getSource();
-                       interactionType = interaction.getType();
+       tm.setProgress(0.90);
 
-                       for (String tgtName : interaction.getTargets()) {
-                               edge = network.addEdge(nodeMap.get(srcName), 
nodeMap
-                                               .get(tgtName), true);
-                               edge.getCyRow().set(CyTableEntry.NAME,
-                                               srcName + " (" + 
interactionType + ") " + tgtName);
-                               edge.getCyRow().set(INTERACTION, 
interactionType);
-                       }
-               }
+       final CyNetworkView view = cyNetworkViewFactory.getNetworkView(network);
 
-               tm.setProgress(0.90);
-               
-               final CyNetworkView view = 
cyNetworkViewFactory.getNetworkView(network);
-               
-               TaskFactory tf = layouts.getDefaultLayout(view);
-               TaskIterator ti = tf.getTaskIterator();
-               Task task = ti.next();
-               insertTasksAfterCurrentTask(task);
-               
-               // SIF always creates only one network.
-               this.cyNetworkViews = new CyNetworkView[] { view };
-               
-               nodeMap.clear();
-               nodeMap = null;
+       TaskFactory tf = layouts.getDefaultLayout(view);
+       TaskIterator ti = tf.getTaskIterator();
+       Task task = ti.next();
+       insertTasksAfterCurrentTask(task);
 
-               tm.setProgress(1.0);
-       }
+       // SIF always creates only one network.
+       this.cyNetworkViews = new CyNetworkView[] { view };
+
+       nodeMap.clear();
+       nodeMap = null;
+
+       tm.setProgress(1.0);
+    }
 }

Modified: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReaderFactory.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReaderFactory.java
       2011-04-11 18:12:07 UTC (rev 24737)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReaderFactory.java
       2011-04-11 18:56:27 UTC (rev 24738)
@@ -27,6 +27,7 @@
  */
 package org.cytoscape.io.internal.read.sif;
 
+import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.io.CyFileFilter;
 import org.cytoscape.io.internal.read.AbstractNetworkViewReaderFactory;
 import org.cytoscape.io.internal.util.ReadUtils;
@@ -35,22 +36,23 @@
 import org.cytoscape.view.model.CyNetworkViewFactory;
 import org.cytoscape.work.TaskIterator;
 
-public class SIFNetworkViewReaderFactory extends
-               AbstractNetworkViewReaderFactory {
+public class SIFNetworkViewReaderFactory extends 
AbstractNetworkViewReaderFactory {
 
-       private final ReadUtils readUtil;
-       private final CyLayouts layouts;
+    private final ReadUtils readUtil;
+    private final CyLayouts layouts;
+    private final CyEventHelper eventHelper;
 
-       public SIFNetworkViewReaderFactory(ReadUtils readUtil, CyFileFilter 
filter,
-                       CyLayouts layouts, CyNetworkViewFactory 
cyNetworkViewFactory,
-                       CyNetworkFactory cyNetworkFactory) {
-               super(filter, cyNetworkViewFactory, cyNetworkFactory);
-               this.readUtil = readUtil;
-               this.layouts = layouts;
-       }
+    public SIFNetworkViewReaderFactory(ReadUtils readUtil, CyFileFilter 
filter, CyLayouts layouts,
+           CyNetworkViewFactory cyNetworkViewFactory, CyNetworkFactory 
cyNetworkFactory,
+           final CyEventHelper eventHelper) {
+       super(filter, cyNetworkViewFactory, cyNetworkFactory);
+       this.readUtil = readUtil;
+       this.layouts = layouts;
+       this.eventHelper = eventHelper;
+    }
 
-       public TaskIterator getTaskIterator() {
-               return new TaskIterator(new SIFNetworkViewReader(inputStream, 
readUtil,
-                               layouts, cyNetworkViewFactory, 
cyNetworkFactory));
-       }
+    public TaskIterator getTaskIterator() {
+       return new TaskIterator(new SIFNetworkViewReader(inputStream, readUtil, 
layouts, cyNetworkViewFactory,
+               cyNetworkFactory, eventHelper));
+    }
 }

Modified: 
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
===================================================================
--- 
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml  
    2011-04-11 18:12:07 UTC (rev 24737)
+++ 
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml  
    2011-04-11 18:56:27 UTC (rev 24738)
@@ -7,6 +7,8 @@
 
 
        <!-- Import services -->
+       <osgi:reference id="cyEventHelperRef" 
interface="org.cytoscape.event.CyEventHelper" />
+       
        <osgi:reference id="cyLayoutsServiceRef" 
interface="org.cytoscape.view.layout.CyLayouts" />
 
        <osgi:reference id="cyNetworkFactoryServiceRef"

Modified: 
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
===================================================================
--- core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml   
2011-04-11 18:12:07 UTC (rev 24737)
+++ core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml   
2011-04-11 18:56:27 UTC (rev 24738)
@@ -259,6 +259,7 @@
                <constructor-arg ref="cyLayoutsServiceRef" />
                <constructor-arg ref="cyNetworkViewFactoryServiceRef" />
                <constructor-arg ref="cyNetworkFactoryServiceRef" />
+               <constructor-arg ref="cyEventHelperRef" />
        </bean>
 
        <bean id="gmlNetworkViewReaderFactory" 
class="org.cytoscape.io.internal.read.gml.GMLNetworkViewReaderFactory">

Modified: 
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReaderTest.java
===================================================================
--- 
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReaderTest.java
  2011-04-11 18:12:07 UTC (rev 24737)
+++ 
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReaderTest.java
  2011-04-11 18:56:27 UTC (rev 24738)
@@ -17,6 +17,7 @@
 import org.cytoscape.test.support.NetworkTestSupport;
 import org.cytoscape.test.support.NetworkViewTestSupport;
 
+import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.io.internal.util.ReadUtils;
 import org.cytoscape.io.internal.util.StreamUtilImpl;
 
@@ -94,8 +95,9 @@
 
        private CyNetworkView[] getViews(String file) throws Exception {
                File f = new File("./src/test/resources/testData/sif/" + file);
+               final CyEventHelper eventHelper = mock(CyEventHelper.class);
                SIFNetworkViewReader snvp = new SIFNetworkViewReader(new 
FileInputStream(f), 
-                                                             readUtil, 
layouts, viewFactory, netFactory);
+                                                             readUtil, 
layouts, viewFactory, netFactory, eventHelper);
                new TaskIterator(snvp);
                snvp.run(taskMonitor);
 

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