Author: clopes
Date: 2011-12-02 16:02:50 -0800 (Fri, 02 Dec 2011)
New Revision: 27684

Modified:
   
core3/impl/trunk/session-impl/src/main/java/org/cytoscape/session/internal/CyActivator.java
   
core3/impl/trunk/session-impl/src/main/java/org/cytoscape/session/internal/CySessionManagerImpl.java
Log:
Added changes to make it possible to save networks without views and 
CyRootNetwork tables.

Modified: 
core3/impl/trunk/session-impl/src/main/java/org/cytoscape/session/internal/CyActivator.java
===================================================================
--- 
core3/impl/trunk/session-impl/src/main/java/org/cytoscape/session/internal/CyActivator.java
 2011-12-02 23:59:40 UTC (rev 27683)
+++ 
core3/impl/trunk/session-impl/src/main/java/org/cytoscape/session/internal/CyActivator.java
 2011-12-03 00:02:50 UTC (rev 27684)
@@ -1,32 +1,22 @@
-
-
-
-
 package org.cytoscape.session.internal;
 
-import org.cytoscape.view.vizmap.VisualMappingManager;
+import java.util.Properties;
+
 import org.cytoscape.event.CyEventHelper;
-import org.cytoscape.model.CyTableManager;
-import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.model.CyNetworkManager;
 import org.cytoscape.model.CyNetworkTableManager;
-
-import org.cytoscape.session.internal.CySessionManagerImpl;
-import org.cytoscape.session.internal.CyNetworkNamingImpl;
-
-import org.cytoscape.session.CySessionManager;
-import org.cytoscape.session.CyNetworkNaming;
-
+import org.cytoscape.model.CyTableManager;
+import org.cytoscape.model.subnetwork.CyRootNetworkManager;
 import org.cytoscape.property.CyProperty;
-
+import org.cytoscape.service.util.AbstractCyActivator;
+import org.cytoscape.session.CyNetworkNaming;
+import org.cytoscape.session.CySessionManager;
+import org.cytoscape.view.model.CyNetworkViewManager;
+import org.cytoscape.view.vizmap.VisualMappingManager;
 import org.osgi.framework.BundleContext;
 
-import org.cytoscape.service.util.AbstractCyActivator;
 
-import java.util.Properties;
 
-
-
 public class CyActivator extends AbstractCyActivator {
        public CyActivator() {
                super();
@@ -40,9 +30,10 @@
                VisualMappingManager visualMappingManagerServiceRef = 
getService(bc,VisualMappingManager.class);
                CyNetworkViewManager cyNetworkViewManagerServiceRef = 
getService(bc,CyNetworkViewManager.class);
                CyNetworkTableManager cyNetworkTableManagerServiceRef = 
getService(bc,CyNetworkTableManager.class);
+               CyRootNetworkManager cyRootNetworkManagerServiceRef = 
getService(bc,CyRootNetworkManager.class);
                
                CyNetworkNamingImpl cyNetworkNaming = new 
CyNetworkNamingImpl(cyNetworkManagerServiceRef);
-               CySessionManagerImpl cySessionManager = new 
CySessionManagerImpl(cyEventHelperServiceRef,cyNetworkManagerServiceRef,cyTableManagerServiceRef,cyNetworkTableManagerServiceRef,visualMappingManagerServiceRef,cyNetworkViewManagerServiceRef);
+               CySessionManagerImpl cySessionManager = new 
CySessionManagerImpl(cyEventHelperServiceRef,cyNetworkManagerServiceRef,cyTableManagerServiceRef,cyNetworkTableManagerServiceRef,visualMappingManagerServiceRef,cyNetworkViewManagerServiceRef,cyRootNetworkManagerServiceRef);
                
                registerService(bc,cyNetworkNaming,CyNetworkNaming.class, new 
Properties());
                registerService(bc,cySessionManager,CySessionManager.class, new 
Properties());

Modified: 
core3/impl/trunk/session-impl/src/main/java/org/cytoscape/session/internal/CySessionManagerImpl.java
===================================================================
--- 
core3/impl/trunk/session-impl/src/main/java/org/cytoscape/session/internal/CySessionManagerImpl.java
        2011-12-02 23:59:40 UTC (rev 27683)
+++ 
core3/impl/trunk/session-impl/src/main/java/org/cytoscape/session/internal/CySessionManagerImpl.java
        2011-12-03 00:02:50 UTC (rev 27684)
@@ -37,15 +37,17 @@
 import java.io.File;
 import java.math.BigInteger;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Properties;
 import java.util.Set;
-import java.util.Map.Entry;
 
 import org.cytoscape.event.CyEventHelper;
+import org.cytoscape.model.CyColumn;
 import org.cytoscape.model.CyEdge;
 import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyNetworkManager;
@@ -56,6 +58,8 @@
 import org.cytoscape.model.CyTableEntry;
 import org.cytoscape.model.CyTableManager;
 import org.cytoscape.model.CyTableMetadata;
+import org.cytoscape.model.subnetwork.CyRootNetwork;
+import org.cytoscape.model.subnetwork.CyRootNetworkManager;
 import org.cytoscape.property.CyProperty;
 import org.cytoscape.property.bookmark.Bookmarks;
 import org.cytoscape.property.session.Cysession;
@@ -91,6 +95,7 @@
        private final CyNetworkTableManager netTblMgr;
        private final VisualMappingManager vmMgr;
        private final CyNetworkViewManager nvMgr;
+       private final CyRootNetworkManager rootNetMgr;
 
        private final Map<CyProperty<?>, Map<String, String>> sessionProperties;
 
@@ -101,13 +106,15 @@
                                                                final 
CyTableManager tblMgr,
                                                                final 
CyNetworkTableManager netTblMgr,
                                                                final 
VisualMappingManager vmMgr,
-                                                               final 
CyNetworkViewManager nvMgr) {
+                                                               final 
CyNetworkViewManager nvMgr,
+                                                               final 
CyRootNetworkManager rootNetMgr) {
                this.cyEventHelper = cyEventHelper;
                this.netMgr = netMgr;
                this.tblMgr = tblMgr;
                this.netTblMgr = netTblMgr;
                this.vmMgr = vmMgr;
                this.nvMgr = nvMgr;
+               this.rootNetMgr = rootNetMgr;
                sessionProperties = new HashMap<CyProperty<?>, Map<String, 
String>>();
        }
 
@@ -119,6 +126,7 @@
                cyEventHelper.fireEvent(savingEvent);
 
                CysessionFactory cysessFactory = new CysessionFactory(netMgr, 
nvMgr, vmMgr);
+               Set<CyNetwork> networks = netMgr.getNetworkSet();
                Set<CyNetworkView> netViews = nvMgr.getNetworkViewSet();
 
                // Visual Styles Map
@@ -143,24 +151,48 @@
                Properties props = getProperties();
                Bookmarks bkmarks = getBookmarks();
 
-               Set<CyTableMetadata> metadata = buildMetadata(tables, netViews);
+               Set<CyTableMetadata> metadata = buildMetadata(tables, networks);
                // Build the session
                CySession sess = new 
CySession.Builder().cytoscapeProperties(props).bookmarks(bkmarks).cysession(cysess)
-                               
.pluginFileListMap(pluginMap).tables(metadata).networkViews(netViews).visualStyles(styles)
-                               .viewVisualStyleMap(stylesMap).build();
+                               
.pluginFileListMap(pluginMap).tables(metadata).networks(networks).networkViews(netViews)
+                               
.visualStyles(styles).viewVisualStyleMap(stylesMap).build();
 
                return sess;
        }
 
-       private Set<CyTableMetadata> buildMetadata(Set<CyTable> tables, 
Set<CyNetworkView> netViews) {
+       @SuppressWarnings("unchecked")
+       private static Class<? extends CyTableEntry>[] TYPES = new Class[] { 
CyNetwork.class, CyNode.class, CyEdge.class };
+       
+       private Set<CyTableMetadata> buildMetadata(Set<CyTable> tables, 
Set<CyNetwork> networks) {
                Set<CyTableMetadata> result = new HashSet<CyTableMetadata>();
                
+               // Clone the networks and tables to add the root-networks 
without changing the original sets:
+               Set<CyNetwork> allNetworks = new HashSet<CyNetwork>(networks);
+               Set<CyTable> allTables = new HashSet<CyTable>(tables);
+               
+               // Add the root-networks, which are not included in the 
original networks set:
+               for (CyNetwork network : networks) {
+                       if (!(network instanceof CyRootNetwork)) {
+                               CyRootNetwork rootNet = 
rootNetMgr.getRootNetwork(network);
+                               
+                               if (!allNetworks.contains(rootNet)) {
+                                       allNetworks.add(rootNet);
+                               
+                                       for (Class<? extends CyTableEntry> type 
: TYPES) {
+                                               Map<String, CyTable> tableMap = 
netTblMgr.getTables(rootNet, type);
+                                               
allTables.addAll(tableMap.values());
+                                       }
+                               }
+                       }
+               }
+               
                // Figure out which tables aren't associated with networks
-               Map<CyTable, Set<CyTableMetadata>> networkTables = 
getNetworkTables(netViews);
+               Map<CyTable, Set<CyTableMetadata>> networkTables = 
getNetworkTables(allNetworks);
                
                // Merge network/global metadata into a single set
-               for (CyTable table : tables) {
+               for (CyTable table : allTables) {
                        Set<CyTableMetadata> metadataSet = 
networkTables.get(table);
+                       
                        if (metadataSet == null || metadataSet.size() == 0) {
                                result.add(new 
CyTableMetadataImpl.CyTableMetadataBuilder().setCyTable(table));
                        } else {
@@ -169,26 +201,26 @@
                                }
                        }
                }
+               
                return result;
        }
 
-       @SuppressWarnings("unchecked")
-       private static Class<? extends CyTableEntry>[] TYPES = new Class[] { 
CyNetwork.class, CyNode.class, CyEdge.class };
-       
-       private Map<CyTable, Set<CyTableMetadata>> 
getNetworkTables(Set<CyNetworkView> views) {
+       private Map<CyTable, Set<CyTableMetadata>> getNetworkTables(final 
Set<CyNetwork> networks) {
                Map<CyTable, Set<CyTableMetadata>> result = new 
HashMap<CyTable, Set<CyTableMetadata>>();
-               for (CyNetworkView view : views) {
-                       CyNetwork network = view.getModel();
+               
+               for (CyNetwork network : networks) {
                        for (Class<? extends CyTableEntry> type : TYPES) {
                                Map<String, CyTable> tableMap = 
netTblMgr.getTables(network, type);
+                               
                                for (Entry<String, CyTable> entry : 
tableMap.entrySet()) {
                                        CyTable table = entry.getValue();
+                                       Set<CyTableMetadata> metadataSet = 
result.get(table);
                                        
-                                       Set<CyTableMetadata> metadataSet = 
result.get(table);
                                        if (metadataSet == null) {
                                                metadataSet = new 
HashSet<CyTableMetadata>();
                                                result.put(table, metadataSet);
                                        }
+                                       
                                        String namespace = entry.getKey();
                                        metadataSet.add(new 
CyTableMetadataImpl.CyTableMetadataBuilder()
                                                                                
.setCyTable(table)
@@ -199,6 +231,7 @@
                                }
                        }
                }
+               
                return result ;
        }
 
@@ -224,11 +257,12 @@
                } else {
                        logger.debug("Restoring the session...");
                        restoreNetworks(sess);
+                       restoreNetworkViews(sess);
                        restoreTables(sess);
                        restoreVisualStyles(sess);
-                       restoreSelection(sess);
+//                     restoreSelection(sess);
                }
-
+               
                currentSession = sess;
                currentFileName = fileName;
 
@@ -239,6 +273,7 @@
                // Register global tables
                for (CyTableMetadata metadata : sess.getTables()) {
                        CyNetwork network = metadata.getCyNetwork();
+                       
                        if (network == null) {
                                tblMgr.addTable(metadata.getCyTable());
                        }
@@ -292,13 +327,24 @@
 
        private void restoreNetworks(CySession sess) {
                logger.debug("Restoring networks...");
-               Set<CyNetworkView> netViews = sess.getNetworkViews();
+               Set<CyNetwork> networks = sess.getNetworks();
 
-               for (CyNetworkView nv : netViews) {
-                       netMgr.addNetwork(nv.getModel());
-                       nvMgr.addNetworkView(nv);
+               for (CyNetwork n : networks) {
+                       netMgr.addNetwork(n);
                }
        }
+       
+       private void restoreNetworkViews(CySession sess) {
+               logger.debug("Restoring network views...");
+               Set<CyNetworkView> netViews = sess.getNetworkViews();
+               
+               if (netViews != null) {
+                       for (CyNetworkView nv : netViews) {
+                               if (nv != null)
+                                       nvMgr.addNetworkView(nv);
+                       }
+               }
+       }
 
        private void restoreVisualStyles(final CySession sess) {
                logger.debug("Restoring visual styles...");
@@ -369,63 +415,63 @@
                }
 
                if (version < 3.0) {
-                       logger.debug("Restoring node/edge selection...");
+//                     logger.debug("Restoring node/edge selection...");
+//
+//                     // First create network_title -> element_name lookup 
maps
+//                     final Map<String, Set<String>> selectedNodesMap = new 
HashMap<String, Set<String>>();
+//                     final Map<String, Set<String>> selectedEdgesMap = new 
HashMap<String, Set<String>>();
+//                     final List<Network> networks = 
cysess.getNetworkTree().getNetwork();
+//
+//                     for (Network net : networks) {
+//                             String netTitle = net.getId();
+//
+//                             if (net.getSelectedNodes() != null) {
+//                                     // Store selected node names for future 
reference
+//                                     Set<String> selectedNodes = new 
HashSet<String>();
+//                                     selectedNodesMap.put(netTitle, 
selectedNodes);
+//
+//                                     for (Node n : 
net.getSelectedNodes().getNode()) {
+//                                             selectedNodes.add(n.getId());
+//                                     }
+//                             }
+//
+//                             if (net.getSelectedEdges() != null) {
+//                                     // Store selected edge names for future 
reference
+//                                     Set<String> selectedEdges = new 
HashSet<String>();
+//                                     selectedEdgesMap.put(netTitle, 
selectedEdges);
+//
+//                                     for (Edge e : 
net.getSelectedEdges().getEdge()) {
+//                                             selectedEdges.add(e.getId());
+//                                     }
+//                             }
+//                     }
 
-                       // First create network_title -> element_name lookup 
maps
-                       final Map<String, Set<String>> selectedNodesMap = new 
HashMap<String, Set<String>>();
-                       final Map<String, Set<String>> selectedEdgesMap = new 
HashMap<String, Set<String>>();
-                       final List<Network> networks = 
cysess.getNetworkTree().getNetwork();
-
-                       for (Network net : networks) {
-                               String netTitle = net.getId();
-
-                               if (net.getSelectedNodes() != null) {
-                                       // Store selected node names for future 
reference
-                                       Set<String> selectedNodes = new 
HashSet<String>();
-                                       selectedNodesMap.put(netTitle, 
selectedNodes);
-
-                                       for (Node n : 
net.getSelectedNodes().getNode()) {
-                                               selectedNodes.add(n.getId());
-                                       }
-                               }
-
-                               if (net.getSelectedEdges() != null) {
-                                       // Store selected edge names for future 
reference
-                                       Set<String> selectedEdges = new 
HashSet<String>();
-                                       selectedEdgesMap.put(netTitle, 
selectedEdges);
-
-                                       for (Edge e : 
net.getSelectedEdges().getEdge()) {
-                                               selectedEdges.add(e.getId());
-                                       }
-                               }
-                       }
-
                        // Now iterate through all CyNodes/Edges and select the 
ones that are found in the lookup maps
-                       Set<CyNetwork> cyNetworks = netMgr.getNetworkSet();
-
-                       if (cyNetworks != null) {
-                               for (CyNetwork cyNet : cyNetworks) {
-                                       String netTitle = 
cyNet.getCyRow().get(CyNetwork.NAME, String.class);
-
-                                       
selectElementsByName(cyNet.getNodeList(), selectedNodesMap.get(netTitle));
-                                       
selectElementsByName(cyNet.getEdgeList(), selectedEdgesMap.get(netTitle));
-                               }
-                       }
+//                     Set<CyNetwork> cyNetworks = netMgr.getNetworkSet();
+//
+//                     if (cyNetworks != null) {
+//                             for (CyNetwork cyNet : cyNetworks) {
+//                                     String netTitle = 
cyNet.getCyRow().get(CyNetwork.NAME, String.class);
+//
+//                                     
selectElementsByName(cyNet.getNodeList(), selectedNodesMap.get(netTitle));
+//                                     
selectElementsByName(cyNet.getEdgeList(), selectedEdgesMap.get(netTitle));
+//                             }
+//                     }
                }
        }
 
-       private <T extends CyTableEntry> void selectElementsByName(List<T> 
entries, Set<String> names) {
-               if (entries != null && names != null) {
-                       for (T entry : entries) {
-                               CyRow row = entry.getCyRow();
+//     private <T extends CyTableEntry> void selectElementsByName(List<T> 
entries, Set<String> names) {
+//             if (entries != null && names != null) {
+//                     for (T entry : entries) {
+//                             CyRow row = entry.getCyRow();
+//
+//                             if (names.contains(row.get(CyNetwork.NAME, 
String.class))) {
+//                                     row.set(CyNetwork.SELECTED, true);
+//                             }
+//                     }
+//             }
+//     }
 
-                               if (names.contains(row.get(CyNetwork.NAME, 
String.class))) {
-                                       row.set(CyNetwork.SELECTED, true);
-                               }
-                       }
-               }
-       }
-
        private void disposeCurrentSession(boolean removeVisualStyles) {
                logger.debug("Disposing current session...");
 

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