package org.gephi.io.importer.plugin.database;
import java.sql.Connection;
import java.sql.SQLException;
import org.gephi.data.attributes.api.AttributeColumn;
import org.gephi.io.database.drivers.MySQLDriver;
import org.gephi.io.database.drivers.SQLUtils;
import org.gephi.io.importer.api.Container;
import org.gephi.io.importer.api.ContainerLoader;
import org.gephi.io.importer.api.ContainerUnloader;
import org.gephi.io.importer.api.NodeDraftGetter;
import org.gephi.io.importer.api.Report;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openide.util.Exceptions;
import org.openide.util.Lookup;
/**
*
* @author Mathieu
*/
public class EdgeListImporterTest {
private EdgeListDatabaseImpl database;
private ContainerLoader containerLoader;
private ContainerUnloader containerUnloader;
public EdgeListImporterTest() {
}
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
@Before
public void setUp() {
database = new EdgeListDatabaseImpl();
database.setDBName("test");
database.setHost("localhost");
database.setPort(3306);
database.setUsername("root");
database.setPasswd("");
database.setNodeQuery("SELECT * FROM node LIMIT 0,1000");
database.setEdgeQuery("SELECT * FROM edge WHERE id_node_from < 1000 AND id_node_to < 1000");
database.setSQLDriver(new MySQLDriver());
Container cont = Lookup.getDefault().lookup(Container.class);
containerLoader = cont.getLoader();
containerUnloader = cont.getUnloader();
}
@After
public void tearDown() {
database = null;
containerLoader = null;
}
@Test
public void testConnection() {
System.out.println("-Try to connect at " + SQLUtils.getUrl(database.getSQLDriver(), database.getHost(), database.getPort(), database.getDBName()));
try {
Connection connection = database.getSQLDriver().getConnection(SQLUtils.getUrl(database.getSQLDriver(), database.getHost(), database.getPort(), database.getDBName()), database.getUsername(), database.getPasswd());
System.out.println("---Database connection established");
connection.close();
System.out.println("-Database connection terminated");
} catch (SQLException ex) {
Exceptions.printStackTrace(ex);
//fail(ex.getMessage());
}
}
@Test
public void testImport() throws Exception {
ImporterEdgeList importer = new ImporterEdgeList();
importer.setDatabase(database);
importer.execute(containerLoader);
boolean hasId = false;
boolean hasLabel = false;
boolean hasX = false;
for (NodeDraftGetter node : containerUnloader.getNodes()) {
if (node.getId() != null) {
hasId = true;
}
if (node.getLabel() != null) {
hasLabel = true;
}
if (node.getX() != 0) {
hasX = true;
}
}
System.out.println("Id=" + hasId);
System.out.println("Label=" + hasLabel);
System.out.println("X=" + hasX);
//Look at attributes
System.out.println("--Node Attributes cols");
for (AttributeColumn col : containerLoader.getAttributeModel().getNodeTable().getColumns()) {
System.out.println(col.getIndex() + ":" + col.getId() + "(" + col.getType() + ")");
}
//Look at attributes
System.out.println("--Edge Attributes cols");
for (AttributeColumn col : containerLoader.getAttributeModel().getEdgeTable().getColumns()) {
System.out.println(col.getIndex() + ":" + col.getId() + "(" + col.getType() + ")");
}
}
}