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

Source Code of com.redspr.redquerybuilder.core.client.command.CommandBuilder

package com.redspr.redquerybuilder.core.client.command;

import java.sql.SQLException;
import java.util.List;

import com.google.gwt.event.logical.shared.HasValueChangeHandlers;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.ui.SimplePanel;
import com.redspr.redquerybuilder.core.client.BaseSqlWidget;
import com.redspr.redquerybuilder.core.client.BaseSqlWidget.Callback;
import com.redspr.redquerybuilder.core.client.command.dml.Select;
import com.redspr.redquerybuilder.core.client.engine.Session;

/**
* Container for the command - currently only ever SELECT
*/
public class CommandBuilder extends SimplePanel implements
        HasValueChangeHandlers<Select> {

    private final Select select;

    public Select getSelect() {
        return select;
    }

    public CommandBuilder(Session session2) throws SQLException {
        this(session2, null, null);
    }

    public CommandBuilder(Session session, String sql, List<Object> args)
            throws SQLException {

        session.setCommandBuilder(this);

        if (sql == null || sql.isEmpty()) {
            select = new Select(session);
        } else {
            Parser p = new Parser(session);
            if (args != null) { // XXX unit test for this
                for (Object a : args) {
                    session.getValueRegistry().add(a);
                }
            }
            select = (Select) p.parseOnly(sql);
        }

        setWidget(select);

        fireDirty();
    }

    public void fireDirty() {
        select.traverse(new Callback() {
            @Override
            public void handle(BaseSqlWidget w) {
                w.onDirty();
            }
        });

        ValueChangeEvent.fire(this, select);
    }

    @Override
    public HandlerRegistration addValueChangeHandler(
            ValueChangeHandler<Select> handler) {
        return addHandler(handler, ValueChangeEvent.getType());
    }
}
TOP

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

TOP
Copyright © 2018 www.massapi.com. 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.