Class SqlQuery<D extends io.inversion.Db>

java.lang.Object
io.inversion.query.Builder<T,T>
io.inversion.query.Query<SqlQuery,D,io.inversion.query.Select<io.inversion.query.Select<io.inversion.query.Select,SqlQuery>,SqlQuery>,io.inversion.query.From<io.inversion.query.From<io.inversion.query.From,SqlQuery>,SqlQuery>,io.inversion.query.Where<io.inversion.query.Where<io.inversion.query.Where,SqlQuery>,SqlQuery>,io.inversion.query.Group<io.inversion.query.Group<io.inversion.query.Group,SqlQuery>,SqlQuery>,io.inversion.query.Order<io.inversion.query.Order<io.inversion.query.Order,SqlQuery>,SqlQuery>,io.inversion.query.Page<io.inversion.query.Page<io.inversion.query.Page,SqlQuery>,SqlQuery>>
io.inversion.jdbc.SqlQuery<D>

public class SqlQuery<D extends io.inversion.Db> extends io.inversion.query.Query<SqlQuery,D,io.inversion.query.Select<io.inversion.query.Select<io.inversion.query.Select,SqlQuery>,SqlQuery>,io.inversion.query.From<io.inversion.query.From<io.inversion.query.From,SqlQuery>,SqlQuery>,io.inversion.query.Where<io.inversion.query.Where<io.inversion.query.Where,SqlQuery>,SqlQuery>,io.inversion.query.Group<io.inversion.query.Group<io.inversion.query.Group,SqlQuery>,SqlQuery>,io.inversion.query.Order<io.inversion.query.Order<io.inversion.query.Order,SqlQuery>,SqlQuery>,io.inversion.query.Page<io.inversion.query.Page<io.inversion.query.Page,SqlQuery>,SqlQuery>>
Composes and executes a SQL SELECT based on supplied RQL Terms.
  • Field Details

    • stringQuote

      protected char stringQuote
    • columnQuote

      protected char columnQuote
  • Constructor Details

    • SqlQuery

      public SqlQuery(D db, io.inversion.Collection table, List<io.inversion.rql.Term> terms)
  • Method Details

    • addTerm

      protected boolean addTerm(String token, io.inversion.rql.Term term)
      Overrides:
      addTerm in class io.inversion.query.Builder<SqlQuery,SqlQuery>
    • doSelect

      public io.inversion.Results doSelect() throws io.inversion.ApiException
      Overrides:
      doSelect in class io.inversion.query.Query<SqlQuery,D extends io.inversion.Db,io.inversion.query.Select<io.inversion.query.Select<io.inversion.query.Select,SqlQuery>,SqlQuery>,io.inversion.query.From<io.inversion.query.From<io.inversion.query.From,SqlQuery>,SqlQuery>,io.inversion.query.Where<io.inversion.query.Where<io.inversion.query.Where,SqlQuery>,SqlQuery>,io.inversion.query.Group<io.inversion.query.Group<io.inversion.query.Group,SqlQuery>,SqlQuery>,io.inversion.query.Order<io.inversion.query.Order<io.inversion.query.Order,SqlQuery>,SqlQuery>,io.inversion.query.Page<io.inversion.query.Page<io.inversion.query.Page,SqlQuery>,SqlQuery>>
      Throws:
      io.inversion.ApiException
    • getPreparedStmt

      public String getPreparedStmt()
    • getDynamicStmt

      public String getDynamicStmt()
    • toSql

      protected String toSql(boolean preparedStmt)
    • printSql

      protected String printSql(SqlQuery.Parts parts)
    • printInitialSelect

      protected String printInitialSelect(SqlQuery.Parts parts)
    • printTermsSelect

      protected String printTermsSelect(SqlQuery.Parts parts, boolean preparedStmt)
    • printJoins

      protected String printJoins(SqlQuery.Parts parts, LinkedHashMap<String,io.inversion.rql.Term> joins)
    • printWhereClause

      protected String printWhereClause(SqlQuery.Parts parts, List<io.inversion.rql.Term> terms, boolean preparedStmt)
    • printGroupClause

      protected String printGroupClause(SqlQuery.Parts parts, List<String> groupBy)
    • printOrderClause

      protected String printOrderClause(SqlQuery.Parts parts, io.inversion.query.Order order)
    • getDefaultSorts

      protected List<io.inversion.query.Order.Sort> getDefaultSorts(SqlQuery.Parts parts)
    • printLimitClause

      protected String printLimitClause(SqlQuery.Parts parts, int offset, int limit)
    • queryFoundRows

      protected int queryFoundRows(Connection conn, String sql, List values) throws Exception
      Throws:
      Exception
    • printTerm

      protected String printTerm(io.inversion.rql.Term term, String col, boolean preparedStmt)
    • printExpression

      protected String printExpression(io.inversion.rql.Term term, List<String> dynamicSqlChildText, List<String> preparedStmtChildText)
      Override to handle printing additional functions or to change the way a specific function is printed.
      Parameters:
      term - the term to print
      dynamicSqlChildText - child tokens printed as dynamic sql
      preparedStmtChildText - child tokens printed as prepared statements
      Returns:
      the sql statement for term
    • replace

      protected String replace(io.inversion.rql.Term parent, io.inversion.rql.Term leaf, int index, String col, String val)
    • concatAll

      protected String concatAll(String connector, String function, List strings)
    • isCol

      protected boolean isCol(io.inversion.rql.Term term)
    • quoteCol

      public String quoteCol(String str)
    • printTableAlias

      public String printTableAlias()
    • printCol

      public String printCol(String columnName)
    • asVariableName

      protected String asVariableName(int valuesPairIdx)
    • asString

      protected String asString(String string)
    • asString

      protected String asString(io.inversion.rql.Term term)
    • asNum

      protected String asNum(String token)
    • isNum

      protected boolean isNum(io.inversion.rql.Term term)
    • isBool

      protected boolean isBool(io.inversion.rql.Term term)
    • asBool

      public String asBool(String token)
    • withDb

      public SqlQuery withDb(D db)
      Overrides:
      withDb in class io.inversion.query.Query<SqlQuery,D extends io.inversion.Db,io.inversion.query.Select<io.inversion.query.Select<io.inversion.query.Select,SqlQuery>,SqlQuery>,io.inversion.query.From<io.inversion.query.From<io.inversion.query.From,SqlQuery>,SqlQuery>,io.inversion.query.Where<io.inversion.query.Where<io.inversion.query.Where,SqlQuery>,SqlQuery>,io.inversion.query.Group<io.inversion.query.Group<io.inversion.query.Group,SqlQuery>,SqlQuery>,io.inversion.query.Order<io.inversion.query.Order<io.inversion.query.Order,SqlQuery>,SqlQuery>,io.inversion.query.Page<io.inversion.query.Page<io.inversion.query.Page,SqlQuery>,SqlQuery>>
    • withType

      public SqlQuery withType(String type)
    • getType

      public String getType()
    • withStringQuote

      public void withStringQuote(char stringQuote)
    • withColumnQuote

      public void withColumnQuote(char columnQuote)