Author: pwang
Date: 2012-07-25 16:03:57 -0700 (Wed, 25 Jul 2012)
New Revision: 29990

Added:
   
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/nnf/
   
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/nnf/NNFNetworkReader.java
   
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/nnf/NNFNetworkReaderFactory.java
   
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/nnf/NNFParser.java
Modified:
   
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/CyActivator.java
Log:
Port the NNF reader from 2.x

Modified: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/CyActivator.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/CyActivator.java
      2012-07-25 22:35:49 UTC (rev 29989)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/CyActivator.java
      2012-07-25 23:03:57 UTC (rev 29990)
@@ -29,6 +29,7 @@
 import org.cytoscape.io.internal.read.session.Cy3SessionReaderFactoryImpl;
 import org.cytoscape.io.internal.read.session.SessionFileFilter;
 import org.cytoscape.io.internal.read.sif.SIFNetworkReaderFactory;
+import org.cytoscape.io.internal.read.nnf.NNFNetworkReaderFactory;
 import org.cytoscape.io.internal.read.vizmap.VizmapPropertiesFileFilter;
 import org.cytoscape.io.internal.read.vizmap.VizmapPropertiesReaderFactory;
 import org.cytoscape.io.internal.read.vizmap.VizmapXMLFileFilter;
@@ -66,6 +67,7 @@
 import org.cytoscape.io.internal.write.properties.PropertiesWriterFactoryImpl;
 import org.cytoscape.io.internal.write.session.SessionWriterFactoryImpl;
 import org.cytoscape.io.internal.write.sif.SifNetworkWriterFactory;
+//import org.cytoscape.io.internal.write.nnf.NnfNetworkWriterFactory;
 import org.cytoscape.io.internal.write.vizmap.VizmapWriterFactoryImpl;
 import org.cytoscape.io.internal.write.xgmml.SessionXGMMLWriterFactory;
 import org.cytoscape.io.internal.write.xgmml.GenericXGMMLWriterFactory;
@@ -151,6 +153,7 @@
                BasicCyFileFilter svgFilter = new BasicCyFileFilter(new 
String[]{"svg"}, new String[]{"image/svg"}, "Scalable Vector Graphics (SVG) 
File",DataCategory.IMAGE, streamUtil);
                BasicCyFileFilter attrsFilter = new BasicCyFileFilter(new 
String[]{"attrs"}, new String[]{"text/plain"}, "Any text 
file",DataCategory.TABLE, streamUtil);
                BasicCyFileFilter sifFilter = new BasicCyFileFilter(new 
String[]{"sif"}, new String[]{"text/sif"}, "SIF files",DataCategory.NETWORK, 
streamUtil);
+               BasicCyFileFilter nnfFilter = new BasicCyFileFilter(new 
String[]{"nnf"}, new String[]{"text/nnf"}, "Nested Network 
files",DataCategory.NETWORK, streamUtil);
                BasicCyFileFilter csvFilter = new BasicCyFileFilter(new 
String[]{"csv"}, new String[]{"text/plain"}, "CSV file",DataCategory.TABLE, 
streamUtil);
                BasicCyFileFilter sessionTableFilter = new 
BasicCyFileFilter(new String[]{"cytable"}, new String[]{"text/plain"}, "Session 
table file",DataCategory.TABLE, streamUtil);
                GenericXGMMLFileFilter xgmmlFilter = new 
GenericXGMMLFileFilter(new String[]{"xgmml","xml"}, new 
String[]{"text/xgmml","text/xgmml+xml"}, "XGMML files",DataCategory.NETWORK, 
streamUtil);
@@ -181,6 +184,7 @@
                ExpressionReaderFactory expressionReaderFactory = new 
ExpressionReaderFactory(expressionFilter,cyTableFactoryServiceRef);
                CyAttributesReaderFactory attrsDataReaderFactory = new 
CyAttributesReaderFactory(attrsFilter,cyTableFactoryServiceRef,cyApplicationManagerServiceRef,cyNetworkManagerServiceRef,cyRootNetworkManagerServiceRef);
                SIFNetworkReaderFactory sifNetworkViewReaderFactory = new 
SIFNetworkReaderFactory(sifFilter,cyLayoutsServiceRef,cyNetworkViewFactoryServiceRef,cyNetworkFactoryServiceRef,cyEventHelperRef);
+               NNFNetworkReaderFactory nnfNetworkViewReaderFactory = new 
NNFNetworkReaderFactory(nnfFilter,cyLayoutsServiceRef,cyNetworkViewFactoryServiceRef,cyNetworkFactoryServiceRef,cyEventHelperRef,
 cyNetworkManagerServiceRef);
                UnrecognizedVisualPropertyManager 
unrecognizedVisualPropertyManager = new 
UnrecognizedVisualPropertyManager(cyTableFactoryServiceRef,cyTableManagerServiceRef);
                GMLNetworkReaderFactory gmlNetworkViewReaderFactory = new 
GMLNetworkReaderFactory(gmlFilter,cyNetworkViewFactoryServiceRef,cyNetworkFactoryServiceRef,renderingEngineManagerServiceRef,unrecognizedVisualPropertyManager);
                ReadCache readCache = new ReadCache();
@@ -206,6 +210,7 @@
                PSWriterFactory psWriterFactory = new PSWriterFactory(psFilter);
                SVGWriterFactory svgWriterFactory = new 
SVGWriterFactory(svgFilter);
                SifNetworkWriterFactory sifNetworkViewWriterFactory = new 
SifNetworkWriterFactory(sifFilter);
+//             NnfNetworkWriterFactory nnfNetworkViewWriterFactory = new 
NnfNetworkWriterFactory(nnfFilter);
                GenericXGMMLWriterFactory xgmmlWriterFactory = new 
GenericXGMMLWriterFactory(xgmmlFilter,renderingEngineManagerServiceRef,unrecognizedVisualPropertyManager,cyNetworkManagerServiceRef,cyRootNetworkManagerServiceRef,visualMappingManagerServiceRef);
                SessionXGMMLWriterFactory sessionXgmmlWriterFactory = new 
SessionXGMMLWriterFactory(sessXgmmlFileFilter,renderingEngineManagerServiceRef,unrecognizedVisualPropertyManager,cyNetworkManagerServiceRef,cyRootNetworkManagerServiceRef,visualMappingManagerServiceRef);
                CysessionWriterFactoryImpl cysessionWriterFactory = new 
CysessionWriterFactoryImpl(cysessionFilter);
@@ -229,6 +234,7 @@
                
registerService(bc,tableWriterManager,CyTableWriterManager.class, new 
Properties());
                
registerService(bc,vizmapWriterManager,VizmapWriterManager.class, new 
Properties());
                
registerService(bc,sifNetworkViewReaderFactory,InputStreamTaskFactory.class, 
new Properties());
+               
registerService(bc,nnfNetworkViewReaderFactory,InputStreamTaskFactory.class, 
new Properties());
 
                
registerService(bc,xgmmlReaderFactory,InputStreamTaskFactory.class, new 
Properties());
                
registerService(bc,sessXgmmlNetReaderFactory,InputStreamTaskFactory.class, new 
Properties());
@@ -267,6 +273,7 @@
                registerAllServices(bc, psWriterFactory, new Properties());
                registerAllServices(bc, svgWriterFactory, new Properties());
                registerAllServices(bc, sifNetworkViewWriterFactory, new 
Properties());
+//             registerAllServices(bc, nnfNetworkViewWriterFactory, new 
Properties());
                registerAllServices(bc, xgmmlWriterFactory, new Properties());
                registerAllServices(bc, cysessionWriterFactory, new 
Properties());
                registerAllServices(bc, bookmarksWriterFactory, new 
Properties());

Added: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/nnf/NNFNetworkReader.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/nnf/NNFNetworkReader.java
                                (rev 0)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/nnf/NNFNetworkReader.java
        2012-07-25 23:03:57 UTC (rev 29990)
@@ -0,0 +1,158 @@
+/*
+ Copyright (c) 2006, 2010-2011, The Cytoscape Consortium (www.cytoscape.org)
+
+ This library is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 2.1 of the License, or
+ any later version.
+
+ This library is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  The software and
+ documentation provided hereunder is on an "as is" basis, and the
+ Institute for Systems Biology and the Whitehead Institute
+ have no obligations to provide maintenance, support,
+ updates, enhancements or modifications.  In no event shall the
+ Institute for Systems Biology and the Whitehead Institute
+ be liable to any party for direct, indirect, special,
+ incidental or consequential damages, including lost profits, arising
+ out of the use of this software and its documentation, even if the
+ Institute for Systems Biology and the Whitehead Institute
+ have been advised of the possibility of such damage.  See
+ the GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this library; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+*/
+package org.cytoscape.io.internal.read.nnf;
+
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.cytoscape.event.CyEventHelper;
+import org.cytoscape.io.internal.read.AbstractNetworkReader;
+import org.cytoscape.model.CyEdge;
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNetworkFactory;
+import org.cytoscape.model.CyNetworkManager;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.model.CyTable;
+import org.cytoscape.view.layout.CyLayoutAlgorithm;
+import org.cytoscape.view.layout.CyLayoutAlgorithmManager;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.CyNetworkViewFactory;
+import org.cytoscape.work.Task;
+import org.cytoscape.work.TaskIterator;
+import org.cytoscape.work.TaskMonitor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * Reader for graphs in the interactions file format. Given the filename,
+ * provides the graph and attributes objects constructed from the file.
+ */
+public class NNFNetworkReader extends AbstractNetworkReader {
+       private static final Logger logger = 
LoggerFactory.getLogger(NNFNetworkReader.class);
+
+       private final CyEventHelper eventHelper;
+       private final CyLayoutAlgorithmManager layouts; 
+       // Optional comments start with this character and extend to the end of 
line.
+       private static final char COMMENT_CHAR = '#';   
+       private final NNFParser parser;
+       private TaskMonitor parentTaskMonitor;
+
+       public NNFNetworkReader(InputStream is, CyLayoutAlgorithmManager 
layouts,
+                       CyNetworkViewFactory cyNetworkViewFactory, 
CyNetworkFactory cyNetworkFactory,
+                       final CyEventHelper eventHelper,CyNetworkManager 
cyNetworkManagerServiceRef) {
+               super(is, cyNetworkViewFactory, cyNetworkFactory);
+               this.layouts = layouts;
+               this.eventHelper = eventHelper;
+               this.parser = new NNFParser(cyNetworkManagerServiceRef, 
cyNetworkFactory);
+       }
+
+       @Override
+       public void run(TaskMonitor tm) throws IOException {
+               try {
+                       readInput(tm);
+               } finally {
+                       if (inputStream != null) {
+                               inputStream.close();
+                               inputStream = null;
+                       }
+               }
+       }
+
+       private void readInput(TaskMonitor tm) throws IOException {
+               this.parentTaskMonitor = tm;
+               tm.setProgress(0.0);
+
+               // Create buffered reader from given InputStream
+               final BufferedReader in = new BufferedReader(new 
InputStreamReader(inputStream));
+
+               String line;
+               try {
+                       for (int lineNumber = 1; (line = in.readLine()) != 
null; ++lineNumber) {
+                               line = processComment(line);
+                               if (line.length() == 0) {
+                                       continue;
+                               }
+                               if (!parser.parse(line)) {
+                                       throw new IOException("Malformed line 
in NNF file: " + lineNumber + " \"" + line + "\"");
+                               }
+                       }
+               } finally {
+                       in.close();
+               }
+               
+               if (parser.getNetworks().size() == 0) {
+                       throw new IOException("Input NNF file is empty!");
+               }
+
+               this.cyNetworks = new CyNetwork[parser.getNetworks().size()]; 
+               
+               Iterator<CyNetwork> it = parser.getNetworks().iterator();
+               
+               int i=0;
+               while(it.hasNext()){
+                       this.cyNetworks[i++] = it.next();
+               }
+               
+               tm.setProgress(1.0);
+
+               logger.debug("NNF file loaded!");
+       }
+
+       
+       private String processComment(String line) {
+               final int hashPos = line.indexOf(COMMENT_CHAR);
+               if (hashPos != -1) {
+                       line = line.substring(0, hashPos);
+               }
+               return line.trim();
+       }
+
+
+       @Override
+       public CyNetworkView buildCyNetworkView(CyNetwork network) {
+               final CyNetworkView view = 
cyNetworkViewFactory.createNetworkView(network);
+
+               final CyLayoutAlgorithm layout = layouts.getDefaultLayout();
+               TaskIterator itr = layout.createTaskIterator(view, 
layout.getDefaultLayoutContext(), CyLayoutAlgorithm.ALL_NODE_VIEWS, "");
+               Task nextTask = itr.next();
+               try {
+                       nextTask.run(parentTaskMonitor);
+               } catch (Exception e) {
+                       throw new RuntimeException("Could not finish layout", 
e);
+               }
+
+               return view;
+       }
+}

Added: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/nnf/NNFNetworkReaderFactory.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/nnf/NNFNetworkReaderFactory.java
                         (rev 0)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/nnf/NNFNetworkReaderFactory.java
 2012-07-25 23:03:57 UTC (rev 29990)
@@ -0,0 +1,60 @@
+/*
+ Copyright (c) 2006, 2010, The Cytoscape Consortium (www.cytoscape.org)
+
+ This library is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 2.1 of the License, or
+ any later version.
+
+ This library is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  The software and
+ documentation provided hereunder is on an "as is" basis, and the
+ Institute for Systems Biology and the Whitehead Institute
+ have no obligations to provide maintenance, support,
+ updates, enhancements or modifications.  In no event shall the
+ Institute for Systems Biology and the Whitehead Institute
+ be liable to any party for direct, indirect, special,
+ incidental or consequential damages, including lost profits, arising
+ out of the use of this software and its documentation, even if the
+ Institute for Systems Biology and the Whitehead Institute
+ have been advised of the possibility of such damage.  See
+ the GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this library; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+package org.cytoscape.io.internal.read.nnf;
+
+import java.io.InputStream;
+
+import org.cytoscape.event.CyEventHelper;
+import org.cytoscape.io.CyFileFilter;
+import org.cytoscape.io.internal.read.AbstractNetworkReaderFactory;
+import org.cytoscape.model.CyNetworkFactory;
+import org.cytoscape.model.CyNetworkManager;
+import org.cytoscape.view.layout.CyLayoutAlgorithmManager;
+import org.cytoscape.view.model.CyNetworkViewFactory;
+import org.cytoscape.work.TaskIterator;
+
+public class NNFNetworkReaderFactory extends AbstractNetworkReaderFactory {
+
+       private final CyLayoutAlgorithmManager layouts;
+       private final CyEventHelper eventHelper;
+       private final CyNetworkManager cyNetworkManagerServiceRef;
+
+       public NNFNetworkReaderFactory(CyFileFilter filter, 
CyLayoutAlgorithmManager layouts,
+                       CyNetworkViewFactory cyNetworkViewFactory, 
CyNetworkFactory cyNetworkFactory,
+                       final CyEventHelper eventHelper, CyNetworkManager 
cyNetworkManagerServiceRef) {
+               super(filter, cyNetworkViewFactory, cyNetworkFactory);
+               this.layouts = layouts;
+               this.eventHelper = eventHelper;
+               this.cyNetworkManagerServiceRef = cyNetworkManagerServiceRef;
+       }
+
+       public TaskIterator createTaskIterator(InputStream inputStream, String 
inputName) {
+               return new TaskIterator(new NNFNetworkReader(inputStream, 
layouts, cyNetworkViewFactory, cyNetworkFactory,
+                               eventHelper,cyNetworkManagerServiceRef));
+       }
+}

Added: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/nnf/NNFParser.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/nnf/NNFParser.java
                               (rev 0)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/nnf/NNFParser.java
       2012-07-25 23:03:57 UTC (rev 29990)
@@ -0,0 +1,222 @@
+package org.cytoscape.io.internal.read.nnf;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Set;
+
+import org.cytoscape.model.CyEdge;
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNetworkFactory;
+import org.cytoscape.model.CyNetworkManager;
+import org.cytoscape.model.CyNode;
+//import cytoscape.data.Semantics;
+import java.util.Collection;
+import org.cytoscape.model.CyRow;
+import java.util.Iterator;
+
+/**
+ * Parser for NNF files.
+ * 
+ * @author kono, ruschein
+ */
+public class NNFParser {
+       // For performance, these fields will be reused.
+       private String[] parts;
+       private int length;
+
+       // List of root network plus all nested networks.
+       private final List<CyNetwork> networks;
+
+       // Hash map from title to actual network
+       private Map<String, CyNetwork> networkMap;
+
+       private final CyNetworkFactory cyNetworkFactory;
+
+       private final CyNetworkManager cyNetworkManagerServiceRef;
+
+       public NNFParser(CyNetworkManager cyNetworkManagerServiceRef, 
CyNetworkFactory cyNetworkFactory) {
+               this.cyNetworkManagerServiceRef = cyNetworkManagerServiceRef;
+               this.cyNetworkFactory = cyNetworkFactory;
+               
+               networkMap = new HashMap<String, CyNetwork>();
+               networks = new ArrayList<CyNetwork>();          
+       }
+
+
+       /** Returns the first network with title "networkTitle" or null, if 
there is no network w/ this title.
+        */
+       private CyNetwork getNetworkByTitle(final String networkTitle) {
+               Set<CyNetwork> networks = 
this.cyNetworkManagerServiceRef.getNetworkSet();
+               for (final CyNetwork network : networks) {
+                       String title = 
network.getDefaultNetworkTable().getRow(network).get(CyNetwork.NAME, 
String.class);
+                       
+                       if (title.equals(networkTitle))
+                               return network;
+               }
+               return null;
+       }
+       
+
+       /**
+        * Parse an entry/line in an NNF file.
+        * 
+        * @param line
+        */
+       public boolean parse(final String line) {
+               // Split with white space chars
+               parts = splitLine(line);
+               length = parts.length;
+
+               CyNetwork network = networkMap.get(parts[0]);
+               if (network == null) {
+                       // Reuse existing networks, if possible:
+                       network = getNetworkByTitle(parts[0]);
+                       if (network == null) {
+                               // Create network without view.  View will be 
created later.
+                               network = 
this.cyNetworkFactory.createNetwork(); //Cytoscape.createNetwork(parts[0], /* 
create_view = */false);
+                               network.getRow(network).set(CyNetwork.NAME, 
parts[0]);
+                       }
+
+                       networkMap.put(parts[0], network);
+                       networks.add(network);
+
+                       // Attempt to nest network within the node with the 
same name                   
+                       final CyNode parent = getNodeByName(networkMap, 
parts[0]);
+                       if (parent != null) {
+                               parent.setNetworkPointer(network);
+                       }
+               }
+
+               if (length == 2) {
+                       final CyNode node = network.addNode();
+                       network.getRow(node).set(CyNetwork.NAME, parts[1]);
+                                               
+                       final CyNetwork nestedNetwork = 
networkMap.get(parts[1]);
+                       if (nestedNetwork != null) {
+                               node.setNetworkPointer(nestedNetwork);
+                       }
+               } else if (length == 4) {
+                       CyNode source = null;
+                       // Check if the source node already existed in the 
network                      
+                       Collection<CyRow> matchingRows = 
network.getDefaultNodeTable().getMatchingRows(CyNetwork.NAME, parts[1]);
+                       if (!matchingRows.isEmpty()){
+                               // source node already existed, get it
+                               CyRow row = matchingRows.iterator().next();
+                               Long suid = row.get("SUID", Long.class);
+                               if (suid != null){
+                                       source = network.getNode(suid);
+                               }                               
+                       }
+                       else {
+                               // source node does not existed yet, create one
+                               source = network.addNode(); 
//Cytoscape.getCyNode(parts[1], true);
+                               network.getRow(source).set(CyNetwork.NAME, 
parts[1]);
+                       }
+                       
+                       //network.addNode(source);
+                       CyNetwork nestedNetwork = networkMap.get(parts[1]);
+                       if (nestedNetwork != null) {
+                               source.setNetworkPointer(nestedNetwork);
+                       }
+
+                       CyNode target = null;
+                       
+                       // Check if the target already existed in the network
+                       Collection<CyRow> matchingRows2 = 
network.getDefaultNodeTable().getMatchingRows(CyNetwork.NAME, parts[3]);
+                       if (!matchingRows2.isEmpty()){
+                               // source node already existed, get it
+                               CyRow row = matchingRows2.iterator().next();
+
+                               Long suid = row.get("SUID", Long.class);
+                               if (suid != null){
+                                       target = network.getNode(suid);
+                               }                               
+                       }
+                       else {
+                               // source node does not existed yet, create one
+                               target = network.addNode();
+                               network.getRow(target).set(CyNetwork.NAME, 
parts[3]);
+                       }
+
+                       //
+                       nestedNetwork = networkMap.get(parts[3]);
+                       if (nestedNetwork != null) {
+                               target.setNetworkPointer(nestedNetwork);
+                       }
+
+                       CyEdge newEdge = network.addEdge(source, target, true);
+                       network.getRow(newEdge).set(CyNetwork.NAME, parts[2]);
+
+               } else {
+                       // Invalid number of columns.
+                       return false;
+               }
+
+               return true;
+       }
+       
+       
+       private CyNode getNodeByName(Map<String, CyNetwork> networkMap, String 
nodeName){
+               
+               CyNode retNode = null;
+               
+               Iterator<String> it = networkMap.keySet().iterator();
+               while (it.hasNext()){
+                       CyNetwork network = networkMap.get(it.next());
+                       
+                       Collection<CyRow> matchingRows = 
network.getDefaultNodeTable().getMatchingRows(CyNetwork.NAME, nodeName);
+                       if (matchingRows.isEmpty()){
+                               continue;
+                       }
+                       else {
+                               CyRow row = matchingRows.iterator().next();
+
+                               Long suid = row.get("SUID", Long.class);
+                               if (suid != null){
+                                       return network.getNode(suid);           
                        
+                               }
+                       }
+               }
+               
+               return retNode;
+       }
+       
+       
+       private String[] splitLine(final String line) {
+               final List<String> parts = new ArrayList<String>();
+               boolean escaped = false;
+               StringBuilder part = null;
+               for (int i = 0; i < line.length(); ++i) {
+                       final char ch = line.charAt(i);
+                       if (escaped) {
+                               escaped = false;
+                               if (part == null)
+                                       part = new StringBuilder();
+                               part.append(ch);
+                       } else if (ch == '\\')
+                               escaped = true;
+                       else if (ch == ' ' || ch == '\t') {
+                               if (part != null) {
+                                       parts.add(part.toString());
+                                       part = null;
+                               }
+                       } else {
+                               if (part == null)
+                                       part = new StringBuilder();
+                               part.append(ch);
+                       }
+               }
+
+               if (part != null)
+                       parts.add(part.toString());
+
+               final String[] array = new String[parts.size()];
+               return parts.toArray(array);
+       }
+
+       protected List<CyNetwork> getNetworks() {
+               return networks;
+       }
+}

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