Package org.apache.metamodel.jdbc

Examples of org.apache.metamodel.jdbc.JdbcDataContext


    public void testInsertFailureForStringValueForIntegerColumn() throws Exception {
        if (!isConfigured()) {
            return;
        }

        JdbcDataContext dc = new JdbcDataContext(getConnection());
        final Schema schema = dc.getDefaultSchema();
        try {
            dc.executeUpdate(new BatchUpdateScript() {
                @Override
                public void run(UpdateCallback cb) {
                    Table table = cb.createTable(schema, "my_table").withColumn("id").ofType(ColumnType.INTEGER)
                            .ofNativeType("SERIAL").nullable(false).withColumn("person name").ofSize(255)
                            .withColumn("age").ofType(ColumnType.INTEGER).execute();
                    assertEquals("[id, person name, age]", Arrays.toString(table.getColumnNames()));
                    assertEquals(
                            "Column[name=id,columnNumber=0,type=INTEGER,nullable=false,nativeType=serial,columnSize=10]",
                            table.getColumnByName("id").toString());
                    assertEquals(
                            "Column[name=person name,columnNumber=1,type=VARCHAR,nullable=true,nativeType=varchar,columnSize=255]",
                            table.getColumnByName("person name").toString());
                    assertEquals(
                            "Column[name=age,columnNumber=2,type=INTEGER,nullable=true,nativeType=int4,columnSize=10]",
                            table.getColumnByName("age").toString());

                    cb.insertInto(table).value("person name", "John Doe").value("age", "42").execute();
                }
            });

        } catch (Exception e) {
            String message = e.getMessage().replaceAll("\n", " ");
            assertEquals(
                    "Could not execute batch: INSERT INTO \"public\".\"my_table\" (\"person name\",age) VALUES ('John Doe','42'): Batch entry 0 INSERT INTO \"public\".\"my_table\" (\"person name\",age) VALUES ('John Doe','42') was aborted.  Call getNextException to see the cause.",
                    message);
        } finally {
            dc.refreshSchemas();
            if (dc.getTableByQualifiedLabel("my_table") != null) {
                dc.executeUpdate(new UpdateScript() {
                    @Override
                    public void run(UpdateCallback cb) {
                        cb.dropTable("my_table").execute();
                    }
                });
View Full Code Here


    public void testGetDefaultSchema() throws Exception {
        if (!isConfigured()) {
            return;
        }

        DataContext dc = new JdbcDataContext(getConnection());
        Schema schema = dc.getDefaultSchema();
        assertEquals("public", schema.getName());
    }
View Full Code Here

    public void testGetSchema() throws Exception {
        if (!isConfigured()) {
            return;
        }

        DataContext dc = new JdbcDataContext(getConnection());
        Schema[] schemas = dc.getSchemas();
        assertTrue(schemas.length >= 3);

        assertNotNull(dc.getSchemaByName("information_schema"));
        assertNotNull(dc.getSchemaByName("pg_catalog"));
        assertNotNull(dc.getSchemaByName("public"));

        Schema schema = dc.getSchemaByName("public");

        assertEquals("[Table[name=categories,type=TABLE,remarks=null], "
                + "Table[name=cust_hist,type=TABLE,remarks=null], " + "Table[name=customers,type=TABLE,remarks=null], "
                + "Table[name=inventory,type=TABLE,remarks=null], "
                + "Table[name=orderlines,type=TABLE,remarks=null], " + "Table[name=orders,type=TABLE,remarks=null], "
View Full Code Here

    public void testExecuteQueryInPublicSchema() throws Exception {
        if (!isConfigured()) {
            return;
        }

        DataContext dc = new JdbcDataContext(getConnection());
        Query q = new Query();
        Schema schema = dc.getSchemaByName("public");
        Table productsTable = schema.getTableByName("products");
        q.from(productsTable);

        Column titleColumn = productsTable.getColumnByName("title");
        Column productPriceColumn = productsTable.getColumnByName("price");
        q.select(titleColumn, productPriceColumn);
        q.getSelectClause().getItem(0).setAlias("product-title");

        DataSet data = dc.executeQuery(q);
        TableModel tableModel = new DataSetTableModel(data);
        assertEquals(2, tableModel.getColumnCount());
        assertEquals(10000, tableModel.getRowCount());

        assertEquals("ACADEMY ACADEMY", tableModel.getValueAt(0, 0).toString());
        assertEquals("25.99", tableModel.getValueAt(0, 1).toString());

        assertEquals("ACADEMY HORN", tableModel.getValueAt(432, 0).toString());
        assertEquals("16.99", tableModel.getValueAt(6346, 1).toString());

        assertEquals("ALADDIN ZORRO", tableModel.getValueAt(9999, 0).toString());
        assertEquals("10.99", tableModel.getValueAt(9999, 1).toString());

        data = null;
        tableModel = null;

        Column prodIdColumn = productsTable.getColumnByName("prod_id");
        Table orderlinesTable = schema.getTableByName("orderlines");
        Column commonProdIdColumn = orderlinesTable.getColumnByName("prod_id");
        Column quantityColumn = orderlinesTable.getColumnByName("quantity");

        q.from(orderlinesTable);
        q.where(new FilterItem(new SelectItem(prodIdColumn), OperatorType.EQUALS_TO, new SelectItem(commonProdIdColumn)));
        q.groupBy(titleColumn);
        q.getSelectClause().removeItem(q.getSelectClause().getSelectItem(productPriceColumn));
        SelectItem quantitySum = new SelectItem(FunctionType.SUM, quantityColumn).setAlias("orderAmount");
        q.select(quantitySum);
        q.having(new FilterItem(quantitySum, OperatorType.GREATER_THAN, 25));
        q.orderBy(new OrderByItem(q.getSelectClause().getItem(0)));

        assertEquals("SELECT \"products\".\"title\" AS product-title, SUM(\"orderlines\".\"quantity\") AS orderAmount "
                + "FROM public.\"products\", public.\"orderlines\" "
                + "WHERE \"products\".\"prod_id\" = \"orderlines\".\"prod_id\" " + "GROUP BY \"products\".\"title\" "
                + "HAVING SUM(\"orderlines\".\"quantity\") > 25 " + "ORDER BY \"products\".\"title\" ASC", q.toString());
        data = dc.executeQuery(q);
        tableModel = new DataSetTableModel(data);
        assertEquals(2, tableModel.getColumnCount());
        assertEquals(136, tableModel.getRowCount());

        assertEquals("ACADEMY ALABAMA", tableModel.getValueAt(0, 0).toString());
View Full Code Here

        if (!"true".equalsIgnoreCase(getProperties().getProperty(PROPERTY_LONGRUNNINGTESTS))) {
            return;
        }

        JdbcDataContext dc = new JdbcDataContext(getConnection());
        final Schema schema = dc.getDefaultSchema();
        try {
            dc.executeUpdate(new UpdateScript() {
                @Override
                public void run(UpdateCallback cb) {
                    Table table = cb.createTable(schema, "my_table").withColumn("id").ofType(ColumnType.INTEGER)
                            .ofNativeType("SERIAL").nullable(false).withColumn("person name").ofSize(255)
                            .withColumn("age").ofType(ColumnType.INTEGER).execute();
                    assertEquals("[id, person name, age]", Arrays.toString(table.getColumnNames()));
                    assertEquals(
                            "Column[name=id,columnNumber=0,type=INTEGER,nullable=false,nativeType=serial,columnSize=10]",
                            table.getColumnByName("id").toString());
                    assertEquals(
                            "Column[name=person name,columnNumber=1,type=VARCHAR,nullable=true,nativeType=varchar,columnSize=255]",
                            table.getColumnByName("person name").toString());
                    assertEquals(
                            "Column[name=age,columnNumber=2,type=INTEGER,nullable=true,nativeType=int4,columnSize=10]",
                            table.getColumnByName("age").toString());

                    for (int i = 0; i < 1000000; i++) {
                        cb.insertInto(table).value("person name", "John Doe").value("age", i + 10).execute();
                    }

                }
            });

            Table table = schema.getTableByName("my_table");
            Query query = dc.query().from(table).selectCount().toQuery();
            DataSet ds = dc.executeQuery(query);
            assertTrue(ds.next());
            assertEquals("Row[values=[1000000]]", ds.getRow().toString());
            assertFalse(ds.next());
            ds.close();
        } finally {
            dc.executeUpdate(new UpdateScript() {
                @Override
                public void run(UpdateCallback cb) {
                    cb.dropTable("my_table").execute();
                }
            });
View Full Code Here

        if (!"true".equalsIgnoreCase(getProperties().getProperty(PROPERTY_LONGRUNNINGTESTS))) {
            return;
        }

        DataContext dc = new JdbcDataContext(getConnection());
        Query q = new Query();
        Schema schema = dc.getSchemaByName("public");
        Table productsTable = schema.getTableByName("products");
        Table customerTable = schema.getTableByName("customers");
        q.from(productsTable, "p").from(customerTable, "c");

        Column titleColumn = productsTable.getColumnByName("title");
View Full Code Here

    @Override
    protected Query beforeRewrite(Query query) {
        query = query.clone();

        JdbcDataContext dataContext = getDataContext();
        if (dataContext != null) {
            String identifierQuoteString = dataContext.getIdentifierQuoteString();
            if (identifierQuoteString != null) {
                List<SelectItem> selectItems = query.getSelectClause().getItems();
                for (SelectItem item : selectItems) {
                    String alias = item.getAlias();
                    if (needsQuoting(alias, identifierQuoteString)) {
View Full Code Here

    try {
      Class.forName("org.postgresql.Driver");
      connection = DriverManager.getConnection(CONNECTION_STRING,
          USERNAME, PASSWORD);

      JdbcDataContext dc = new JdbcDataContext(connection);
      final Schema schema = dc.getDefaultSchema();
      dc.executeUpdate(new UpdateScript() {
        @Override
        public void run(UpdateCallback cb) {
          Table table = cb.createTable(schema, "my_table")
              .withColumn("id").ofType(ColumnType.INTEGER)
              .ofNativeType("SERIAL").nullable(false)
              .withColumn("person name").ofSize(255)
              .withColumn("age").ofType(ColumnType.INTEGER)
              .execute();

          for (int i = 0; i < 1000000; i++) {
            cb.insertInto(table).value("person name", "John Doe")
                .value("age", i + 10).execute();
          }

        }
      });

      Table table = schema.getTableByName("my_table");
      Query query = dc.query().from(table).selectCount().toQuery();
      DataSet ds = dc.executeQuery(query);
      ds.close();
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    } catch (SQLException e) {
      e.printStackTrace();
View Full Code Here

  protected void setUp() throws Exception {
    super.setUp();
    Class.forName("org.firebirdsql.jdbc.FBDriver");
    _connection = DriverManager.getConnection(CONNECTION_STRING, USERNAME, PASSWORD);
    _connection.setReadOnly(true);
    _dataContext = new JdbcDataContext(_connection);
  }
View Full Code Here

      // do nothing
    }

    assertFalse(_connection.isReadOnly());

    JdbcDataContext dc = new JdbcDataContext(_connection);
    final Schema schema = dc.getDefaultSchema();
    assertEquals("sakila", schema.getName());

    dc.executeUpdate(new UpdateScript() {
      @Override
      public void run(UpdateCallback cb) {
        Table table = cb.createTable(schema, "test_table").withColumn("id").ofType(ColumnType.INTEGER)
            .asPrimaryKey().withColumn("birthdate").ofType(ColumnType.DATE).execute();

        cb.insertInto(table).value("id", "1").execute();
        cb.insertInto(table).value("id", 2).value("birthdate", "2011-12-21").execute();
      }
    });

    assertTrue(dc.getColumnByQualifiedLabel("test_table.id").isPrimaryKey());
    assertFalse(dc.getColumnByQualifiedLabel("test_table.birthdate").isPrimaryKey());

    DataSet ds = dc.query().from("test_table").select("id").and("birthdate").execute();
    assertTrue(ds.next());
    assertEquals("Row[values=[1, null]]", ds.getRow().toString());
    assertEquals("java.lang.Integer", ds.getRow().getValue(0).getClass().getName());
    assertTrue(ds.next());
    assertEquals("Row[values=[2, 2011-12-21]]", ds.getRow().toString());
    assertEquals("java.sql.Date", ds.getRow().getValue(1).getClass().getName());
    assertFalse(ds.next());
    ds.close();

    dc.executeUpdate(new UpdateScript() {
      @Override
      public void run(UpdateCallback callback) {
        callback.dropTable("test_table").execute();
      }
    });
View Full Code Here

TOP

Related Classes of org.apache.metamodel.jdbc.JdbcDataContext

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.