Author: kono
Date: 2011-12-13 16:58:03 -0800 (Tue, 13 Dec 2011)
New Revision: 27784

Modified:
   
core3/impl/trunk/psi-mi-impl/src/main/java/org/cytoscape/psi_mi/internal/plugin/PsiMiNetworkViewReader.java
Log:
fixes #536 fixed concurrency problem for layout and createView.

Modified: 
core3/impl/trunk/psi-mi-impl/src/main/java/org/cytoscape/psi_mi/internal/plugin/PsiMiNetworkViewReader.java
===================================================================
--- 
core3/impl/trunk/psi-mi-impl/src/main/java/org/cytoscape/psi_mi/internal/plugin/PsiMiNetworkViewReader.java
 2011-12-13 22:53:57 UTC (rev 27783)
+++ 
core3/impl/trunk/psi-mi-impl/src/main/java/org/cytoscape/psi_mi/internal/plugin/PsiMiNetworkViewReader.java
 2011-12-14 00:58:03 UTC (rev 27784)
@@ -39,6 +39,8 @@
        private CyNetwork network;
 
        private CyLayoutAlgorithmManager layouts;
+       
+       private TaskMonitor parentTaskMonitor;
 
        public PsiMiNetworkViewReader(InputStream inputStream, CyNetworkFactory 
networkFactory, CyNetworkViewFactory networkViewFactory, 
CyLayoutAlgorithmManager layouts) {
                this.inputStream = inputStream;
@@ -49,6 +51,7 @@
 
        @Override
        public void run(TaskMonitor taskMonitor) throws Exception {
+               parentTaskMonitor = taskMonitor;
                long start = System.currentTimeMillis();
                logger.info("==================== PSI-MI XML Data Import start 
==============");
                
@@ -85,7 +88,7 @@
                final MapToCytoscape mapper2 = new MapToCytoscape(network, 
interactions, MapToCytoscape.SPOKE_VIEW);
                mapper2.doMapping();
                taskMonitor.setProgress(1.0d);
-               logger.info("PSI-MI 2.5 XML Data Import finihsed in " + 
(System.currentTimeMillis() - start) + " msec.");
+               logger.info("PSI-MI XML Data Import finihsed in " + 
(System.currentTimeMillis() - start) + " msec.");
        }
 
 
@@ -120,16 +123,20 @@
        }
 
        @Override
-       public CyNetworkView buildCyNetworkView(CyNetwork network) {
-               
-               final CyNetworkView networkView = 
networkViewFactory.createNetworkView(network);
-               
-               CyLayoutAlgorithm taskFactory = layouts.getDefaultLayout();
-               taskFactory.setNetworkView(networkView);
-               TaskIterator taskIterator = taskFactory.createTaskIterator();
-               Task task = taskIterator.next();
-               insertTasksAfterCurrentTask(task);
-               
-               return networkView;
+       public CyNetworkView buildCyNetworkView(final CyNetwork network) {
+               final CyNetworkView view = 
networkViewFactory.createNetworkView(network);
+               final CyLayoutAlgorithm layout = layouts.getDefaultLayout();
+               layout.setNetworkView(view);
+               // Force to run this task here to avoid concurrency problem.
+               TaskIterator itr = layout.createTaskIterator();
+               Task nextTask = itr.next();
+               try {
+                       nextTask.run(parentTaskMonitor);
+               } catch (Exception e) {
+                       throw new RuntimeException("Could not finish layout", 
e);
+               }
+
+               parentTaskMonitor.setProgress(1.0d);
+               return view;            
        }
 }

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