/**
 * generated by Xtext 2.9.2
 */
package com.justeat.mickeydb.mickeyLang;


/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Select Expression</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * </p>
 * <ul>
 *   <li>{@link com.justeat.mickeydb.mickeyLang.SelectExpression#isDistinct <em>Distinct</em>}</li>
 *   <li>{@link com.justeat.mickeydb.mickeyLang.SelectExpression#isAll <em>All</em>}</li>
 *   <li>{@link com.justeat.mickeydb.mickeyLang.SelectExpression#isAllColumns <em>All Columns</em>}</li>
 *   <li>{@link com.justeat.mickeydb.mickeyLang.SelectExpression#getSelectList <em>Select List</em>}</li>
 *   <li>{@link com.justeat.mickeydb.mickeyLang.SelectExpression#getSource <em>Source</em>}</li>
 *   <li>{@link com.justeat.mickeydb.mickeyLang.SelectExpression#getWhere <em>Where</em>}</li>
 *   <li>{@link com.justeat.mickeydb.mickeyLang.SelectExpression#getGroupBy <em>Group By</em>}</li>
 *   <li>{@link com.justeat.mickeydb.mickeyLang.SelectExpression#getHaving <em>Having</em>}</li>
 * </ul>
 *
 * @see com.justeat.mickeydb.mickeyLang.MickeyLangPackage#getSelectExpression()
 * @model
 * @generated
 */
public interface SelectExpression extends SelectCoreExpression
{
  /**
   * Returns the value of the '<em><b>Distinct</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Distinct</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Distinct</em>' attribute.
   * @see #setDistinct(boolean)
   * @see com.justeat.mickeydb.mickeyLang.MickeyLangPackage#getSelectExpression_Distinct()
   * @model
   * @generated
   */
  boolean isDistinct();

  /**
   * Sets the value of the '{@link com.justeat.mickeydb.mickeyLang.SelectExpression#isDistinct <em>Distinct</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Distinct</em>' attribute.
   * @see #isDistinct()
   * @generated
   */
  void setDistinct(boolean value);

  /**
   * Returns the value of the '<em><b>All</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>All</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>All</em>' attribute.
   * @see #setAll(boolean)
   * @see com.justeat.mickeydb.mickeyLang.MickeyLangPackage#getSelectExpression_All()
   * @model
   * @generated
   */
  boolean isAll();

  /**
   * Sets the value of the '{@link com.justeat.mickeydb.mickeyLang.SelectExpression#isAll <em>All</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>All</em>' attribute.
   * @see #isAll()
   * @generated
   */
  void setAll(boolean value);

  /**
   * Returns the value of the '<em><b>All Columns</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>All Columns</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>All Columns</em>' attribute.
   * @see #setAllColumns(boolean)
   * @see com.justeat.mickeydb.mickeyLang.MickeyLangPackage#getSelectExpression_AllColumns()
   * @model
   * @generated
   */
  boolean isAllColumns();

  /**
   * Sets the value of the '{@link com.justeat.mickeydb.mickeyLang.SelectExpression#isAllColumns <em>All Columns</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>All Columns</em>' attribute.
   * @see #isAllColumns()
   * @generated
   */
  void setAllColumns(boolean value);

  /**
   * Returns the value of the '<em><b>Select List</b></em>' containment reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Select List</em>' containment reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Select List</em>' containment reference.
   * @see #setSelectList(SelectList)
   * @see com.justeat.mickeydb.mickeyLang.MickeyLangPackage#getSelectExpression_SelectList()
   * @model containment="true"
   * @generated
   */
  SelectList getSelectList();

  /**
   * Sets the value of the '{@link com.justeat.mickeydb.mickeyLang.SelectExpression#getSelectList <em>Select List</em>}' containment reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Select List</em>' containment reference.
   * @see #getSelectList()
   * @generated
   */
  void setSelectList(SelectList value);

  /**
   * Returns the value of the '<em><b>Source</b></em>' containment reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Source</em>' containment reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Source</em>' containment reference.
   * @see #setSource(JoinSource)
   * @see com.justeat.mickeydb.mickeyLang.MickeyLangPackage#getSelectExpression_Source()
   * @model containment="true"
   * @generated
   */
  JoinSource getSource();

  /**
   * Sets the value of the '{@link com.justeat.mickeydb.mickeyLang.SelectExpression#getSource <em>Source</em>}' containment reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Source</em>' containment reference.
   * @see #getSource()
   * @generated
   */
  void setSource(JoinSource value);

  /**
   * Returns the value of the '<em><b>Where</b></em>' containment reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Where</em>' containment reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Where</em>' containment reference.
   * @see #setWhere(WhereExpressions)
   * @see com.justeat.mickeydb.mickeyLang.MickeyLangPackage#getSelectExpression_Where()
   * @model containment="true"
   * @generated
   */
  WhereExpressions getWhere();

  /**
   * Sets the value of the '{@link com.justeat.mickeydb.mickeyLang.SelectExpression#getWhere <em>Where</em>}' containment reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Where</em>' containment reference.
   * @see #getWhere()
   * @generated
   */
  void setWhere(WhereExpressions value);

  /**
   * Returns the value of the '<em><b>Group By</b></em>' containment reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Group By</em>' containment reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Group By</em>' containment reference.
   * @see #setGroupBy(GroupByExpressions)
   * @see com.justeat.mickeydb.mickeyLang.MickeyLangPackage#getSelectExpression_GroupBy()
   * @model containment="true"
   * @generated
   */
  GroupByExpressions getGroupBy();

  /**
   * Sets the value of the '{@link com.justeat.mickeydb.mickeyLang.SelectExpression#getGroupBy <em>Group By</em>}' containment reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Group By</em>' containment reference.
   * @see #getGroupBy()
   * @generated
   */
  void setGroupBy(GroupByExpressions value);

  /**
   * Returns the value of the '<em><b>Having</b></em>' containment reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Having</em>' containment reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Having</em>' containment reference.
   * @see #setHaving(HavingExpressions)
   * @see com.justeat.mickeydb.mickeyLang.MickeyLangPackage#getSelectExpression_Having()
   * @model containment="true"
   * @generated
   */
  HavingExpressions getHaving();

  /**
   * Sets the value of the '{@link com.justeat.mickeydb.mickeyLang.SelectExpression#getHaving <em>Having</em>}' containment reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Having</em>' containment reference.
   * @see #getHaving()
   * @generated
   */
  void setHaving(HavingExpressions value);

} // SelectExpression
