use of org.cytoscape.io.internal.util.session.model.SessionState in project cytoscape-impl by cytoscape.
the class Cy2SessionReaderImpl method extractSessionState.
private void extractSessionState(InputStream is, String entryName) throws Exception {
CyPropertyReader reader = propertyReaderMgr.getReader(is, entryName);
reader.run(taskMonitor);
cysession = (Cysession) reader.getProperty();
if (cysession != null) {
// Network attributes and visual styles
if (cysession.getNetworkTree() != null) {
for (final Network net : cysession.getNetworkTree().getNetwork()) {
// so let's ignore a network with that name.
if (net.getId().equals(NETWORK_ROOT))
continue;
final String netName = net.getId();
List<Node> selNodes = null;
List<Edge> selEdges = null;
if (net.getSelectedNodes() != null)
selNodes = net.getSelectedNodes().getNode();
if (net.getSelectedEdges() != null)
selEdges = net.getSelectedEdges().getEdge();
nodeSelectionLookup.put(netName, selNodes);
edgeSelectionLookup.put(netName, selEdges);
}
}
// Convert the old cysession to core the required 3.0 core plugin files:
// Actually we just need to extract the "networkFrames" and "cytopanels" data from the Cysession object
// and write an XML file that will be parsed by swing-application.
StringBuilder sb = new StringBuilder("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n");
sb.append("<sessionState documentVersion=\"1.0\">\n");
sb.append(" <networkFrames>\n");
if (cysession.getSessionState() != null && cysession.getSessionState().getDesktop() != null) {
NetworkFrames netFrames = cysession.getSessionState().getDesktop().getNetworkFrames();
if (netFrames != null) {
for (NetworkFrame nf : netFrames.getNetworkFrame()) {
String id = nf.getFrameID();
String x = nf.getX() != null ? nf.getX().toString() : "0";
String y = nf.getY() != null ? nf.getY().toString() : "0";
sb.append(" <networkFrame networkViewID=\"" + id + "\" x=\"" + x + "\" y=\"" + y + "\"/>\n");
}
}
}
sb.append(" </networkFrames>\n");
sb.append(" <cytopanels>\n");
SessionState sessionState = cysession.getSessionState();
if (sessionState != null) {
Cytopanels cytopanels = sessionState.getCytopanels();
if (cytopanels != null) {
List<Cytopanel> cytopanelsList = cytopanels.getCytopanel();
for (Cytopanel cytopanel : cytopanelsList) {
String id = cytopanel.getId();
String state = cytopanel.getPanelState();
String selection = cytopanel.getSelectedPanel();
sb.append(" <cytopanel id=\"" + id + "\">\n");
sb.append(" <panelState>" + state + "</panelState>\n");
sb.append(" <selectedPanel>" + selection + "</selectedPanel>\n");
sb.append(" </cytopanel>\n");
}
}
}
sb.append(" </cytopanels>\n");
sb.append("</sessionState>");
// Extract it as an app file now:
ByteArrayInputStream bais = new ByteArrayInputStream(sb.toString().getBytes("UTF-8"));
extractPluginEntry(bais, cysession.getId() + "/" + PLUGINS_FOLDER + "org.cytoscape.swing-application/session_state.xml");
}
}
Aggregations