// package org.xenei.jdbc4sparql.config; // // import com.hp.hpl.jena.rdf.model.Model; // import com.hp.hpl.jena.rdf.model.ModelFactory; // // import java.io.File; // import java.io.FileOutputStream; // import java.net.URL; // import java.sql.SQLException; // import java.util.Iterator; // import java.util.Map; // import java.util.Properties; // import java.util.Set; // // import org.junit.After; // import org.junit.Assert; // import org.junit.Before; // import org.junit.Test; // import org.xenei.jdbc4sparql.J4SConnection; // import org.xenei.jdbc4sparql.J4SDriver; // import org.xenei.jdbc4sparql.J4SDriverTest; // import org.xenei.jdbc4sparql.J4SPropertyNames; // import org.xenei.jdbc4sparql.J4SUrl; // import org.xenei.jdbc4sparql.iface.Catalog; // import org.xenei.jdbc4sparql.iface.Column; // import org.xenei.jdbc4sparql.iface.ColumnDef; // import org.xenei.jdbc4sparql.iface.DatasetProducer; // import org.xenei.jdbc4sparql.iface.Schema; // import org.xenei.jdbc4sparql.iface.Table; // import org.xenei.jdbc4sparql.impl.rdf.RdfCatalog; // import org.xenei.jdbc4sparql.impl.rdf.RdfColumn; // import org.xenei.jdbc4sparql.impl.rdf.RdfColumnDef; // import org.xenei.jdbc4sparql.impl.rdf.RdfSchema; // import org.xenei.jdbc4sparql.impl.rdf.RdfTable; // import org.xenei.jdbc4sparql.impl.rdf.RdfTableDef; // // abstract public class AbstractConfigTest // { // private RdfCatalog catalog; // private Model model; // private J4SConnection connection; // private J4SConnection connection2; // private File tmpFile; // private final String dpClassName; // private URL fUrl; // // protected AbstractConfigTest( final Class<? extends DatasetProducer> dpClass // ) // { // dpClassName = dpClass.getCanonicalName(); // } // // private void deepCompare( final Catalog c1, final Catalog c2 ) // { // Assert.assertEquals(c1.getName(), c2.getName()); // final Set<Schema> s1 = c1.getSchemas(); // final Set<Schema> s2 = c2.getSchemas(); // Assert.assertEquals(s1.size(), s2.size()); // final Iterator<Schema> iterS1 = s1.iterator(); // final Iterator<Schema> iterS2 = s2.iterator(); // while (iterS1.hasNext()) // { // final Schema i1 = iterS1.next(); // final Schema i2 = iterS2.next(); // Assert.assertTrue(i1 instanceof RdfSchema); // Assert.assertTrue(i2 instanceof RdfSchema); // deepCompare((RdfSchema) i1, (RdfSchema) i2); // } // } // // private void deepCompare( final Column c1, final Column c2 ) // { // Assert.assertEquals(c1.getFQName(), c2.getFQName()); // Assert.assertEquals(c1.getNamespace(), c2.getNamespace()); // Assert.assertEquals(c1.getLocalName(), c2.getLocalName()); // Assert.assertEquals(c1.getQuerySegmentFmt(), c2.getQuerySegmentFmt()); // Assert.assertEquals(c1.getSPARQLName(), c2.getSPARQLName()); // Assert.assertEquals(c1.getSQLName(), c2.getSQLName()); // Assert.assertEquals(c1.getResource(), c1.getResource()); // deepCompare(c1.getColumnDef(), c2.getColumnDef()); // } // // private void deepCompare( final ColumnDef c1, final ColumnDef c2 ) // { // Assert.assertEquals(c1.getTypeName(), c2.getTypeName()); // Assert.assertEquals(c1.getDisplaySize(), c2.getDisplaySize()); // Assert.assertEquals(c1.getNullable(), c2.getNullable()); // Assert.assertEquals(c1.getPrecision(), c2.getPrecision()); // Assert.assertEquals(c1.getResource(), c2.getResource()); // Assert.assertEquals(c1.getScale(), c2.getScale()); // Assert.assertEquals(c1.getType(), c2.getType()); // } // // private void deepCompare( final Schema s1, final Schema s2 ) // { // Assert.assertEquals(s1.getFQName(), s2.getFQName()); // Assert.assertEquals(s1.getNamespace(), s2.getNamespace()); // Assert.assertEquals(s1.getLocalName(), s2.getLocalName()); // Assert.assertEquals(s1.getName(), s2.getName()); // final Set<RdfTable> s1Tables = s1.getTables(); // final Set<RdfTable> s2Tables = s1.getTables(); // Assert.assertEquals(s1Tables.size(), s2Tables.size()); // for (final Table t1 : s1Tables) // { // final Table t2 = s2.getTable(t1.getName()); // Assert.assertNotNull(t2); // deepCompare((RdfTable) t1, (RdfTable) t2); // } // } // // private void deepCompare( final Table t1, final Table t2 ) // { // Assert.assertEquals(t1.getFQName(), t2.getFQName()); // Assert.assertEquals(t1.getNamespace(), t2.getNamespace()); // Assert.assertEquals(t1.getLocalName(), t2.getLocalName()); // Assert.assertEquals(t1.getColumnCount(), t2.getColumnCount()); // Assert.assertEquals(t1.getQuerySegmentFmt(), t2.getQuerySegmentFmt()); // deepCompare(t1.getTableDef(), t2.getTableDef()); // final Iterator<Column> cr1 = t1.getColumns(); // final Iterator<Column> cr2 = t2.getColumns(); // while (cr1.hasNext()) // { // deepCompare(cr1.next(), cr2.next()); // } // // } // // private void deepCompare( final TableDef t1, final TableDef t2 ) // { // Assert.assertEquals(t1.getFQName(), t2.getFQName()); // Assert.assertEquals(t1.getNamespace(), t2.getNamespace()); // Assert.assertEquals(t1.getLocalName(), t2.getLocalName()); // Assert.assertEquals(t1.getColumnCount(), t2.getColumnCount()); // final Iterator<ColumnDef> cd1 = t1.getColumnDefs().iterator(); // final Iterator<ColumnDef> cd2 = t2.getColumnDefs().iterator(); // // while (cd1.hasNext()) // { // deepCompare((RdfColumnDef) cd1.next(), (RdfColumnDef) cd2.next()); // } // } // // @Before // public void setup() // { // fUrl = J4SDriverTest.class.getResource("./J4SStatementTest.ttl"); // // /org/xenei/jdbc4sparql/J4SDriverTest.ttl"); // // model = ModelFactory.createDefaultModel(); // model.read(fUrl.toString(), "TURTLE"); // // catalog = new RdfCatalog.Builder().setName("SimpleSparql") // .setLocalModel(model).build(model); // // } // // @After // public void teardown() throws SQLException // { // if (connection != null) // { // connection.close(); // } // if (connection2 != null) // { // connection2.close(); // } // if (tmpFile != null) // { // tmpFile.delete(); // } // catalog.close(); // model.close(); // } // // @Test // public void testModelRoundTrip() throws Exception // { // new RdfSchema.Builder().setCatalog(catalog).setName("builderTest") // .build(model); // // final J4SUrl url = new J4SUrl( // "jdbc:j4s?catalog=test&type=turtle&builder=org.xenei.jdbc4sparql.sparql.builders.SimpleNullableBuilder:" // + fUrl.toString()); // final J4SDriver driver = new J4SDriver(); // final Properties prop = new Properties(); // prop.setProperty(J4SPropertyNames.DATASET_PRODUCER, dpClassName); // connection = new J4SConnection(driver, url, prop); // tmpFile = File.createTempFile("CfgTst", ".zip"); // // final FileOutputStream fos = new FileOutputStream(tmpFile); // connection.saveConfig(fos); // fos.close(); // // final J4SUrl url2 = new J4SUrl("jdbc:J4S:file:" // + tmpFile.getCanonicalPath()); // // connection2 = new J4SConnection(driver, url2, new Properties()); // // final Map<String, Catalog> cats = connection.getCatalogs(); // final Map<String, Catalog> cats2 = connection2.getCatalogs(); // // Assert.assertEquals(cats.size(), cats2.size()); // final Iterator<Catalog> iterCat = cats.values().iterator(); // final Iterator<Catalog> iterCat2 = cats2.values().iterator(); // // while (iterCat.hasNext()) // { // deepCompare(iterCat.next(), iterCat2.next()); // } // // } // // }