package org.teamweaver.store.internal; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import org.teamweaver.ontology.OntologyActivator; import com.hp.hpl.jena.query.Dataset; import com.hp.hpl.jena.query.Query; import com.hp.hpl.jena.query.QueryExecution; import com.hp.hpl.jena.query.QueryExecutionFactory; import com.hp.hpl.jena.query.QueryFactory; import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.query.ResultSetFormatter; import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.sdb.SDBException; import com.hp.hpl.jena.sdb.SDBFactory; import com.hp.hpl.jena.sdb.Store; import com.hp.hpl.jena.sdb.StoreDesc; import com.hp.hpl.jena.sdb.sql.JDBC; import com.hp.hpl.jena.sdb.sql.SDBConnection; import com.hp.hpl.jena.sdb.store.DatabaseType; import com.hp.hpl.jena.sdb.store.DatasetStore; import com.hp.hpl.jena.sdb.store.LayoutType; import com.hp.hpl.jena.sdb.store.StoreFactory; public class TestClass { public static void test() { Store store = getSDBStore(); Model model = SDBFactory.connectDefaultModel(store) ; try{ model.read( new FileInputStream(new File(OntologyActivator.getOntologyPath() + "int.owl")),""); } catch (FileNotFoundException e) { System.out.println("File not found exception :: " + e.getCause()); e.printStackTrace(); } store.close() ; } private static String className = "com.mysql.jdbc.Driver"; // JDBC private static String DB_URL = "jdbc:mysql://localhost:3306/jenamodel"; // URL of database private static String DB_USER = "root"; // database user id private static String DB_PASSWD = ""; // database password // JConnection connect; Model model; private static Store theStore; private static SDBConnection theConnection; public static Store getExStore(){ Store store=SDBFactory.connectStore("sdb.ttl"); return store; } public static Store getSDBStore(){ if(theStore == null){ // Thread thread = Thread.currentThread(); // ClassLoader loader = thread.getContextClassLoader(); // thread.setContextClassLoader(Common.class.getClassLoader()); try { // Contex Class.forName (className, true, PlayWithSDB.class.getClassLoader()); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { // thread.setContextClassLoader(loader); } // if(theStore == null){ // try { // Class.forName (className); // com.mysql.jdbc.Driver driver; // } catch (ClassNotFoundException e) { // e.printStackTrace(); // } // JDBC.loadDriver(className); Connection jdbcConnection = getConnection(); StoreDesc storeDesc= getDescription(); theConnection=new SDBConnection(jdbcConnection); theStore=StoreFactory.create(storeDesc, theConnection); } return theStore; } // public static Store connectInstance() { // StoreDesc storeDesc= getDescription(); // JDBC.loadDriver(className); // String jdbcURL=DB_URL; // SDBConnection conn=new SDBConnection(jdbcURL,DB_USER, DB_PASSWD); // Store store=SDBFactory.connectStore(conn, storeDesc); // return store; // } // // TODO Optimize this using a Pooled connenction see http://www.precisejava.com/javaperf/j2ee/JDBC.htm#JDBC105 // and http://www.java2s.com/Code/Java/Database-SQL-JDBC/PooledConnectionExample.htm public static Connection getConnection() { try { try { Class.forName (className); } catch (ClassNotFoundException e) { e.printStackTrace(); } // JDBC.loadDriverMySQL(); return DriverManager.getConnection(DB_URL,DB_USER, DB_PASSWD) ; } catch (SQLException ex) { throw new SDBException("SQL Exception while connecting to database: "+DB_URL+" : "+ex.getMessage()) ; } } // TODO // public static ResultSet query(String queryString){ public static void query(String queryString){ Query query = QueryFactory.create(queryString) ; Dataset ds = DatasetStore.create(theStore) ; QueryExecution qe = QueryExecutionFactory.create(query, ds) ; try { ResultSet rs = qe.execSelect() ; ResultSetFormatter.out(rs) ; } finally { qe.close() ; } // Does not close the JDBC connection. // Do not call : store.getConnection().close() , which does close the underlying connection. theStore.close() ; } private static StoreDesc getDescription() { StoreDesc storeDesc = new StoreDesc(LayoutType.LayoutTripleNodesHash, DatabaseType.MySQL) ; return storeDesc; } }