Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Christnowx
Gephi
提交
2b2721f7
G
Gephi
项目概览
Christnowx
/
Gephi
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Gephi
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2b2721f7
编写于
5月 25, 2013
作者:
M
Mathieu Bastian
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update ExportPlugin code to the new GraphAPI
上级
509d6baf
变更
16
展开全部
隐藏空白更改
内联
并排
Showing
16 changed file
with
1096 addition
and
1225 deletion
+1096
-1225
modules/ExportPlugin/pom.xml
modules/ExportPlugin/pom.xml
+0
-4
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterBuilderCSV.java
...java/org/gephi/io/exporter/plugin/ExporterBuilderCSV.java
+3
-0
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterBuilderGDF.java
...java/org/gephi/io/exporter/plugin/ExporterBuilderGDF.java
+3
-0
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterBuilderGEXF.java
...ava/org/gephi/io/exporter/plugin/ExporterBuilderGEXF.java
+3
-0
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterBuilderGML.java
...java/org/gephi/io/exporter/plugin/ExporterBuilderGML.java
+3
-0
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterBuilderGraphML.java
.../org/gephi/io/exporter/plugin/ExporterBuilderGraphML.java
+3
-0
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterBuilderPajek.java
...va/org/gephi/io/exporter/plugin/ExporterBuilderPajek.java
+3
-0
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterBuilderVNA.java
...java/org/gephi/io/exporter/plugin/ExporterBuilderVNA.java
+3
-0
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterCSV.java
...c/main/java/org/gephi/io/exporter/plugin/ExporterCSV.java
+66
-109
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterDL.java
...rc/main/java/org/gephi/io/exporter/plugin/ExporterDL.java
+45
-39
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterGDF.java
...c/main/java/org/gephi/io/exporter/plugin/ExporterGDF.java
+99
-128
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterGEXF.java
.../main/java/org/gephi/io/exporter/plugin/ExporterGEXF.java
+527
-541
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterGML.java
...c/main/java/org/gephi/io/exporter/plugin/ExporterGML.java
+71
-83
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterGraphML.java
...in/java/org/gephi/io/exporter/plugin/ExporterGraphML.java
+143
-198
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterPajek.java
...main/java/org/gephi/io/exporter/plugin/ExporterPajek.java
+66
-59
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterVNA.java
...c/main/java/org/gephi/io/exporter/plugin/ExporterVNA.java
+58
-64
未找到文件。
modules/ExportPlugin/pom.xml
浏览文件 @
2b2721f7
...
...
@@ -16,10 +16,6 @@
<name>
ExportPlugin
</name>
<dependencies>
<dependency>
<groupId>
${project.groupId}
</groupId>
<artifactId>
data-attributes-api
</artifactId>
</dependency>
<dependency>
<groupId>
${project.groupId}
</groupId>
<artifactId>
dynamic-api
</artifactId>
...
...
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterBuilderCSV.java
浏览文件 @
2b2721f7
...
...
@@ -54,15 +54,18 @@ import org.openide.util.lookup.ServiceProvider;
@ServiceProvider
(
service
=
GraphFileExporterBuilder
.
class
)
public
class
ExporterBuilderCSV
implements
GraphFileExporterBuilder
{
@Override
public
GraphExporter
buildExporter
()
{
return
new
ExporterCSV
();
}
@Override
public
FileType
[]
getFileTypes
()
{
FileType
ft
=
new
FileType
(
".csv"
,
NbBundle
.
getMessage
(
ExporterBuilderCSV
.
class
,
"fileType_CSV_Name"
));
return
new
FileType
[]{
ft
};
}
@Override
public
String
getName
()
{
return
"CSV"
;
}
...
...
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterBuilderGDF.java
浏览文件 @
2b2721f7
...
...
@@ -54,15 +54,18 @@ import org.openide.util.lookup.ServiceProvider;
@ServiceProvider
(
service
=
GraphFileExporterBuilder
.
class
)
public
class
ExporterBuilderGDF
implements
GraphFileExporterBuilder
{
@Override
public
GraphExporter
buildExporter
()
{
return
new
ExporterGDF
();
}
@Override
public
FileType
[]
getFileTypes
()
{
FileType
ft
=
new
FileType
(
".gdf"
,
NbBundle
.
getMessage
(
ExporterBuilderGDF
.
class
,
"fileType_GDF_Name"
));
return
new
FileType
[]{
ft
};
}
@Override
public
String
getName
()
{
return
"GDF"
;
}
...
...
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterBuilderGEXF.java
浏览文件 @
2b2721f7
...
...
@@ -54,15 +54,18 @@ import org.openide.util.lookup.ServiceProvider;
@ServiceProvider
(
service
=
GraphFileExporterBuilder
.
class
)
public
class
ExporterBuilderGEXF
implements
GraphFileExporterBuilder
{
@Override
public
GraphExporter
buildExporter
()
{
return
new
ExporterGEXF
();
}
@Override
public
FileType
[]
getFileTypes
()
{
FileType
ft
=
new
FileType
(
".gexf"
,
NbBundle
.
getMessage
(
ExporterBuilderGEXF
.
class
,
"fileType_GEXF_Name"
));
return
new
FileType
[]{
ft
};
}
@Override
public
String
getName
()
{
return
"GEXF"
;
}
...
...
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterBuilderGML.java
浏览文件 @
2b2721f7
...
...
@@ -53,14 +53,17 @@ import org.openide.util.lookup.ServiceProvider;
@ServiceProvider
(
service
=
GraphFileExporterBuilder
.
class
)
public
class
ExporterBuilderGML
implements
GraphFileExporterBuilder
{
@Override
public
GraphExporter
buildExporter
()
{
return
new
ExporterGML
();
}
@Override
public
FileType
[]
getFileTypes
()
{
return
new
FileType
[]{
new
FileType
(
".gml"
,
"GML files"
)};
}
@Override
public
String
getName
()
{
return
"GML exporter"
;
}
...
...
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterBuilderGraphML.java
浏览文件 @
2b2721f7
...
...
@@ -54,15 +54,18 @@ import org.openide.util.lookup.ServiceProvider;
@ServiceProvider
(
service
=
GraphFileExporterBuilder
.
class
)
public
class
ExporterBuilderGraphML
implements
GraphFileExporterBuilder
{
@Override
public
GraphExporter
buildExporter
()
{
return
new
ExporterGraphML
();
}
@Override
public
FileType
[]
getFileTypes
()
{
FileType
ft
=
new
FileType
(
".graphml"
,
NbBundle
.
getMessage
(
ExporterBuilderGraphML
.
class
,
"fileType_GraphML_Name"
));
return
new
FileType
[]{
ft
};
}
@Override
public
String
getName
()
{
return
"GraphML"
;
}
...
...
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterBuilderPajek.java
浏览文件 @
2b2721f7
...
...
@@ -54,15 +54,18 @@ import org.openide.util.lookup.ServiceProvider;
@ServiceProvider
(
service
=
GraphFileExporterBuilder
.
class
)
public
class
ExporterBuilderPajek
implements
GraphFileExporterBuilder
{
@Override
public
GraphExporter
buildExporter
()
{
return
new
ExporterPajek
();
}
@Override
public
FileType
[]
getFileTypes
()
{
FileType
ft
=
new
FileType
(
".net"
,
NbBundle
.
getMessage
(
ExporterBuilderCSV
.
class
,
"fileType_Pajek_Name"
));
return
new
FileType
[]{
ft
};
}
@Override
public
String
getName
()
{
return
"Pajek"
;
}
...
...
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterBuilderVNA.java
浏览文件 @
2b2721f7
...
...
@@ -53,14 +53,17 @@ import org.openide.util.lookup.ServiceProvider;
*/
@ServiceProvider
(
service
=
GraphFileExporterBuilder
.
class
)
public
class
ExporterBuilderVNA
implements
GraphFileExporterBuilder
{
@Override
public
GraphExporter
buildExporter
()
{
return
new
ExporterVNA
();
}
@Override
public
FileType
[]
getFileTypes
()
{
return
new
FileType
[]{
new
FileType
(
".vna"
,
NbBundle
.
getMessage
(
ExporterBuilderVNA
.
class
,
"fileType_VNA_Name"
))};
}
@Override
public
String
getName
()
{
return
"vna"
;
}
...
...
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterCSV.java
浏览文件 @
2b2721f7
/*
Copyright 2008-2010 Gephi
Authors : Mathieu Bastian <mathieu.bastian@gephi.org>
Website : http://www.gephi.org
This file is part of Gephi.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
Copyright 2011 Gephi Consortium. All rights reserved.
The contents of this file are subject to the terms of either the GNU
General Public License Version 3 only ("GPL") or the Common
Development and Distribution License("CDDL") (collectively, the
"License"). You may not use this file except in compliance with the
License. You can obtain a copy of the License at
http://gephi.org/about/legal/license-notice/
or /cddl-1.0.txt and /gpl-3.0.txt. See the License for the
specific language governing permissions and limitations under the
License. When distributing the software, include this License Header
Notice in each file and include the License files at
/cddl-1.0.txt and /gpl-3.0.txt. If applicable, add the following below the
License Header, with the fields enclosed by brackets [] replaced by
your own identifying information:
"Portions Copyrighted [year] [name of copyright owner]"
If you wish your version of this file to be governed by only the CDDL
or only the GPL Version 3, indicate your decision by adding
"[Contributor] elects to include this software in this distribution
under the [CDDL or GPL Version 3] license." If you do not indicate a
single choice of license, a recipient has the option to distribute
your version of this file under either the CDDL, the GPL Version 3 or
to extend the choice of license to its licensees as provided above.
However, if you add GPL Version 3 code and therefore, elected the GPL
Version 3 license, then the option applies only if the new code is
made subject to such option by the copyright holder.
Contributor(s):
Portions Copyrighted 2011 Gephi Consortium.
Copyright 2008-2010 Gephi
Authors : Mathieu Bastian <mathieu.bastian@gephi.org>
Website : http://www.gephi.org
This file is part of Gephi.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
Copyright 2011 Gephi Consortium. All rights reserved.
The contents of this file are subject to the terms of either the GNU
General Public License Version 3 only ("GPL") or the Common
Development and Distribution License("CDDL") (collectively, the
"License"). You may not use this file except in compliance with the
License. You can obtain a copy of the License at
http://gephi.org/about/legal/license-notice/
or /cddl-1.0.txt and /gpl-3.0.txt. See the License for the
specific language governing permissions and limitations under the
License. When distributing the software, include this License Header
Notice in each file and include the License files at
/cddl-1.0.txt and /gpl-3.0.txt. If applicable, add the following below the
License Header, with the fields enclosed by brackets [] replaced by
your own identifying information:
"Portions Copyrighted [year] [name of copyright owner]"
If you wish your version of this file to be governed by only the CDDL
or only the GPL Version 3, indicate your decision by adding
"[Contributor] elects to include this software in this distribution
under the [CDDL or GPL Version 3] license." If you do not indicate a
single choice of license, a recipient has the option to distribute
your version of this file under either the CDDL, the GPL Version 3 or
to extend the choice of license to its licensees as provided above.
However, if you add GPL Version 3 code and therefore, elected the GPL
Version 3 license, then the option applies only if the new code is
made subject to such option by the copyright holder.
Contributor(s):
Portions Copyrighted 2011 Gephi Consortium.
*/
package
org.gephi.io.exporter.plugin
;
...
...
@@ -45,19 +45,12 @@ import java.io.IOException;
import
java.io.Writer
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.gephi.graph.api.DirectedGraph
;
import
org.gephi.graph.api.Edge
;
import
org.gephi.graph.api.Graph
;
import
org.gephi.graph.api.GraphModel
;
import
org.gephi.graph.api.HierarchicalDirectedGraph
;
import
org.gephi.graph.api.HierarchicalGraph
;
import
org.gephi.graph.api.HierarchicalMixedGraph
;
import
org.gephi.graph.api.HierarchicalUndirectedGraph
;
import
org.gephi.graph.api.MixedGraph
;
import
org.gephi.graph.api.Node
;
import
org.gephi.graph.api.UndirectedGraph
;
import
org.gephi.io.exporter.spi.GraphExporter
;
import
org.gephi.io.exporter.spi.CharacterExporter
;
import
org.gephi.io.exporter.spi.GraphExporter
;
import
org.gephi.project.api.Workspace
;
import
org.gephi.utils.longtask.spi.LongTask
;
import
org.gephi.utils.progress.Progress
;
...
...
@@ -83,6 +76,7 @@ public class ExporterCSV implements GraphExporter, CharacterExporter, LongTask {
private
boolean
cancel
=
false
;
private
ProgressTicket
progressTicket
;
@Override
public
boolean
execute
()
{
GraphModel
graphModel
=
workspace
.
getLookup
().
lookup
(
GraphModel
.
class
);
Graph
graph
=
null
;
...
...
@@ -128,7 +122,7 @@ public class ExporterCSV implements GraphExporter, CharacterExporter, LongTask {
}
}
for
(
Edge
e
:
((
HierarchicalGraph
)
graph
).
getMeta
Edges
(
n
))
{
for
(
Edge
e
:
graph
.
get
Edges
(
n
))
{
if
(!
e
.
isDirected
()
||
(
e
.
isDirected
()
&&
n
==
e
.
getSource
()))
{
Node
m
=
graph
.
getOpposite
(
n
,
e
);
neighbours
.
add
(
m
);
...
...
@@ -143,57 +137,19 @@ public class ExporterCSV implements GraphExporter, CharacterExporter, LongTask {
writer
.
append
(
EOL
);
}
}
else
{
if
(
graph
instanceof
DirectedGraph
)
{
DirectedGraph
directedGraph
=
(
DirectedGraph
)
graph
;
Node
[]
nodes
=
graph
.
getNodes
().
toArray
();
for
(
Node
n
:
nodes
)
{
if
(
cancel
)
{
break
;
}
writeMatrixNode
(
n
,
true
);
for
(
int
j
=
0
;
j
<
nodes
.
length
;
j
++)
{
Node
m
=
nodes
[
j
];
Edge
e
=
directedGraph
.
getEdge
(
n
,
m
);
e
=
e
==
null
?
((
HierarchicalDirectedGraph
)
directedGraph
).
getMetaEdge
(
n
,
m
)
:
e
;
writeEdge
(
e
,
j
<
nodes
.
length
-
1
);
}
Progress
.
progress
(
progressTicket
);
writer
.
append
(
EOL
);
}
}
else
if
(
graph
instanceof
UndirectedGraph
)
{
UndirectedGraph
undirectedGraph
=
(
UndirectedGraph
)
graph
;
Node
[]
nodes
=
graph
.
getNodes
().
toArray
();
for
(
Node
n
:
nodes
)
{
if
(
cancel
)
{
break
;
}
writeMatrixNode
(
n
,
true
);
for
(
int
j
=
0
;
j
<
nodes
.
length
;
j
++)
{
Node
m
=
nodes
[
j
];
Edge
e
=
undirectedGraph
.
getEdge
(
n
,
m
);
e
=
e
==
null
?
((
HierarchicalUndirectedGraph
)
undirectedGraph
).
getMetaEdge
(
n
,
m
)
:
e
;
writeEdge
(
e
,
j
<
nodes
.
length
-
1
);
}
Progress
.
progress
(
progressTicket
);
writer
.
append
(
EOL
);
Node
[]
nodes
=
graph
.
getNodes
().
toArray
();
for
(
Node
n
:
nodes
)
{
if
(
cancel
)
{
break
;
}
}
else
{
MixedGraph
mixedGraph
=
(
MixedGraph
)
graph
;
Node
[]
nodes
=
graph
.
getNodes
().
toArray
();
for
(
Node
n
:
graph
.
getNodes
())
{
if
(
cancel
)
{
break
;
}
writeMatrixNode
(
n
,
true
);
for
(
int
j
=
0
;
j
<
nodes
.
length
;
j
++)
{
Node
m
=
nodes
[
j
];
Edge
e
=
mixedGraph
.
getEdge
(
n
,
m
);
e
=
e
==
null
?
((
HierarchicalMixedGraph
)
mixedGraph
).
getMetaEdge
(
n
,
m
)
:
e
;
writeEdge
(
e
,
j
<
nodes
.
length
-
1
);
}
Progress
.
progress
(
progressTicket
);
writer
.
append
(
EOL
);
writeMatrixNode
(
n
,
true
);
for
(
int
j
=
0
;
j
<
nodes
.
length
;
j
++)
{
Node
m
=
nodes
[
j
];
Edge
e
=
graph
.
getEdge
(
n
,
m
);
writeEdge
(
e
,
j
<
nodes
.
length
-
1
);
}
Progress
.
progress
(
progressTicket
);
writer
.
append
(
EOL
);
}
}
...
...
@@ -205,9 +161,9 @@ public class ExporterCSV implements GraphExporter, CharacterExporter, LongTask {
private
void
writeEdge
(
Edge
edge
,
boolean
writeSeparator
)
throws
IOException
{
if
(
edge
!=
null
)
{
if
(
edgeWeight
)
{
writer
.
append
(
Float
.
toString
(
edge
.
getWeight
()));
writer
.
append
(
Double
.
toString
(
edge
.
getWeight
()));
}
else
{
writer
.
append
(
Float
.
toString
(
1
f
));
writer
.
append
(
Double
.
toString
(
1.0
));
}
if
(
writeSeparator
)
{
writer
.
append
(
SEPARATOR
);
...
...
@@ -225,11 +181,8 @@ public class ExporterCSV implements GraphExporter, CharacterExporter, LongTask {
private
void
writeMatrixNode
(
Node
node
,
boolean
writeSeparator
)
throws
IOException
{
if
(
header
)
{
String
label
=
node
.
getNodeData
().
getLabel
();
if
(
label
==
null
)
{
label
=
node
.
getNodeData
().
getId
();
}
writer
.
append
(
label
);
Object
label
=
node
.
getId
();
writer
.
append
(
label
.
toString
());
if
(
writeSeparator
)
{
writer
.
append
(
SEPARATOR
);
}
...
...
@@ -237,21 +190,20 @@ public class ExporterCSV implements GraphExporter, CharacterExporter, LongTask {
}
private
void
writeListNode
(
Node
node
,
boolean
writeSeparator
)
throws
IOException
{
String
label
=
node
.
getNodeData
().
getLabel
();
if
(
label
==
null
)
{
label
=
node
.
getNodeData
().
getId
();
}
writer
.
append
(
label
);
Object
label
=
node
.
getId
();
writer
.
append
(
label
.
toString
());
if
(
writeSeparator
)
{
writer
.
append
(
SEPARATOR
);
}
}
@Override
public
boolean
cancel
()
{
cancel
=
true
;
return
true
;
}
@Override
public
void
setProgressTicket
(
ProgressTicket
progressTicket
)
{
this
.
progressTicket
=
progressTicket
;
}
...
...
@@ -288,22 +240,27 @@ public class ExporterCSV implements GraphExporter, CharacterExporter, LongTask {
this
.
list
=
list
;
}
@Override
public
boolean
isExportVisible
()
{
return
exportVisible
;
}
@Override
public
void
setExportVisible
(
boolean
exportVisible
)
{
this
.
exportVisible
=
exportVisible
;
}
@Override
public
void
setWriter
(
Writer
writer
)
{
this
.
writer
=
writer
;
}
@Override
public
Workspace
getWorkspace
()
{
return
workspace
;
}
@Override
public
void
setWorkspace
(
Workspace
workspace
)
{
this
.
workspace
=
workspace
;
}
...
...
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterDL.java
浏览文件 @
2b2721f7
...
...
@@ -47,15 +47,14 @@ import java.util.HashMap;
import
java.util.HashSet
;
import
java.util.logging.Level
;
import
java.util.logging.Logger
;
import
org.gephi.data.attributes.api.AttributeModel
;
import
org.gephi.data.attributes.type.TimeInterval
;
import
org.gephi.dynamic.api.DynamicModel
;
import
org.gephi.attribute.api.AttributeModel
;
import
org.gephi.graph.api.*
;
import
org.gephi.io.exporter.spi.CharacterExporter
;
import
org.gephi.io.exporter.spi.GraphExporter
;
import
org.gephi.project.api.Workspace
;
import
org.gephi.utils.longtask.spi.LongTask
;
import
org.gephi.utils.progress.ProgressTicket
;
import
org.openide.util.Lookup
;
public
class
ExporterDL
implements
GraphExporter
,
CharacterExporter
,
LongTask
{
...
...
@@ -68,9 +67,8 @@ public class ExporterDL implements GraphExporter, CharacterExporter, LongTask {
ProgressTicket
progressTicket
;
private
boolean
useMatrixFormat
=
false
;
private
boolean
useListFormat
=
true
;
private
boolean
exportDynamicWeight
=
true
;
private
boolean
makeSymmetricMatrix
=
false
;
private
double
getLow
;
//time interval, used for getting edge weight in dynamic graphs
private
double
getHigh
;
public
boolean
isMakeSymmetricMatrix
()
{
return
makeSymmetricMatrix
;
...
...
@@ -109,8 +107,9 @@ public class ExporterDL implements GraphExporter, CharacterExporter, LongTask {
@Override
public
boolean
execute
()
{
progressTicket
.
start
();
attributeModel
=
workspace
.
getLookup
().
lookup
(
AttributeModel
.
class
);
graphModel
=
workspace
.
getLookup
().
lookup
(
GraphModel
.
class
);
GraphController
graphController
=
Lookup
.
getDefault
().
lookup
(
GraphController
.
class
);
attributeModel
=
graphController
.
getAttributeModel
(
workspace
);
graphModel
=
graphController
.
getGraphModel
(
workspace
);
Graph
graph
=
null
;
if
(
exportVisible
)
{
graph
=
graphModel
.
getGraphVisible
();
...
...
@@ -127,20 +126,10 @@ public class ExporterDL implements GraphExporter, CharacterExporter, LongTask {
if
(
cancel
)
{
break
;
}
useLabels
&=
(
nodeIterable
.
iterator
().
next
().
get
NodeData
().
get
Label
()
!=
null
);
useLabels
&=
(
nodeIterable
.
iterator
().
next
().
getLabel
()
!=
null
);
}
System
.
err
.
println
(
"use labels "
+
useLabels
);
//find borders of the interval for edge.getWeight(low, high). If it's a static graph, then (-inf, inf)
DynamicModel
dynamicModel
=
workspace
.
getLookup
().
lookup
(
DynamicModel
.
class
);
TimeInterval
visibleInterval
=
dynamicModel
!=
null
&&
exportVisible
?
dynamicModel
.
getVisibleInterval
()
:
new
TimeInterval
();
getLow
=
Double
.
NEGATIVE_INFINITY
;
getHigh
=
Double
.
POSITIVE_INFINITY
;
if
(
visibleInterval
!=
null
)
{
getLow
=
visibleInterval
.
getLow
();
getHigh
=
visibleInterval
.
getHigh
();
}
if
(!
cancel
)
{
try
{
if
(
useListFormat
)
{
...
...
@@ -174,22 +163,22 @@ public class ExporterDL implements GraphExporter, CharacterExporter, LongTask {
private
void
saveAsEdgeList1
(
boolean
useLabels
,
Graph
graph
)
throws
IOException
{
HashMap
<
Integer
,
String
>
idToLabel
=
new
HashMap
<
Integer
,
String
>();
//systemId to changed label
HashMap
<
Object
,
String
>
idToLabel
=
new
HashMap
<
Object
,
String
>();
//systemId to changed label
HashSet
<
String
>
labelUsed
=
new
HashSet
<
String
>();
//edgelist format forbids equal nodes
if
(
useLabels
)
{
for
(
Node
node
:
graph
.
getNodes
())
{
if
(
labelUsed
.
contains
(
node
.
get
NodeData
().
get
Label
()))
{
if
(
labelUsed
.
contains
(
node
.
getLabel
()))
{
for
(
int
i
=
0
;;
i
++)
{
if
(!
labelUsed
.
contains
(
node
.
get
NodeData
().
get
Label
()
+
"_"
+
i
))
{
idToLabel
.
put
(
node
.
getId
(),
node
.
get
NodeData
().
get
Label
()
+
"_"
+
i
);
labelUsed
.
add
(
node
.
get
NodeData
().
get
Label
()
+
"_"
+
i
);
if
(!
labelUsed
.
contains
(
node
.
getLabel
()
+
"_"
+
i
))
{
idToLabel
.
put
(
node
.
getId
(),
node
.
getLabel
()
+
"_"
+
i
);
labelUsed
.
add
(
node
.
getLabel
()
+
"_"
+
i
);
break
;
}
}
}
else
{
idToLabel
.
put
(
node
.
getId
(),
node
.
get
NodeData
().
get
Label
());
labelUsed
.
add
(
node
.
get
NodeData
().
get
Label
());
idToLabel
.
put
(
node
.
getId
(),
node
.
getLabel
());
labelUsed
.
add
(
node
.
getLabel
());
}
}
}
...
...
@@ -205,21 +194,29 @@ public class ExporterDL implements GraphExporter, CharacterExporter, LongTask {
break
;
}
Edge
edge
=
edgeIterator
.
iterator
().
next
();
double
weight
;
if
(
exportDynamicWeight
)
{
weight
=
edge
.
getWeight
(
graph
.
getView
());
}
else
{
weight
=
edge
.
getWeight
();
}
if
(
useLabels
)
{
writer
.
write
(
formatLabel
(
idToLabel
.
get
(
edge
.
getSource
().
getId
()),
false
)
+
" "
+
formatLabel
(
idToLabel
.
get
(
edge
.
getTarget
().
getId
()),
false
)
+
" "
+
edge
.
getWeight
(
getLow
,
getHigh
)
+
"\n"
);
+
formatLabel
(
idToLabel
.
get
(
edge
.
getTarget
().
getId
()),
false
)
+
" "
+
weight
+
"\n"
);
}
else
{
writer
.
write
(
formatLabel
(
edge
.
getSource
().
get
NodeData
().
getId
(),
false
)
+
" "
+
formatLabel
(
edge
.
getTarget
().
get
NodeData
().
getId
(),
false
)
+
" "
+
edge
.
getWeight
(
getLow
,
getHigh
)
+
"\n"
);
writer
.
write
(
formatLabel
(
edge
.
getSource
().
get
Id
().
toString
(),
false
)
+
" "
+
formatLabel
(
edge
.
getTarget
().
get
Id
().
toString
(),
false
)
+
" "
+
weight
+
"\n"
);
}
if
(!
edge
.
isDirected
())
{
if
(
useLabels
)
{
writer
.
write
(
formatLabel
(
idToLabel
.
get
(
edge
.
getTarget
().
getId
()),
false
)
+
" "
+
formatLabel
(
idToLabel
.
get
(
edge
.
getSource
().
getId
()),
false
)
+
" "
+
edge
.
getWeight
(
getLow
,
getHigh
)
+
"\n"
);
+
formatLabel
(
idToLabel
.
get
(
edge
.
getSource
().
getId
()),
false
)
+
" "
+
weight
+
"\n"
);
}
else
{
writer
.
write
(
formatLabel
(
edge
.
getTarget
().
get
NodeData
().
getId
(),
false
)
+
" "
+
formatLabel
(
edge
.
getSource
().
get
NodeData
().
getId
(),
false
)
+
" "
+
edge
.
getWeight
(
getLow
,
getHigh
)
+
"\n"
);
writer
.
write
(
formatLabel
(
edge
.
getTarget
().
get
Id
().
toString
(),
false
)
+
" "
+
formatLabel
(
edge
.
getSource
().
get
Id
().
toString
(),
false
)
+
" "
+
weight
+
"\n"
);
}
}
}
...
...
@@ -250,7 +247,13 @@ public class ExporterDL implements GraphExporter, CharacterExporter, LongTask {
int
maxLengthOfEdgeWeight
=
0
;
if
(
makeSymmetricMatrix
)
{
for
(
Edge
edge
:
graph
.
getEdges
())
{
maxLengthOfEdgeWeight
=
Math
.
max
(
maxLengthOfEdgeWeight
,
Double
.
toString
(
edge
.
getWeight
(
getLow
,
getHigh
)).
length
());
double
weight
;
if
(
exportDynamicWeight
)
{
weight
=
edge
.
getWeight
(
graph
.
getView
());
}
else
{
weight
=
edge
.
getWeight
();
}
maxLengthOfEdgeWeight
=
Math
.
max
(
maxLengthOfEdgeWeight
,
Double
.
toString
(
weight
).
length
());
}
}
...
...
@@ -261,9 +264,9 @@ public class ExporterDL implements GraphExporter, CharacterExporter, LongTask {
}
if
(
useLabels
)
{
writer
.
write
(
formatLabel
(
idToNode
.
get
(
i
).
get
NodeData
().
get
Label
(),
true
));
writer
.
write
(
formatLabel
(
idToNode
.
get
(
i
).
getLabel
(),
true
));
}
else
{
writer
.
write
(
formatLabel
(
idToNode
.
get
(
i
).
get
NodeData
().
getId
(),
true
));
writer
.
write
(
formatLabel
(
idToNode
.
get
(
i
).
get
Id
().
toString
(),
true
));
}
}
writer
.
write
(
"\n"
);
...
...
@@ -280,10 +283,13 @@ public class ExporterDL implements GraphExporter, CharacterExporter, LongTask {
}
Node
target
=
idToNode
.
get
(
j
);
double
weight
=
0
;
if
(
graph
.
getEdge
(
source
,
target
)
!=
null
)
{
weight
=
graph
.
getEdge
(
source
,
target
).
getWeight
(
getLow
,
getHigh
);
}
else
if
(
graph
.
getEdge
(
target
,
source
)
!=
null
&&
!
graph
.
getEdge
(
target
,
source
).
isDirected
())
{
weight
=
graph
.
getEdge
(
target
,
source
).
getWeight
(
getLow
,
getHigh
);
Edge
edge
=
graph
.
getEdge
(
source
,
target
);
if
(
edge
!=
null
)
{
if
(
exportDynamicWeight
)
{
weight
=
edge
.
getWeight
(
graph
.
getView
());
}
else
{
weight
=
edge
.
getWeight
();
}
}
writer
.
write
(
Double
.
toString
(
weight
)
+
" "
);
if
(
makeSymmetricMatrix
)
{
...
...
@@ -306,4 +312,4 @@ public class ExporterDL implements GraphExporter, CharacterExporter, LongTask {
public
void
setProgressTicket
(
ProgressTicket
progressTicket
)
{
this
.
progressTicket
=
progressTicket
;
}
}
\ No newline at end of file
}
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterGDF.java
浏览文件 @
2b2721f7
此差异已折叠。
点击以展开。
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterGEXF.java
浏览文件 @
2b2721f7
此差异已折叠。
点击以展开。
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterGML.java
浏览文件 @
2b2721f7
...
...
@@ -43,12 +43,11 @@ package org.gephi.io.exporter.plugin;
import
java.io.IOException
;
import
java.io.Writer
;
import
org.gephi.data.attributes.api.AttributeModel
;
import
org.gephi.data.attributes.type.TimeInterval
;
import
org.gephi.dynamic.DynamicUtilities
;
import
org.gephi.dynamic.api.DynamicModel
;
import
org.gephi.attribute.api.AttributeModel
;
import
org.gephi.attribute.api.Column
;
import
org.gephi.graph.api.Edge
;
import
org.gephi.graph.api.Graph
;
import
org.gephi.graph.api.GraphController
;
import
org.gephi.graph.api.GraphModel
;
import
org.gephi.graph.api.Node
;
import
org.gephi.io.exporter.spi.CharacterExporter
;
...
...
@@ -57,6 +56,7 @@ import org.gephi.project.api.Workspace;
import
org.gephi.utils.longtask.spi.LongTask
;
import
org.gephi.utils.progress.ProgressTicket
;
import
org.openide.util.Exceptions
;
import
org.openide.util.Lookup
;
/**
*
...
...
@@ -66,11 +66,10 @@ public class ExporterGML implements GraphExporter, CharacterExporter, LongTask {
private
boolean
exportVisible
=
false
;
private
Workspace
workspace
;
private
Writer
writer
;
private
GraphModel
graphModel
;
private
AttributeModel
attributeModel
;
private
Writer
writer
;
private
ProgressTicket
progressTicket
;
private
TimeInterval
visibleInterval
;
private
boolean
cancel
=
false
;
//options
private
int
spaces
=
2
;
...
...
@@ -79,6 +78,7 @@ public class ExporterGML implements GraphExporter, CharacterExporter, LongTask {
private
boolean
exportCoordinates
=
true
;
private
boolean
exportNodeSize
=
true
;
private
boolean
exportEdgeSize
=
true
;
private
boolean
exportDynamicWeight
=
true
;
private
boolean
exportColor
=
true
;
private
boolean
exportNotRecognizedElements
=
true
;
//data to normalize
...
...
@@ -87,9 +87,6 @@ public class ExporterGML implements GraphExporter, CharacterExporter, LongTask {
double
minY
,
maxY
;
double
minZ
,
maxZ
;
double
minSize
,
maxSize
;
private
double
getLow
;
//borders for dynamic edge weight
private
double
getHigh
;
public
boolean
isNormalize
()
{
return
normalize
;
...
...
@@ -99,35 +96,29 @@ public class ExporterGML implements GraphExporter, CharacterExporter, LongTask {
this
.
normalize
=
normalize
;
}
@Override
public
void
setExportVisible
(
boolean
exportVisible
)
{
this
.
exportVisible
=
exportVisible
;
}
@Override
public
boolean
isExportVisible
()
{
return
exportVisible
;
}
@Override
public
boolean
execute
()
{
attributeModel
=
workspace
.
getLookup
().
lookup
(
AttributeModel
.
class
);
graphModel
=
workspace
.
getLookup
().
lookup
(
GraphModel
.
class
);
Graph
graph
;
GraphController
graphController
=
Lookup
.
getDefault
().
lookup
(
GraphController
.
class
);
graphModel
=
graphController
.
getGraphModel
(
workspace
);
attributeModel
=
graphController
.
getAttributeModel
(
workspace
);
Graph
graph
=
null
;
if
(
exportVisible
)
{
graph
=
graphModel
.
getGraphVisible
();
}
else
{
graph
=
graphModel
.
getGraph
();
}
progressTicket
.
start
(
graph
.
getNodeCount
()
+
graph
.
getEdgeCount
());
DynamicModel
dynamicModel
=
workspace
.
getLookup
().
lookup
(
DynamicModel
.
class
);
visibleInterval
=
dynamicModel
!=
null
&&
exportVisible
?
dynamicModel
.
getVisibleInterval
()
:
new
TimeInterval
();
getLow
=
Double
.
NEGATIVE_INFINITY
;
//whole interval, if graph is not dynamic
getHigh
=
Double
.
POSITIVE_INFINITY
;
if
(
visibleInterval
!=
null
)
{
getLow
=
visibleInterval
.
getLow
();
getHigh
=
visibleInterval
.
getHigh
();
}
graph
.
readLock
();
if
(
normalize
)
{
...
...
@@ -143,7 +134,7 @@ public class ExporterGML implements GraphExporter, CharacterExporter, LongTask {
graph
.
readUnlock
();
return
!
cancel
;
}
private
void
printOpen
(
String
s
)
throws
IOException
{
for
(
int
i
=
0
;
i
<
currentSpaces
;
i
++)
{
writer
.
write
(
' '
);
...
...
@@ -177,38 +168,42 @@ public class ExporterGML implements GraphExporter, CharacterExporter, LongTask {
private
void
exportData
(
Graph
graph
)
throws
IOException
{
printOpen
(
"graph"
);
printTag
(
"Creator Gephi"
);
if
(
graph
.
getGraphModel
().
isDirect
ed
())
{
if
(
graph
.
isDirected
()
||
graph
.
isMix
ed
())
{
printTag
(
"directed 1"
);
}
else
if
(
graph
.
getGraphModel
().
isUndirected
())
{
}
else
if
(
graph
.
isUndirected
())
{
printTag
(
"directed 0"
);
}
for
(
Node
node
:
graph
.
getNodes
())
{
if
(
cancel
)
{
break
;
}
printNode
(
node
);
printNode
(
node
,
graph
);
}
for
(
Edge
edge
:
graph
.
getEdges
())
{
if
(
cancel
)
{
break
;
}
printEdge
(
edge
,
graph
.
getGraphModel
().
isMixed
()
);
printEdge
(
edge
,
graph
);
}
printClose
();
}
private
void
printEdge
(
Edge
edge
,
boolean
graphMixed
)
throws
IOException
{
private
void
printEdge
(
Edge
edge
,
Graph
graph
)
throws
IOException
{
printOpen
(
"edge"
);
printTag
(
"id "
+
edge
.
getId
());
printTag
(
"source "
+
edge
.
getSource
().
getId
());
printTag
(
"target "
+
edge
.
getTarget
().
getId
());
if
(
exportLabel
&&
edge
.
get
EdgeData
().
get
Label
()
!=
null
)
{
printTag
(
"label \""
+
edge
.
get
EdgeData
().
get
Label
()
+
"\""
);
if
(
exportLabel
&&
edge
.
getLabel
()
!=
null
)
{
printTag
(
"label \""
+
edge
.
getLabel
()
+
"\""
);
}
if
(
exportEdgeSize
)
{
printTag
(
"value "
+
edge
.
getWeight
(
getLow
,
getHigh
));
if
(
exportDynamicWeight
)
{
printTag
(
"value "
+
edge
.
getWeight
(
graph
.
getView
()));
}
else
{
printTag
(
"value "
+
edge
.
getWeight
());
}
}
if
(
graph
Mixed
)
{
//if graph not mixed, then all edges have the same direction, described earlier
if
(
graph
.
isMixed
()
)
{
//if graph not mixed, then all edges have the same direction, described earlier
if
(
edge
.
isDirected
())
{
printTag
(
"directed 1"
);
}
else
if
(!
edge
.
isDirected
())
{
...
...
@@ -217,14 +212,12 @@ public class ExporterGML implements GraphExporter, CharacterExporter, LongTask {
}
if
(
exportNotRecognizedElements
)
{
for
(
int
i
=
0
;
i
<
edge
.
getAttributes
().
countValues
();
i
++)
{
String
s
=
attributeModel
.
getEdgeTable
().
getColumn
(
i
).
getTitle
();
//don't print again standart attributes
if
(
edge
.
getAttributes
().
getValue
(
i
)
!=
null
&&
!
s
.
equals
(
"Weight"
)
&&
!
s
.
equals
(
"Id"
)
&&
!
s
.
equals
(
"Time Interval"
)
&&
DynamicUtilities
.
getDynamicValue
(
edge
.
getAttributes
().
getValue
(
i
),
visibleInterval
.
getLow
(),
visibleInterval
.
getHigh
())
!=
null
)
{
printTag
(
formatTitle
(
s
)
+
" \""
+
formatValue
(
edge
.
getAttributes
().
getValue
(
i
))
+
"\""
);
for
(
Column
col
:
attributeModel
.
getEdgeTable
())
{
if
(!
col
.
isProperty
())
{
Object
value
=
edge
.
getAttribute
(
col
,
graph
.
getView
());
if
(
value
!=
null
)
{
printTag
(
formatTitle
(
col
.
getTitle
())
+
" \""
+
formatValue
(
value
)
+
"\""
);
}
}
}
}
...
...
@@ -233,51 +226,48 @@ public class ExporterGML implements GraphExporter, CharacterExporter, LongTask {
progressTicket
.
progress
();
}
private
void
printNode
(
Node
node
)
throws
IOException
{
private
void
printNode
(
Node
node
,
Graph
graph
)
throws
IOException
{
printOpen
(
"node"
);
printTag
(
"id "
+
node
.
getId
());
if
(
exportLabel
&&
node
.
get
NodeData
().
get
Label
()
!=
null
)
{
printTag
(
"label \""
+
node
.
get
NodeData
().
get
Label
()
+
"\""
);
if
(
exportLabel
&&
node
.
getLabel
()
!=
null
)
{
printTag
(
"label \""
+
node
.
getLabel
()
+
"\""
);
}
if
(
exportCoordinates
||
exportNodeSize
||
exportColor
)
{
printOpen
(
"graphics"
);
if
(
exportCoordinates
)
{
if
(!
normalize
)
{
printTag
(
"x "
+
node
.
getNodeData
().
x
());
printTag
(
"y "
+
node
.
getNodeData
().
y
());
printTag
(
"z "
+
node
.
getNodeData
().
z
());
printTag
(
"x "
+
node
.
x
());
printTag
(
"y "
+
node
.
y
());
printTag
(
"z "
+
node
.
z
());
}
else
{
printTag
(
"x "
+
(
node
.
getNodeData
().
x
()
-
minX
)
/
(
maxX
-
minX
));
printTag
(
"y "
+
(
node
.
getNodeData
().
y
()
-
minY
)
/
(
maxY
-
minY
));
printTag
(
"z "
+
(
node
.
getNodeData
().
z
()
-
minZ
)
/
(
maxZ
-
minZ
));
printTag
(
"x "
+
(
node
.
x
()
-
minX
)
/
(
maxX
-
minX
));
printTag
(
"y "
+
(
node
.
y
()
-
minY
)
/
(
maxY
-
minY
));
printTag
(
"z "
+
(
node
.
z
()
-
minZ
)
/
(
maxZ
-
minZ
));
}
}
if
(
exportNodeSize
)
{
if
(!
normalize
)
{
printTag
(
"w "
+
node
.
getNodeData
().
getS
ize
());
printTag
(
"h "
+
node
.
getNodeData
().
getS
ize
());
printTag
(
"d "
+
node
.
getNodeData
().
getS
ize
());
printTag
(
"w "
+
node
.
s
ize
());
printTag
(
"h "
+
node
.
s
ize
());
printTag
(
"d "
+
node
.
s
ize
());
}
else
{
printTag
(
"w "
+
(
node
.
getNodeData
().
getS
ize
()
-
minSize
)
/
(
maxSize
-
minSize
));
printTag
(
"h "
+
(
node
.
getNodeData
().
getS
ize
()
-
minSize
)
/
(
maxSize
-
minSize
));
printTag
(
"d "
+
(
node
.
getNodeData
().
getS
ize
()
-
minSize
)
/
(
maxSize
-
minSize
));
printTag
(
"w "
+
(
node
.
s
ize
()
-
minSize
)
/
(
maxSize
-
minSize
));
printTag
(
"h "
+
(
node
.
s
ize
()
-
minSize
)
/
(
maxSize
-
minSize
));
printTag
(
"d "
+
(
node
.
s
ize
()
-
minSize
)
/
(
maxSize
-
minSize
));
}
}
if
(
exportColor
)
{
printTag
(
"fill \"#"
+
Integer
.
toString
((
int
)
(
node
.
getNodeData
().
r
()
*
255
),
16
)
+
Integer
.
toString
((
int
)
(
node
.
g
etNodeData
().
g
()
*
255
),
16
)
+
Integer
.
toString
((
int
)
(
node
.
getNodeData
()
.
b
()
*
255
),
16
)
+
"\""
);
printTag
(
"fill \"#"
+
Integer
.
toString
((
int
)
(
node
.
r
()
*
255
),
16
)
+
Integer
.
toString
((
int
)
(
node
.
g
()
*
255
),
16
)
+
Integer
.
toString
((
int
)
(
node
.
b
()
*
255
),
16
)
+
"\""
);
}
printClose
();
}
if
(
exportNotRecognizedElements
)
{
for
(
int
i
=
0
;
i
<
node
.
getAttributes
().
countValues
();
i
++)
{
if
(
node
.
getAttributes
().
getValue
(
i
)
!=
null
)
{
String
s
=
attributeModel
.
getNodeTable
().
getColumn
(
i
).
getTitle
();
//don't print again standart attributes
if
(!
s
.
equals
(
"d"
)
&&
!
s
.
equals
(
"Label"
)
&&
!
s
.
equals
(
"Id"
)
&&
!
s
.
equals
(
"Time Interval"
)
&&
DynamicUtilities
.
getDynamicValue
(
node
.
getAttributes
().
getValue
(
i
),
visibleInterval
.
getLow
(),
visibleInterval
.
getHigh
())
!=
null
)
{
printTag
(
formatTitle
(
s
)
+
" \""
+
formatValue
(
node
.
getAttributes
().
getValue
(
i
))
+
"\""
);
for
(
Column
col
:
attributeModel
.
getNodeTable
())
{
if
(!
col
.
isProperty
())
{
Object
value
=
node
.
getAttribute
(
col
,
graph
.
getView
());
if
(
value
!=
null
)
{
printTag
(
formatTitle
(
col
.
getTitle
())
+
" \""
+
formatValue
(
value
)
+
"\""
);
}
}
}
...
...
@@ -286,23 +276,28 @@ public class ExporterGML implements GraphExporter, CharacterExporter, LongTask {
progressTicket
.
progress
();
}
@Override
public
void
setWorkspace
(
Workspace
workspace
)
{
this
.
workspace
=
workspace
;
}
@Override
public
Workspace
getWorkspace
()
{
return
workspace
;
}
@Override
public
void
setWriter
(
Writer
writer
)
{
this
.
writer
=
writer
;
}
@Override
public
boolean
cancel
()
{
cancel
=
true
;
return
true
;
}
@Override
public
void
setProgressTicket
(
ProgressTicket
progressTicket
)
{
this
.
progressTicket
=
progressTicket
;
}
...
...
@@ -378,16 +373,16 @@ public class ExporterGML implements GraphExporter, CharacterExporter, LongTask {
if
(
cancel
)
{
break
;
}
minX
=
Math
.
min
(
minX
,
node
.
getNodeData
().
x
());
minY
=
Math
.
min
(
minY
,
node
.
getNodeData
().
y
());
minZ
=
Math
.
min
(
minZ
,
node
.
getNodeData
().
z
());
minX
=
Math
.
min
(
minX
,
node
.
x
());
minY
=
Math
.
min
(
minY
,
node
.
y
());
minZ
=
Math
.
min
(
minZ
,
node
.
z
());
maxX
=
Math
.
max
(
maxX
,
node
.
getNodeData
().
x
());
maxY
=
Math
.
max
(
maxY
,
node
.
getNodeData
().
y
());
maxZ
=
Math
.
max
(
maxZ
,
node
.
getNodeData
().
z
());
maxX
=
Math
.
max
(
maxX
,
node
.
x
());
maxY
=
Math
.
max
(
maxY
,
node
.
y
());
maxZ
=
Math
.
max
(
maxZ
,
node
.
z
());
minSize
=
Math
.
min
(
minSize
,
node
.
getNodeData
().
getS
ize
());
maxSize
=
Math
.
max
(
maxSize
,
node
.
getNodeData
().
getS
ize
());
minSize
=
Math
.
min
(
minSize
,
node
.
s
ize
());
maxSize
=
Math
.
max
(
maxSize
,
node
.
s
ize
());
}
}
...
...
@@ -403,14 +398,7 @@ public class ExporterGML implements GraphExporter, CharacterExporter, LongTask {
}
private
String
formatValue
(
Object
obj
)
{
System
.
err
.
println
(
"tos "
+
obj
.
toString
());
String
res
;
if
(
visibleInterval
!=
null
)
{
//dynamic value could be null, if it doesn't exist in visibleInterval, but such cases are filtered higher
res
=
DynamicUtilities
.
getDynamicValue
(
obj
,
visibleInterval
.
getLow
(),
visibleInterval
.
getHigh
()).
toString
();
}
else
{
res
=
obj
.
toString
();
}
String
res
=
obj
.
toString
();
return
res
.
replace
(
"\r\n"
,
" "
).
replace
(
"\n"
,
" "
).
replace
(
'\"'
,
' '
);
//remove " and line feeds
}
}
\ No newline at end of file
}
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterGraphML.java
浏览文件 @
2b2721f7
此差异已折叠。
点击以展开。
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterPajek.java
浏览文件 @
2b2721f7
/*
Copyright 2008-2011 Gephi
Authors : Daniel Bernardes <daniel.bernardes@polytechnique.edu>
Website : http://www.gephi.org
This file is part of Gephi.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
Copyright 2011 Gephi Consortium. All rights reserved.
The contents of this file are subject to the terms of either the GNU
General Public License Version 3 only ("GPL") or the Common
Development and Distribution License("CDDL") (collectively, the
"License"). You may not use this file except in compliance with the
License. You can obtain a copy of the License at
http://gephi.org/about/legal/license-notice/
or /cddl-1.0.txt and /gpl-3.0.txt. See the License for the
specific language governing permissions and limitations under the
License. When distributing the software, include this License Header
Notice in each file and include the License files at
/cddl-1.0.txt and /gpl-3.0.txt. If applicable, add the following below the
License Header, with the fields enclosed by brackets [] replaced by
your own identifying information:
"Portions Copyrighted [year] [name of copyright owner]"
If you wish your version of this file to be governed by only the CDDL
or only the GPL Version 3, indicate your decision by adding
"[Contributor] elects to include this software in this distribution
under the [CDDL or GPL Version 3] license." If you do not indicate a
single choice of license, a recipient has the option to distribute
your version of this file under either the CDDL, the GPL Version 3 or
to extend the choice of license to its licensees as provided above.
However, if you add GPL Version 3 code and therefore, elected the GPL
Version 3 license, then the option applies only if the new code is
made subject to such option by the copyright holder.
Contributor(s):
Portions Copyrighted 2011 Gephi Consortium.
Copyright 2008-2011 Gephi
Authors : Daniel Bernardes <daniel.bernardes@polytechnique.edu>
Website : http://www.gephi.org
This file is part of Gephi.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
Copyright 2011 Gephi Consortium. All rights reserved.
The contents of this file are subject to the terms of either the GNU
General Public License Version 3 only ("GPL") or the Common
Development and Distribution License("CDDL") (collectively, the
"License"). You may not use this file except in compliance with the
License. You can obtain a copy of the License at
http://gephi.org/about/legal/license-notice/
or /cddl-1.0.txt and /gpl-3.0.txt. See the License for the
specific language governing permissions and limitations under the
License. When distributing the software, include this License Header
Notice in each file and include the License files at
/cddl-1.0.txt and /gpl-3.0.txt. If applicable, add the following below the
License Header, with the fields enclosed by brackets [] replaced by
your own identifying information:
"Portions Copyrighted [year] [name of copyright owner]"
If you wish your version of this file to be governed by only the CDDL
or only the GPL Version 3, indicate your decision by adding
"[Contributor] elects to include this software in this distribution
under the [CDDL or GPL Version 3] license." If you do not indicate a
single choice of license, a recipient has the option to distribute
your version of this file under either the CDDL, the GPL Version 3 or
to extend the choice of license to its licensees as provided above.
However, if you add GPL Version 3 code and therefore, elected the GPL
Version 3 license, then the option applies only if the new code is
made subject to such option by the copyright holder.
Contributor(s):
Portions Copyrighted 2011 Gephi Consortium.
*/
package
org.gephi.io.exporter.plugin
;
import
java.io.Writer
;
import
java.util.HashMap
;
import
org.gephi.graph.api.Edge
;
import
org.gephi.graph.api.Graph
;
import
org.gephi.graph.api.GraphModel
;
import
org.gephi.graph.api.HierarchicalGraph
;
import
org.gephi.graph.api.Node
;
import
org.gephi.graph.api.UndirectedGraph
;
import
org.gephi.io.exporter.api.FileType
;
...
...
@@ -72,11 +72,11 @@ public class ExporterPajek implements GraphExporter, CharacterExporter, LongTask
private
boolean
exportVisible
;
private
boolean
cancel
=
false
;
private
ProgressTicket
progressTicket
;
public
void
setExportEdgeWeight
(
boolean
exportEdgeWeight
)
{
this
.
exportEdgeWeight
=
exportEdgeWeight
;
}
public
boolean
isExportEdgeWeight
()
{
return
exportEdgeWeight
;
}
...
...
@@ -84,40 +84,47 @@ public class ExporterPajek implements GraphExporter, CharacterExporter, LongTask
public
void
setExportPosition
(
boolean
exportPosition
)
{
this
.
exportPosition
=
exportPosition
;
}
public
boolean
isExportPosition
()
{
return
exportPosition
;
}
@Override
public
boolean
cancel
()
{
cancel
=
true
;
return
true
;
}
@Override
public
void
setProgressTicket
(
ProgressTicket
progressTicket
)
{
this
.
progressTicket
=
progressTicket
;
}
@Override
public
boolean
isExportVisible
()
{
return
exportVisible
;
}
@Override
public
void
setExportVisible
(
boolean
exportVisible
)
{
this
.
exportVisible
=
exportVisible
;
}
@Override
public
void
setWriter
(
Writer
writer
)
{
this
.
writer
=
writer
;
}
@Override
public
Workspace
getWorkspace
()
{
return
workspace
;
}
@Override
public
void
setWorkspace
(
Workspace
workspace
)
{
this
.
workspace
=
workspace
;
}
public
String
getName
()
{
return
NbBundle
.
getMessage
(
getClass
(),
"ExporterPajek_name"
);
}
...
...
@@ -127,13 +134,14 @@ public class ExporterPajek implements GraphExporter, CharacterExporter, LongTask
return
new
FileType
[]{
ft
};
}
@Override
public
boolean
execute
()
{
GraphModel
graphModel
=
workspace
.
getLookup
().
lookup
(
GraphModel
.
class
);
Hierarchical
Graph
graph
=
null
;
Graph
graph
=
null
;
if
(
exportVisible
)
{
graph
=
graphModel
.
get
Hierarchical
GraphVisible
();
graph
=
graphModel
.
getGraphVisible
();
}
else
{
graph
=
graphModel
.
get
Hierarchical
Graph
();
graph
=
graphModel
.
getGraph
();
}
try
{
exportData
(
graph
);
...
...
@@ -144,9 +152,9 @@ public class ExporterPajek implements GraphExporter, CharacterExporter, LongTask
return
!
cancel
;
}
private
void
exportData
(
Hierarchical
Graph
graph
)
throws
Exception
{
int
max
=
graph
.
getNodeCount
(),
i
=
1
;
HashMap
<
String
,
Integer
>
idx
=
new
HashMap
<
String
,
Integer
>(
3
*
max
/
2
+
1
);
private
void
exportData
(
Graph
graph
)
throws
Exception
{
int
max
=
graph
.
getNodeCount
(),
i
=
1
;
HashMap
<
String
,
Integer
>
idx
=
new
HashMap
<
String
,
Integer
>(
3
*
max
/
2
+
1
);
Progress
.
start
(
progressTicket
,
max
);
graph
.
readLock
();
...
...
@@ -155,12 +163,12 @@ public class ExporterPajek implements GraphExporter, CharacterExporter, LongTask
for
(
Node
node
:
graph
.
getNodes
())
{
writer
.
append
(
Integer
.
toString
(
i
));
writer
.
append
(
" \""
+
node
.
get
NodeData
().
get
Label
()
+
"\""
);
if
(
exportPosition
)
{
writer
.
append
(
" "
+
node
.
getNodeData
().
x
()+
" "
+
node
.
getNodeData
().
y
()+
" "
+
node
.
getNodeData
()
.
z
());
writer
.
append
(
" \""
+
node
.
getLabel
()
+
"\""
);
if
(
exportPosition
)
{
writer
.
append
(
" "
+
node
.
x
()
+
" "
+
node
.
y
()
+
" "
+
node
.
z
());
}
writer
.
append
(
"\n"
);
idx
.
put
(
node
.
get
NodeData
().
getId
(),
i
++);
// assigns Ids from the interval [1..max]
idx
.
put
(
node
.
get
Id
().
toString
(),
i
++);
// assigns Ids from the interval [1..max]
}
if
(
graph
instanceof
UndirectedGraph
)
{
...
...
@@ -169,13 +177,13 @@ public class ExporterPajek implements GraphExporter, CharacterExporter, LongTask
writer
.
append
(
"*Arcs\n"
);
}
for
(
Edge
edge
:
graph
.
getEdges
AndMetaEdges
())
{
for
(
Edge
edge
:
graph
.
getEdges
())
{
if
(
cancel
)
{
break
;
}
if
(
edge
!=
null
)
{
writer
.
append
(
Integer
.
toString
(
idx
.
get
(
edge
.
getSource
().
get
NodeData
().
getId
()))
+
" "
);
writer
.
append
(
Integer
.
toString
(
idx
.
get
(
edge
.
getTarget
().
get
NodeData
().
getId
())));
writer
.
append
(
Integer
.
toString
(
idx
.
get
(
edge
.
getSource
().
get
Id
().
toString
()))
+
" "
);
writer
.
append
(
Integer
.
toString
(
idx
.
get
(
edge
.
getTarget
().
get
Id
().
toString
())));
if
(
exportEdgeWeight
)
{
writer
.
append
(
" "
+
edge
.
getWeight
());
}
...
...
@@ -189,5 +197,4 @@ public class ExporterPajek implements GraphExporter, CharacterExporter, LongTask
Progress
.
finish
(
progressTicket
);
}
}
modules/ExportPlugin/src/main/java/org/gephi/io/exporter/plugin/ExporterVNA.java
浏览文件 @
2b2721f7
...
...
@@ -43,11 +43,8 @@ package org.gephi.io.exporter.plugin;
import
java.io.IOException
;
import
java.io.Writer
;
import
java.util.Arrays
;
import
org.gephi.data.attributes.api.AttributeModel
;
import
org.gephi.data.attributes.type.TimeInterval
;
import
org.gephi.dynamic.DynamicUtilities
;
import
org.gephi.dynamic.api.DynamicModel
;
import
org.gephi.attribute.api.AttributeModel
;
import
org.gephi.attribute.api.Column
;
import
org.gephi.graph.api.Edge
;
import
org.gephi.graph.api.Graph
;
import
org.gephi.graph.api.GraphModel
;
...
...
@@ -68,15 +65,14 @@ public class ExporterVNA implements GraphExporter, CharacterExporter, LongTask {
private
Workspace
workspace
;
private
boolean
cancel
=
false
;
private
ProgressTicket
progressTicket
;
private
TimeInterval
visibleInterval
;
private
AttributeModel
attributeModel
;
private
DynamicModel
dynamicModel
;
//settings
private
boolean
exportEdgeWeight
=
true
;
private
boolean
exportCoords
=
true
;
private
boolean
exportSize
=
true
;
private
boolean
exportShortLabel
=
true
;
private
boolean
exportColor
=
true
;
private
boolean
exportDynamicWeight
=
true
;
private
boolean
exportAttributes
=
true
;
private
boolean
normalize
=
false
;
private
Writer
writer
;
...
...
@@ -91,14 +87,17 @@ public class ExporterVNA implements GraphExporter, CharacterExporter, LongTask {
private
double
getLow
;
//borders for dynamic edge weight
private
double
getHigh
;
@Override
public
void
setExportVisible
(
boolean
exportVisible
)
{
this
.
exportVisible
=
exportVisible
;
}
@Override
public
boolean
isExportVisible
()
{
return
exportVisible
;
}
@Override
public
boolean
execute
()
{
attributeModel
=
workspace
.
getLookup
().
lookup
(
AttributeModel
.
class
);
GraphModel
graphModel
=
workspace
.
getLookup
().
lookup
(
GraphModel
.
class
);
...
...
@@ -108,15 +107,6 @@ public class ExporterVNA implements GraphExporter, CharacterExporter, LongTask {
}
else
{
graph
=
graphModel
.
getGraph
();
}
dynamicModel
=
workspace
.
getLookup
().
lookup
(
DynamicModel
.
class
);
visibleInterval
=
dynamicModel
!=
null
&&
exportVisible
?
dynamicModel
.
getVisibleInterval
()
:
new
TimeInterval
();
getLow
=
Double
.
NEGATIVE_INFINITY
;
//whole interval, if graph is not dynamic
getHigh
=
Double
.
POSITIVE_INFINITY
;
if
(
visibleInterval
!=
null
)
{
getLow
=
visibleInterval
.
getLow
();
getHigh
=
visibleInterval
.
getHigh
();
}
graph
.
readLock
();
...
...
@@ -152,8 +142,7 @@ public class ExporterVNA implements GraphExporter, CharacterExporter, LongTask {
/*
* For non-standart and string attributes
*/
private
String
printParameter
(
Object
s
)
{
Object
val
=
DynamicUtilities
.
getDynamicValue
(
s
,
visibleInterval
.
getLow
(),
visibleInterval
.
getHigh
());
private
String
printParameter
(
Object
val
)
{
if
(
val
==
null
)
{
return
valueForEmptyAttributes
;
}
...
...
@@ -164,13 +153,10 @@ public class ExporterVNA implements GraphExporter, CharacterExporter, LongTask {
return
res
;
}
}
//sorted arrays
static
final
private
String
[]
standartNodeAttributes
=
{
"Id"
,
"Label"
,
"Time Interval"
};
static
final
private
String
[]
standartEdgeAttributes
=
{
"Id"
,
"Label"
,
"Time Interval"
,
"Weight"
};
private
boolean
atLeastOneNonStandartAttribute
()
{
for
(
int
i
=
0
;
i
<
attributeModel
.
getNodeTable
().
getColumns
().
length
;
i
++
)
{
if
(
Arrays
.
binarySearch
(
standartNodeAttributes
,
attributeModel
.
getNodeTable
().
getColumn
(
i
).
getTitle
())
<
0
)
{
for
(
Column
col
:
attributeModel
.
getNodeTable
()
)
{
if
(
!
col
.
isProperty
()
)
{
return
true
;
}
}
...
...
@@ -184,10 +170,9 @@ public class ExporterVNA implements GraphExporter, CharacterExporter, LongTask {
//header
stringBuilder
.
append
(
"*Node data\n"
);
stringBuilder
.
append
(
"ID"
);
for
(
int
i
=
0
;
i
<
attributeModel
.
getNodeTable
().
getColumns
().
length
;
i
++)
{
if
(
Arrays
.
binarySearch
(
standartNodeAttributes
,
attributeModel
.
getNodeTable
().
getColumn
(
i
).
getTitle
())
<
0
)
//ignore standart
{
stringBuilder
.
append
(
" "
).
append
(
attributeModel
.
getNodeTable
().
getColumn
(
i
).
getTitle
().
replace
(
' '
,
'_'
).
toString
());
for
(
Column
column
:
attributeModel
.
getNodeTable
())
{
if
(!
column
.
isProperty
())
{
stringBuilder
.
append
(
" "
).
append
(
column
.
getTitle
().
replace
(
' '
,
'_'
).
toString
());
//replace spaces because importer can't read attributes titles in quotes
}
}
...
...
@@ -199,13 +184,12 @@ public class ExporterVNA implements GraphExporter, CharacterExporter, LongTask {
if
(
cancel
)
{
break
;
}
stringBuilder
.
append
(
printParameter
(
node
.
getNodeData
().
getId
()));
for
(
int
i
=
0
;
i
<
attributeModel
.
getNodeTable
().
getColumns
().
length
;
i
++)
{
if
(
Arrays
.
binarySearch
(
standartNodeAttributes
,
attributeModel
.
getNodeTable
().
getColumn
(
i
).
getTitle
())
<
0
)
//ignore standart
{
if
(
node
.
getNodeData
().
getAttributes
().
getValue
(
i
)
!=
null
)
{
stringBuilder
.
append
(
" "
).
append
(
printParameter
(
node
.
getNodeData
().
getAttributes
().
getValue
(
i
)));
stringBuilder
.
append
(
printParameter
(
node
.
getId
()));
for
(
Column
column
:
attributeModel
.
getNodeTable
())
{
if
(!
column
.
isProperty
())
{
Object
value
=
node
.
getAttribute
(
column
,
graph
.
getView
());
if
(
value
!=
null
)
{
stringBuilder
.
append
(
" "
).
append
(
printParameter
(
value
));
}
else
{
stringBuilder
.
append
(
" "
).
append
(
valueForEmptyAttributes
);
}
...
...
@@ -230,14 +214,14 @@ public class ExporterVNA implements GraphExporter, CharacterExporter, LongTask {
if
(
cancel
)
{
break
;
}
minX
=
Math
.
min
(
minX
,
node
.
getNodeData
().
x
());
maxX
=
Math
.
max
(
maxX
,
node
.
getNodeData
().
x
());
minX
=
Math
.
min
(
minX
,
node
.
x
());
maxX
=
Math
.
max
(
maxX
,
node
.
x
());
minY
=
Math
.
min
(
minY
,
node
.
getNodeData
().
y
());
maxY
=
Math
.
max
(
maxY
,
node
.
getNodeData
().
y
());
minY
=
Math
.
min
(
minY
,
node
.
y
());
maxY
=
Math
.
max
(
maxY
,
node
.
y
());
minSize
=
Math
.
min
(
minSize
,
node
.
getNodeData
().
r
());
maxSize
=
Math
.
max
(
maxSize
,
node
.
getNodeData
().
r
());
minSize
=
Math
.
min
(
minSize
,
node
.
r
());
maxSize
=
Math
.
max
(
maxSize
,
node
.
r
());
}
}
...
...
@@ -268,48 +252,54 @@ public class ExporterVNA implements GraphExporter, CharacterExporter, LongTask {
if
(
cancel
)
{
break
;
}
stringBuilder
.
append
(
node
.
get
NodeData
().
get
Id
());
stringBuilder
.
append
(
node
.
getId
());
if
(
exportCoords
)
{
if
(!
normalize
)
{
stringBuilder
.
append
(
" "
).
append
(
node
.
getNodeData
().
x
()).
append
(
" "
).
append
(
node
.
getNodeData
()
.
y
());
stringBuilder
.
append
(
" "
).
append
(
node
.
x
()).
append
(
" "
).
append
(
node
.
y
());
}
else
{
stringBuilder
.
append
(
" "
).
append
((
node
.
getNodeData
().
x
()
-
minX
)
/
(
maxX
-
minX
)).
append
(
" "
).
append
((
node
.
getNodeData
()
.
y
()
-
minY
)
/
(
maxY
-
minY
));
stringBuilder
.
append
(
" "
).
append
((
node
.
x
()
-
minX
)
/
(
maxX
-
minX
)).
append
(
" "
).
append
((
node
.
y
()
-
minY
)
/
(
maxY
-
minY
));
}
}
if
(
exportSize
)
{
if
(!
normalize
)
{
stringBuilder
.
append
(
" "
).
append
(
node
.
getNodeData
().
getRadius
());
stringBuilder
.
append
(
" "
).
append
(
node
.
size
());
}
else
{
stringBuilder
.
append
(
" "
).
append
((
node
.
getNodeData
().
getRadius
()
-
minSize
)
/
(
maxSize
-
minSize
));
stringBuilder
.
append
(
" "
).
append
((
node
.
size
()
-
minSize
)
/
(
maxSize
-
minSize
));
}
}
if
(
exportColor
)
{
stringBuilder
.
append
(
" "
).
append
((
int
)
(
node
.
getNodeData
().
r
()
*
255
f
));
//[0..1] to [0..255]
stringBuilder
.
append
(
" "
).
append
((
int
)
(
node
.
r
()
*
255
f
));
//[0..1] to [0..255]
}
if
(
exportShortLabel
)
{
if
(
node
.
get
NodeData
().
get
Label
()
!=
null
)
{
stringBuilder
.
append
(
" "
).
append
(
printParameter
(
node
.
get
NodeData
().
get
Label
()));
if
(
node
.
getLabel
()
!=
null
)
{
stringBuilder
.
append
(
" "
).
append
(
printParameter
(
node
.
getLabel
()));
}
else
{
stringBuilder
.
append
(
" "
).
append
(
printParameter
(
node
.
get
NodeData
().
get
Id
()));
stringBuilder
.
append
(
" "
).
append
(
printParameter
(
node
.
getId
()));
}
}
stringBuilder
.
append
(
"\n"
);
}
}
void
printEdgeData
(
Edge
edge
,
Node
source
,
Node
target
)
{
stringBuilder
.
append
(
printParameter
(
source
.
get
NodeData
().
get
Id
()));
//from
stringBuilder
.
append
(
" "
).
append
(
printParameter
(
target
.
get
NodeData
().
get
Id
()));
//to
void
printEdgeData
(
Edge
edge
,
Node
source
,
Node
target
,
Graph
graph
)
{
stringBuilder
.
append
(
printParameter
(
source
.
getId
()));
//from
stringBuilder
.
append
(
" "
).
append
(
printParameter
(
target
.
getId
()));
//to
if
(
exportEdgeWeight
)
{
stringBuilder
.
append
(
" "
).
append
(
edge
.
getWeight
(
getLow
,
getHigh
));
//strength
Double
weight
;
if
(
exportDynamicWeight
)
{
weight
=
edge
.
getWeight
(
graph
.
getView
());
}
else
{
weight
=
edge
.
getWeight
();
}
stringBuilder
.
append
(
" "
).
append
(
weight
.
toString
());
}
if
(
exportAttributes
)
{
for
(
int
i
=
0
;
i
<
attributeModel
.
getEdgeTable
().
getColumns
().
length
;
i
++
)
{
if
(
Arrays
.
binarySearch
(
standartEdgeAttributes
,
attributeModel
.
getEdgeTable
().
getColumn
(
i
).
getTitle
())
<
0
)
//ignore standart
{
if
(
edge
.
getEdgeData
().
getAttributes
().
getValue
(
i
)
!=
null
)
{
stringBuilder
.
append
(
" "
).
append
(
printParameter
(
edge
.
getEdgeData
().
getAttributes
().
getValue
(
i
)
));
for
(
Column
column
:
attributeModel
.
getEdgeTable
()
)
{
if
(
!
column
.
isProperty
())
{
Object
value
=
edge
.
getAttribute
(
column
,
graph
.
getView
());
if
(
value
!=
null
)
{
stringBuilder
.
append
(
" "
).
append
(
printParameter
(
value
));
}
else
{
stringBuilder
.
append
(
" "
+
valueForEmptyAttributes
);
}
...
...
@@ -329,10 +319,9 @@ public class ExporterVNA implements GraphExporter, CharacterExporter, LongTask {
stringBuilder
.
append
(
" strength"
);
}
if
(
exportAttributes
)
{
for
(
int
i
=
0
;
i
<
attributeModel
.
getEdgeTable
().
getColumns
().
length
;
i
++)
{
if
(
Arrays
.
binarySearch
(
standartEdgeAttributes
,
attributeModel
.
getEdgeTable
().
getColumn
(
i
).
getTitle
())
<
0
)
//ignore standart
{
stringBuilder
.
append
(
" "
).
append
(
printParameter
(
attributeModel
.
getEdgeTable
().
getColumn
(
i
).
getTitle
()).
replace
(
' '
,
'_'
));
for
(
Column
col
:
attributeModel
.
getEdgeTable
())
{
if
(!
col
.
isProperty
())
{
stringBuilder
.
append
(
" "
).
append
(
printParameter
(
col
.
getTitle
()).
replace
(
' '
,
'_'
));
//replace spaces because importer can't read attributes titles in quotes
}
}
...
...
@@ -344,30 +333,35 @@ public class ExporterVNA implements GraphExporter, CharacterExporter, LongTask {
break
;
}
progressTicket
.
progress
();
printEdgeData
(
edge
,
edge
.
getSource
(),
edge
.
getTarget
());
//all edges in vna are directed, so make clone
printEdgeData
(
edge
,
edge
.
getSource
(),
edge
.
getTarget
()
,
graph
);
//all edges in vna are directed, so make clone
if
(!
edge
.
isDirected
()
&&
!
edge
.
isSelfLoop
())
{
printEdgeData
(
edge
,
edge
.
getTarget
(),
edge
.
getSource
());
printEdgeData
(
edge
,
edge
.
getTarget
(),
edge
.
getSource
()
,
graph
);
}
}
}
@Override
public
void
setWorkspace
(
Workspace
workspace
)
{
this
.
workspace
=
workspace
;
}
@Override
public
Workspace
getWorkspace
()
{
return
workspace
;
}
@Override
public
boolean
cancel
()
{
cancel
=
true
;
return
true
;
}
@Override
public
void
setProgressTicket
(
ProgressTicket
progressTicket
)
{
this
.
progressTicket
=
progressTicket
;
}
@Override
public
void
setWriter
(
Writer
writer
)
{
this
.
writer
=
writer
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录