Author: clopes
Date: 2013-01-23 12:10:24 -0800 (Wed, 23 Jan 2013)
New Revision: 31070

Modified:
   
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/GenericXGMMLReader.java
Log:
Refs #1696 : patching trunk.

Modified: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/GenericXGMMLReader.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/GenericXGMMLReader.java
    2013-01-23 18:38:13 UTC (rev 31069)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/GenericXGMMLReader.java
    2013-01-23 20:10:24 UTC (rev 31070)
@@ -31,6 +31,7 @@
 import java.io.InputStream;
 import java.io.PushbackInputStream;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -73,14 +74,38 @@
 public class GenericXGMMLReader extends AbstractNetworkReader {
 
        public static final String REPAIR_BARE_AMPERSANDS_PROPERTY = 
"cytoscape.xgmml.repair.bare.ampersands";
-       
+
        protected final ReadDataManager readDataMgr;
        protected final XGMMLParser parser;
        protected final UnrecognizedVisualPropertyManager 
unrecognizedVisualPropertyMgr;
        protected final VisualLexicon visualLexicon;
        
+       private static final Map<String, String> legacyArrowShapes = new 
HashMap<String, String>();
        private static final Logger logger = 
LoggerFactory.getLogger(GenericXGMMLReader.class);
        
+       static {
+               legacyArrowShapes.put("0", "NONE"); // NO_END
+               legacyArrowShapes.put("1", "DELTA"); // WHITE_DELTA
+               legacyArrowShapes.put("2", "DELTA"); // BLACK_DELTA
+               legacyArrowShapes.put("3", "DELTA"); // EDGE_COLOR_DELTA
+               legacyArrowShapes.put("4", "ARROW"); // WHITE_ARROW
+               legacyArrowShapes.put("5", "ARROW"); // BLACK_ARROW
+               legacyArrowShapes.put("6", "ARROW"); // EDGE_COLOR_ARROW
+               legacyArrowShapes.put("7", "DIAMOND"); // WHITE_DIAMOND
+               legacyArrowShapes.put("8", "DIAMOND"); // BLACK_DIAMOND
+               legacyArrowShapes.put("9", "DIAMOND"); // EDGE_COLOR_DIAMOND
+               legacyArrowShapes.put("10", "CIRCLE"); // WHITE_CIRCLE
+               legacyArrowShapes.put("11", "CIRCLE"); // BLACK_CIRCLE
+               legacyArrowShapes.put("12", "CIRCLE"); // EDGE_COLOR_CIRCLE
+               legacyArrowShapes.put("13", "T"); // WHITE_T
+               legacyArrowShapes.put("14", "T"); // BLACK_T
+               legacyArrowShapes.put("15", "T"); // EDGE_COLOR_T
+               legacyArrowShapes.put("16", "HALF_TOP"); // EDGE_HALF_ARROW_TOP
+               legacyArrowShapes.put("17", "HALF_BOTTOM"); // 
EDGE_HALF_ARROW_BOTTOM
+               legacyArrowShapes.put("HALF_ARROW_TOP", "HALF_TOP"); // v2.8 
bypass
+               legacyArrowShapes.put("HALF_ARROW_BOTTOM", "HALF_BOTTOM"); // 
v2.8 bypass
+       }
+       
        public GenericXGMMLReader(final InputStream inputStream,
                                                          final 
CyNetworkViewFactory cyNetworkViewFactory,
                                                          final 
CyNetworkFactory cyNetworkFactory,
@@ -250,6 +275,8 @@
                                if (vp != null) {
                                        if (isXGMMLTransparency(attName))
                                                attValue = 
convertXGMMLTransparencyValue(attValue);
+                                       else if (isOldArrowShape(attName))
+                                               attValue = 
convertOldArrowShapeValue(attValue);
                                        
                                        final Object parsedValue = 
vp.parseSerializableString(attValue);
 
@@ -293,12 +320,19 @@
                return locked;
        }
        
-       private static final Pattern TRANSPARENCY_PATTERN = 
Pattern.compile("(cy:)?(node|edge)Transparency");
+       private static final Pattern XGMML_TRANSPARENCY_PATTERN = 
Pattern.compile("(cy:)?(node|edge)Transparency");
        
        static boolean isXGMMLTransparency(final String attName) {
-               final Matcher matcher = TRANSPARENCY_PATTERN.matcher(attName);
+               final Matcher matcher = 
XGMML_TRANSPARENCY_PATTERN.matcher(attName);
                return matcher.matches();
        }
+       
+       private static final Pattern OLD_ARROW_SHAPE_PATTERN = 
Pattern.compile("(?i)(cy:|edge)?(source|target)Arrow(Shape)?");
+       
+       static boolean isOldArrowShape(final String attName) {
+               final Matcher matcher = 
OLD_ARROW_SHAPE_PATTERN.matcher(attName);
+               return matcher.matches();
+       }
 
        private static final Pattern OLD_FONT_PATTERN = 
Pattern.compile("(cy:)?(node|edge)LabelFont");
        
@@ -318,6 +352,16 @@
 
                return "255";
        }
+       
+       static String convertOldArrowShapeValue(final String s) {
+               // Arrow shape is saved in Cy2 XGMML as integers
+               String value = legacyArrowShapes.get(s);
+               
+               if (value == null)
+                       value = s;
+               
+               return value;
+       }
 
        static String convertOldFontValue(String s) {
                // e.g. from "ACaslonPro-Bold-0-18" to "ACaslonPro,bold,18"

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