Author: mes
Date: 2011-09-21 16:05:48 -0700 (Wed, 21 Sep 2011)
New Revision: 26917

Modified:
   
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/sif/Interaction.java
   
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkReader.java
   
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/sif/InteractionTest.java
Log:
fixed interaction to use faster tokenizer

Modified: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/sif/Interaction.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/sif/Interaction.java
     2011-09-21 22:59:09 UTC (rev 26916)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/sif/Interaction.java
     2011-09-21 23:05:48 UTC (rev 26917)
@@ -33,31 +33,35 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.regex.Pattern;
+import java.util.StringTokenizer;
 
 
 /**
  * Utility class for representing one line of SIF file.
  */
 final class Interaction {
-       private final String source;
+       private String source;
        private List<String> targets;
        private String interactionType;
 
-       Interaction(final String rawText, final Pattern delimiterPattern) {
-               final String[] values = delimiterPattern.split(rawText);
-               if (values.length < 1)
-                       throw new IllegalArgumentException("Invalid entry.");
-
-               source = values[0].trim();
+       Interaction(final String rawText, final String delimiter) {
+        final StringTokenizer strtok = new StringTokenizer(rawText, delimiter);
+        int counter = 0;
                targets = new ArrayList<String>();
 
-               if (values.length > 2) {
-                       interactionType = values[1].trim();
-                       for (int i = 2; i < values.length; i++)
-                               targets.add(values[i].trim());
-               }
+        while (strtok.hasMoreTokens()) {
+            if (counter == 0)
+                source = strtok.nextToken().trim();
+            else if (counter == 1)
+                interactionType = strtok.nextToken().trim();
+            else 
+                targets.add(strtok.nextToken().trim());
+
+            counter++;
+        }
        }
 
+
        /**
         * @return The source node identifier string.
         */

Modified: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkReader.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkReader.java
        2011-09-21 22:59:09 UTC (rev 26916)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkReader.java
        2011-09-21 23:05:48 UTC (rev 26917)
@@ -62,9 +62,8 @@
 public class SIFNetworkReader extends AbstractNetworkReader {
        private static final Logger logger = 
LoggerFactory.getLogger(SIFNetworkReader.class);
 
-       private static final String DEF_DELIMITER = "\\s+";
        private static final String TAB = "\t";
-       private String delimiter = DEF_DELIMITER;
+       private String delimiter = " "; // single space
 
        private final CyEventHelper eventHelper;
        private final CyLayoutAlgorithmManager layouts;
@@ -109,8 +108,7 @@
                final String firstLine = br.readLine();
                if (firstLine.contains(TAB))
                        delimiter = TAB;
-               final Pattern delimiterPattern = Pattern.compile(delimiter);
-               createEdge(new Interaction(firstLine.trim(), delimiterPattern), 
network, nMap);
+               createEdge(new Interaction(firstLine.trim(), delimiter), 
network, nMap);
 
                while ((line = br.readLine()) != null) {
                        if (cancelled) {
@@ -126,7 +124,7 @@
                                continue;
 
                        try {
-                               final Interaction itr = new Interaction(line, 
delimiterPattern);
+                               final Interaction itr = new Interaction(line, 
delimiter);
                                createEdge(itr, network, nMap);
                        } catch (Exception e) {
                                // Simply ignore invalid lines.

Modified: 
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/sif/InteractionTest.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/sif/InteractionTest.java
 2011-09-21 22:59:09 UTC (rev 26916)
+++ 
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/sif/InteractionTest.java
 2011-09-21 23:05:48 UTC (rev 26917)
@@ -36,7 +36,7 @@
 
 
 public class InteractionTest {
-       private Pattern delim = Pattern.compile(" ");
+       private String delim = " ";
        
        @Test
        public void test3ArgCtor() throws Exception {

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