Java tutorial
/* Copyright 2008-2010 Gephi Authors : Mathieu Bastian <mathieu.bastian@gephi.org> Website : http://www.gephi.org This file is part of Gephi. Gephi is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Gephi is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Gephi. If not, see <http://www.gnu.org/licenses/>. */ package com.protheos.infomodel; import com.itextpdf.text.PageSize; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.StringWriter; import org.gephi.io.exporter.api.ExportController; import org.gephi.io.exporter.preview.PDFExporter; import org.gephi.io.exporter.spi.CharacterExporter; import org.gephi.io.exporter.spi.Exporter; import org.gephi.io.exporter.spi.GraphExporter; import org.gephi.io.importer.api.Container; import org.gephi.io.importer.api.EdgeDefault; import org.gephi.io.importer.api.ImportController; import org.gephi.io.processor.plugin.DefaultProcessor; import org.gephi.project.api.ProjectController; import org.gephi.project.api.Workspace; import org.openide.util.Lookup; /** * This demo focuses on Import and Export features, showing different IO possibilities. * <p> * Import can be performed from a file, database or Reader/InputStream. The export * can be done to files and Writer/OutputStream. The demo import a file and shows how * to configure graph export to use the visible graph instead of the full graph. * That is essential to export a graph that has been filtered. * <p> * The ability to export graph or PDF to Writer or Byte array is showed at the end. * * @author Mathieu Bastian */ public class ImportExport { public void script() { //Init a project - and therefore a workspace ProjectController pc = Lookup.getDefault().lookup(ProjectController.class); pc.newProject(); Workspace workspace = pc.getCurrentWorkspace(); //Get controllers and models ImportController importController = Lookup.getDefault().lookup(ImportController.class); //Import file Container container; try { File file = new File( getClass().getResource("/org/gephi/toolkit/demos/resources/lesmiserables.gml").toURI()); container = importController.importFile(file); container.getLoader().setEdgeDefault(EdgeDefault.DIRECTED); //Force DIRECTED container.setAllowAutoNode(false); //Don't create missing nodes } catch (Exception ex) { ex.printStackTrace(); return; } //Append imported data to GraphAPI importController.process(container, new DefaultProcessor(), workspace); //Export full graph ExportController ec = Lookup.getDefault().lookup(ExportController.class); try { ec.exportFile(new File("io_gexf.gexf")); } catch (IOException ex) { ex.printStackTrace(); return; } //Export only visible graph GraphExporter exporter = (GraphExporter) ec.getExporter("gexf"); //Get GEXF exporter exporter.setExportVisible(true); //Only exports the visible (filtered) graph exporter.setWorkspace(workspace); try { ec.exportFile(new File("io_gexf.gexf"), exporter); } catch (IOException ex) { ex.printStackTrace(); return; } //Export to Writer Exporter exporterGraphML = ec.getExporter("graphml"); //Get GraphML exporter exporterGraphML.setWorkspace(workspace); StringWriter stringWriter = new StringWriter(); ec.exportWriter(stringWriter, (CharacterExporter) exporterGraphML); //System.out.println(stringWriter.toString()); //Uncomment this line //PDF Exporter config and export to Byte array PDFExporter pdfExporter = (PDFExporter) ec.getExporter("pdf"); pdfExporter.setPageSize(PageSize.A0); pdfExporter.setWorkspace(workspace); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ec.exportStream(baos, pdfExporter); byte[] pdf = baos.toByteArray(); } }