Author: clopes
Date: 2013-01-23 10:38:13 -0800 (Wed, 23 Jan 2013)
New Revision: 31069
Modified:
core3/impl/branches/3.0.0-release/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/GenericXGMMLReader.java
Log:
Fixes #1696 (Arrow shapes not imported from Cy2 XGMML)
Modified:
core3/impl/branches/3.0.0-release/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/GenericXGMMLReader.java
===================================================================
---
core3/impl/branches/3.0.0-release/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/GenericXGMMLReader.java
2013-01-22 17:08:09 UTC (rev 31068)
+++
core3/impl/branches/3.0.0-release/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/GenericXGMMLReader.java
2013-01-23 18:38:13 UTC (rev 31069)
@@ -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.