Package com.redspr.redquerybuilder.core.client.engine

Source Code of com.redspr.redquerybuilder.core.client.engine.Session

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


import com.google.gwt.event.shared.HandlerManager;
import com.redspr.redquerybuilder.core.client.Configuration;
import com.redspr.redquerybuilder.core.client.ValueRegistry;
import com.redspr.redquerybuilder.core.client.command.CommandBuilder;
import com.redspr.redquerybuilder.core.client.command.dml.Select;
import com.redspr.redquerybuilder.core.client.conf.IdentifierEscaper;
import com.redspr.redquerybuilder.core.client.table.TableFilter;
import com.redspr.redquerybuilder.core.client.util.ObjectArray;
import com.redspr.redquerybuilder.core.shared.meta.Column;
import com.redspr.redquerybuilder.core.shared.meta.Database;
import com.redspr.redquerybuilder.core.shared.meta.Table;

/**
* Communication bus for entire system.
*
* All nodes in the tree hold a reference to its Session.
*/
public class Session {

    private static IdentifierEscaper identifierEscaper = new IdentifierEscaper() {
        @Override
        public String quote(String id) {
            return "\"" + id + "\"";
        }
    };

  public void setIdentifierEscaper(IdentifierEscaper p) {
      identifierEscaper = p;
  }

  /**
   * Add double quotes around an identifier if required.
   *
   * @param s the identifier
   * @return the quoted identifier
   */
  public static String quoteIdentifier(String s) {
      return identifierEscaper.quote(s);
  }

    // XXX need commandBuilder and select?
    private CommandBuilder commandBuilder;

    private Select select;

    private Configuration config;

    private final ValueRegistry valueRegistry = new ValueRegistry();

    private final Database database;

    private final HandlerManager msgbus;


  // XXX 00 remove one of these constructors
  public Session(Configuration config2) {
      this(config2.getDatabase());
      this.config = config2;
  }

  @Deprecated
  public Session(Database database2) {
      database = database2;
      msgbus = new HandlerManager(this);
  }

    public Configuration getConfig() {
        return config;
    }

    public CommandBuilder getCommandBuilder() {
        return commandBuilder;
    }

    public void setCommandBuilder(CommandBuilder p) {
        commandBuilder = p;
    }

    public Database getDatabase() {
        return database;
    }


  public HandlerManager getMsgBus() {
      return msgbus;
  }



  public void setSelect(Select p) {
      select = p;
  }

  public Column resolveColumn(String alias, String columnName) {
      return select.resolveColumn(alias, columnName);
  }

  public ObjectArray<TableFilter> getFilters() {
      return select.getFilters();
  }

  public TableFilter getTableFilter(Table t) {
      for (TableFilter tf : select.getFilters()) {
          if (tf.getTable().equals(t)) {
              return tf;
          }
      }
      return null;
  }

  public TableFilter createTableFilter(Table t) {
      TableFilter tf = new TableFilter(this, t, TableFilter.newAlias(), select);
      select.addTableFilter(tf, true); // XXX really is true?
      return tf;
  }

  public TableFilter getOrCreateTableFilter(Table t) {
      TableFilter tf = getTableFilter(t);
      if (tf == null) {
          tf = createTableFilter(t);
      }
      return tf;
  }

  //public Table getTable(String alias) {
  //    return select.getTable(alias);
  //}

  public Table getRootTable() {
      // XXX maybe if no table then grab default?
      // or should select always have one table?
      // or ui shouldn't offer condition button till table?
      return select.getFilters().get(0).getTable();
  }

    public ValueRegistry getValueRegistry() {
        return valueRegistry;
    }
}
TOP

Related Classes of com.redspr.redquerybuilder.core.client.engine.Session

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.