提交 ec57bc71 编写于 作者: E Eduardo Ramos

Fix #1516 Edge labels not retained on graphml export

上级 5695cad0
...@@ -444,10 +444,19 @@ public class ExporterGraphML implements GraphExporter, CharacterExporter, LongTa ...@@ -444,10 +444,19 @@ public class ExporterGraphML implements GraphExporter, CharacterExporter, LongTa
Element weightE = createEdgeWeight(document, e, graph); Element weightE = createEdgeWeight(document, e, graph);
edgeE.appendChild(weightE); edgeE.appendChild(weightE);
if (e.isDirected() && !graph.isDirected()) { boolean directedEdgeDefault = graph.isDirected() || graph.isMixed();
edgeE.setAttribute("type", "directed"); if (e.isDirected() && !directedEdgeDefault) {
} else if (!e.isDirected() && graph.isDirected()) { edgeE.setAttribute("directed", "true");
edgeE.setAttribute("type", "undirected"); } else if (!e.isDirected() && directedEdgeDefault) {
edgeE.setAttribute("directed", "false");
}
if (e.getTypeLabel() != null) {
//Edge labels not retained on graphml export https://github.com/gephi/gephi/issues/1516
String typeLabel = e.getTypeLabel().toString().trim();
if (!typeLabel.isEmpty()) {
edgeE.setAttribute("label", typeLabel);
}
} }
//Attribute values //Attribute values
......
Manifest-Version: 1.0 Manifest-Version: 1.0
AutoUpdate-Essential-Module: true AutoUpdate-Essential-Module: true
OpenIDE-Module-Localizing-Bundle: org/gephi/io/exporter/plugin/Bundle.properties OpenIDE-Module-Localizing-Bundle: org/gephi/io/exporter/plugin/Bundle.properties
OpenIDE-Module-Specification-Version: ${gephi.modules.specification.version} OpenIDE-Module-Specification-Version: 0.9.2.1
OpenIDE-Module-Display-Category: Plugin OpenIDE-Module-Display-Category: Plugin
OpenIDE-Module-Name: Export Plugin OpenIDE-Module-Name: Export Plugin
...@@ -85,6 +85,7 @@ public class ImporterGraphML implements FileImporter, LongTask { ...@@ -85,6 +85,7 @@ public class ImporterGraphML implements FileImporter, LongTask {
private static final String EDGE_SOURCE = "source"; private static final String EDGE_SOURCE = "source";
private static final String EDGE_TARGET = "target"; private static final String EDGE_TARGET = "target";
private static final String EDGE_DIRECTED = "directed"; private static final String EDGE_DIRECTED = "directed";
private static final String EDGE_TYPE = "label";
private static final String ATTRIBUTE = "key"; private static final String ATTRIBUTE = "key";
private static final String ATTRIBUTE_ID = "id"; private static final String ATTRIBUTE_ID = "id";
private static final String ATTRIBUTE_TITLE = "attr.name"; private static final String ATTRIBUTE_TITLE = "attr.name";
...@@ -371,6 +372,7 @@ public class ImporterGraphML implements FileImporter, LongTask { ...@@ -371,6 +372,7 @@ public class ImporterGraphML implements FileImporter, LongTask {
String source = ""; String source = "";
String target = ""; String target = "";
String directed = ""; String directed = "";
String type = null;
//Attributes //Attributes
for (int i = 0; i < reader.getAttributeCount(); i++) { for (int i = 0; i < reader.getAttributeCount(); i++) {
...@@ -383,6 +385,8 @@ public class ImporterGraphML implements FileImporter, LongTask { ...@@ -383,6 +385,8 @@ public class ImporterGraphML implements FileImporter, LongTask {
id = reader.getAttributeValue(i); id = reader.getAttributeValue(i);
} else if (EDGE_DIRECTED.equalsIgnoreCase(attName)) { } else if (EDGE_DIRECTED.equalsIgnoreCase(attName)) {
directed = reader.getAttributeValue(i); directed = reader.getAttributeValue(i);
} else if (EDGE_TYPE.equalsIgnoreCase(attName)) {
type = reader.getAttributeValue(i).trim();
} }
} }
...@@ -398,6 +402,10 @@ public class ImporterGraphML implements FileImporter, LongTask { ...@@ -398,6 +402,10 @@ public class ImporterGraphML implements FileImporter, LongTask {
NodeDraft nodeTarget = container.getNode(target); NodeDraft nodeTarget = container.getNode(target);
edge.setSource(nodeSource); edge.setSource(nodeSource);
edge.setTarget(nodeTarget); edge.setTarget(nodeTarget);
if (type != null && !type.isEmpty()) {
//Edge labels not retained on graphml export https://github.com/gephi/gephi/issues/1516
edge.setType(type);
}
//Type //Type
if (!directed.isEmpty()) { if (!directed.isEmpty()) {
...@@ -415,9 +423,9 @@ public class ImporterGraphML implements FileImporter, LongTask { ...@@ -415,9 +423,9 @@ public class ImporterGraphML implements FileImporter, LongTask {
boolean end = false; boolean end = false;
while (reader.hasNext() && !end) { while (reader.hasNext() && !end) {
int type = reader.next(); int elemType = reader.next();
switch (type) { switch (elemType) {
case XMLStreamReader.START_ELEMENT: case XMLStreamReader.START_ELEMENT:
if (ATTVALUE.equalsIgnoreCase(xmlReader.getLocalName())) { if (ATTVALUE.equalsIgnoreCase(xmlReader.getLocalName())) {
readEdgeAttValue(reader, edge); readEdgeAttValue(reader, edge);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册