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.