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.