Package com.redspr.redquerybuilder.core.client.command

Examples of com.redspr.redquerybuilder.core.client.command.CommandBuilder


    private void createCommandBuilder(final Configuration config, String sql, List args)
            throws Exception {

        final Session session = new Session(config);

        final CommandBuilder builder = new CommandBuilder(session, sql, args);

        session.getMsgBus().addHandler(TableEvent.TYPE,
                new TableEventHandler() {
                    @Override
                    public void onTable(TableEvent e) {
                        if (session.getFilters().size() > 0) {
                            config.fireOnTableChange(session.getFilters());
                            // XXX need to do distinct?
                            ObjectArray expr = ObjectArray.newInstance();
                            TableFilter tf = session.getFilters().get(0);
                            String alias = tf.getAlias();
                            for (Column col : tf.getTable().getColumns()) {
                                expr.add(new ExpressionColumn(session, null, alias,
                                    col.getName()));
                            }
                            builder.getSelect().setExpressions(expr);
                        } else {
                            builder.getSelect().setExpressions(null);
                        }
                    }
                });

        builder.addValueChangeHandler(new ValueChangeHandler<Select>() {
            @Override
            public void onValueChange(ValueChangeEvent<Select> event) {
                List<Object> args = new ArrayList<Object>();
                String sql = event.getValue().getSQL(args);
View Full Code Here


    }


    @Test
    public void testInitialArgValue() throws Exception {
        CommandBuilder cb = new CommandBuilder(getSession(),
                "SELECT id FROM Person WHERE sex = ?", new ArrayList());

        List args = new ArrayList();
        cb.getSelect().getSQL(args);

        assertEquals(null, args.get(0));
    }
View Full Code Here

    }

    @Test
    public void testSetTableAddCondRemoveCond() throws Exception {
        Session s = getSession();
        CommandBuilder cb = new CommandBuilder(s);
        cb.getSelect().updateTable(
                s.getDatabase().getMainSchema().findTableOrView("PERSON"));
        cb.getSelect().getSQL(new ArrayList());

        Comparison c = new Comparison(s);

        cb.getSelect().addCondition(c);
        cb.fireDirty();

        cb.getSelect().remove(c);
        cb.fireDirty();
    }
View Full Code Here

    }

    @Test
    public void testSetTableAddCondRemoveCond2() throws Exception {
        Session s = getSession();
        CommandBuilder cb = new CommandBuilder(s);
        cb.getSelect().updateTable(
                s.getDatabase().getMainSchema().findTableOrView("Log"));
        cb.getSelect().getSQL(new ArrayList());

        Comparison c = new Comparison(s);

        cb.getSelect().addCondition(c);
        cb.fireDirty();

        cb.getSelect().remove(c);
        cb.fireDirty();
    }
View Full Code Here

    }

    @Test
    public void testChangeTableWithCondition() throws Exception {
        Session s = getSession();
        CommandBuilder cb = new CommandBuilder(s);
        // RootPanel.get().add(cb);
        cb.getSelect().updateTable(
                s.getDatabase().getMainSchema().findTableOrView("PERSON"));
        cb.fireDirty();

        Comparison c = new Comparison(s);

        cb.getSelect().addCondition(c);
        cb.fireDirty();

        cb.getSelect().updateTable(
                s.getDatabase().getMainSchema().findTableOrView("Log"));
        cb.fireDirty();
    }
View Full Code Here

    }

    @Test
    public void testSimpleJoin() throws Exception {
        Session s = getSession();
        CommandBuilder cb = new CommandBuilder(s);

        cb.getSelect().updateTable(
                s.getDatabase().getMainSchema().findTableOrView("Log"));
        s.getMsgBus().fireEvent(new TableEvent()); // XXX encapsulation
        cb.fireDirty();

        Comparison c = new Comparison(s);
        cb.getSelect().addCondition(c);
        cb.fireDirty();

        ExpressionColumn left = (ExpressionColumn) c.getLeft();

        TableFilter log = cb.getSelect().getFilters().get(0);
        assertEquals("Log", log.getTable().getName());
        assertEquals("x0", log.getAlias());
        for (int i = 0; i < 2; i++) {
            left.selectConstraintRef((ConstraintReferential) log.getTable()
                    .getConstraints().get(0));
            left.updateColumn("x1", s.getDatabase().getMainSchema().findTableOrView(
                    "PERSON").getColumn("sex"));

            {
                JoinHelper thing = JoinHelper.getParent(cb.getSelect()
                        .getTableFilter("x1"));
                assertTrue(log.getTable().getConstraints().get(0) == thing
                        .getConstraint());
                assertEquals("x0", thing.getParent().getAlias());
            }

            {
                JoinHelper thing = JoinHelper.getParent(cb.getSelect()
                        .getTableFilter("x0"));
                assertTrue(thing == null);
            }

            assertEquals(
                    "try " + i,
                    "SELECT \nFROM Log x0\nINNER JOIN PERSON x1 ON x0.parent = x1.id\nWHERE (x1.sex = ?)",
                    cb.getSelect().getSQL(new ArrayList()));
        }
    }
View Full Code Here

    }

    @Test
    public void testSelectAndUnselectJoin() throws Exception {
        Session s = getSession();
        CommandBuilder cb = new CommandBuilder(s);

        cb.getSelect().updateTable(
                s.getDatabase().getMainSchema().findTableOrView("Log"));
        cb.fireDirty();

        Comparison c = new Comparison(s);

        cb.getSelect().addCondition(c);
        cb.fireDirty();

        ExpressionColumn left = (ExpressionColumn) c.getLeft();

        TableFilter log = cb.getSelect().getFilters().get(0);
        left.selectConstraintRef((ConstraintReferential) log.getTable()
                .getConstraints().get(0));

        cb.fireDirty();
        left.updateColumn("x1", s.getDatabase().getMainSchema().findTableOrView(
                "PERSON").getColumn("sex"));

        cb.fireDirty();



        assertEquals(
                "SELECT \nFROM Log x0\nINNER JOIN PERSON x1 ON x0.parent = x1.id\nWHERE (x1.sex = ?)",
                cb.getSelect().getSQL(new ArrayList()));

        // change back to simple column
        left.updateColumn("x0", log.getTable().getColumn("date"));
        cb.fireDirty();
    }
View Full Code Here

    // select Log -> Person -> Log
    @Test
    public void testSelectAndThenReverseJoin() throws Exception {
        Session s = getSession();
        s.getDatabase().getMainSchema().addReverseConstraints();
        CommandBuilder cb = new CommandBuilder(s);

        Table log = s.getDatabase().getMainSchema().findTableOrView("Log");
        ConstraintReferential logToPerson = (ConstraintReferential) log
                .getConstraintByName("parentfk");

        Table person = s.getDatabase().getMainSchema().findTableOrView("PERSON");
        ConstraintReferential personToLog = (ConstraintReferential) person
                .getConstraintByName("Rev parentfk");

        cb.getSelect().updateTable(log);
        cb.fireDirty();

        Comparison c = new Comparison(s);

        cb.getSelect().addCondition(c);
        cb.fireDirty();

        ExpressionColumn left = (ExpressionColumn) c.getLeft();

        left.selectConstraintRef(logToPerson);
        cb.fireDirty();

        assertEquals(
                "SELECT \nFROM Log x0\nINNER JOIN PERSON x1 ON x0.parent = x1.id\nWHERE (x1.id = ?)",
                cb.getSelect().getSQL(new ArrayList()));

        left.selectConstraintRef(personToLog);

      //  ValueChangeEvent.fire(left, left.getColumn());
cb.getSelect().onDirty()// TODO 20 need this to make unit test work, async issue?
        cb.fireDirty(); // XXX bad encapsulation, causes garbage collection

        assertEquals(
                "SELECT \nFROM Log x0\nWHERE (x0.id = ?)",
                cb.getSelect().getSQL(new ArrayList()));
    }
View Full Code Here

    }

    @Test
    public void testAddThirdDuplicateJoin() throws Exception {
        Session s = getSession();
        CommandBuilder cb = new CommandBuilder(s);

        Table person = s.getDatabase().getMainSchema().findTableOrView("PERSON");

        s.getDatabase().getMainSchema().addReverseConstraints();
        cb.getSelect().updateTable(person);

        JoinHelper.getOrCreateFor(s, (ConstraintReferential) person.getConstraints().get(0));
        TableFilter b = JoinHelper.getOrCreateFor(s, (ConstraintReferential) person.getConstraints().get(1));
        assertTrue(b.getJoin() == null);
        TableFilter c = JoinHelper.getOrCreateFor(s, (ConstraintReferential) person.getConstraints().get(1));
View Full Code Here

    }

    @Test
    public void testTableChangeUpdatingExpression() throws Exception {
        final Session s = getSession();
        final CommandBuilder cb = new CommandBuilder(s);

        s.getMsgBus().addHandler(TableEvent.TYPE, new TableEventHandler() {
            @Override
            public void onTable(TableEvent e) {
                ObjectArray expr = ObjectArray.newInstance();
                String alias = s.getFilters().get(0).getAlias();
                expr.add(new ExpressionColumn(s, null, alias, "id"));
                cb.getSelect().setExpressions(expr);
            }
        });

        Table person = s.getDatabase().getMainSchema().findTableOrView("PERSON");

        cb.getSelect().updateTable(person);

        assertEquals(
                "SELECT x0.id\nFROM PERSON x0",
                cb.getSelect().getSQL(new ArrayList()));
    }
View Full Code Here

TOP

Related Classes of com.redspr.redquerybuilder.core.client.command.CommandBuilder

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.