JRuby 1.7.2: kolejne spotkanie

Tym razem miałem potrzebę użycia Gephi Toolkit z poziomu JRubiego.

Co rzuciło mi się w oczy podczas zamiany kodu Javy na JRubiego.

1. Refleksja.
.class zwróci nam klasę typu Class
.java_class zwróci nam klasę Java::JavaClass

2. Enum types
Java: EdgeDefault.DIRECTED
JRuby: EdgeDefault::DIRECTED

3. getResource
Metoda getResource z java.lang.Class w JRubym jest dostępna jako java.getResource.

Do działania poniższego kawałka kodu potrzebny jest Gephi Toolkit.

require 'gephi-toolkit.jar'

java_import 'java.io.ByteArrayOutputStream'
java_import 'java.io.File'
java_import 'java.io.IOException'
java_import 'java.io.StringWriter'
java_import 'org.gephi.graph.api.GraphModel'
java_import 'org.gephi.io.exporter.api.ExportController'
java_import 'org.gephi.io.exporter.preview.PDFExporter'
java_import 'org.gephi.io.exporter.spi.CharacterExporter'
java_import 'org.gephi.io.exporter.spi.Exporter'
java_import 'org.gephi.io.exporter.spi.GraphExporter'
java_import 'org.gephi.io.importer.api.Container'
java_import 'org.gephi.io.importer.api.EdgeDefault'
java_import 'org.gephi.io.importer.api.ImportController'
java_import 'org.gephi.io.processor.plugin.DefaultProcessor'
java_import 'org.gephi.project.api.ProjectController'
java_import 'org.gephi.project.api.Workspace'
java_import 'org.openide.util.Lookup'

# Init a project - and therefore a workspace
pc = Lookup.getDefault.lookup(ProjectController.java_class)
pc.newProject
workspace = pc.getCurrentWorkspace

# Get controllers and models
importController = Lookup.getDefault.lookup(ImportController.java_class)

# Import file
file = File.new("file.gml")
container = importController.importFile(file)
container.getLoader.setEdgeDefault(EdgeDefault::DIRECTED)
container.setAllowAutoNode(false)

# Append imported data to GraphAPI
importController.process(container, DefaultProcessor.new, workspace)

# Graph
gm = workspace.getLookup.lookup(GraphModel.java_class)
graph = gm.getGraph

Źródła:
Gephi
Gephi Toolkit Demos
Gephi Toolkit JavaDoc

Posted on 22/01/2013, in Java, Ruby. Bookmark the permalink. Dodaj komentarz.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d bloggers like this: