internal string CreateSqlCondition(ColumnDisplay disp, ISqlDialect dialect, IDmlfHandler handler, bool includeUserInput) { if (disp != null) { m_lastColumnDisplay = disp; } if (TableData == null) { return(""); } List <string> conds = new List <string>(); if (includeUserInput && !Filter.IsEmpty()) { conds.Add("(" + Filter + ")"); } if (AdditionalCondition != null) { conds.Add("(" + AdditionalCondition.ToSql(dialect, handler) + ")"); } if (TableData.TabDataCaps.Filtering && !SearchText.IsEmpty()) { conds.Add(CreateSearchCondition(disp, dialect, handler)); } if (conds.Count == 0) { return(""); } return(String.Join(" AND ", conds.ToArray())); }
public override void GenSql(ISqlDumper dmp, IDmlfHandler handler) { foreach (var rel in this) { rel.GenSql(dmp, handler); } }
public override void GenSql(ISqlDumper dmp, IDmlfHandler handler) { Expr.GenSql(dmp, handler); if (m_alias != null) { dmp.Put(" ^as %i", m_alias); } }
//public static List<string> GetBaseColumns(this IEnumerable<DmlfColumnRef> cols) //{ // var res = new List<string>(); // foreach (var col in cols) // { // if (col.Source != null && col.Source.Alias != "basetbl") continue; // res.Add(col.ColumnName); // } // return res; //} //public static int GetBaseOrdinal(this IEnumerable<DmlfColumnRef> cols, string colname) //{ // int index = 0; // foreach (var col in cols) // { // if (col.Source == null || col.Source.Alias == "basetbl") // { // if (col.ColumnName == colname) return index; // } // index++; // } // return -1; //} public static string ToSql(this IDmlfNode node, ISqlDialect dialect, IDmlfHandler handler) { var sw = new StringWriter(); var dmp = dialect.CreateDumper(sw); node.GenSql(dmp, handler); return(sw.ToString()); }
public override void GenSql(ISqlDumper dmp, IDmlfHandler handler) { if (Condition != null) { dmp.Put("&n^where &>"); Condition.GenSql(dmp, handler); dmp.Put("&<"); } }
public void GenSqlDef(ISqlDumper dmp, IDmlfHandler handler) { if (TableOrView != null) { dmp.Put("%f", TableOrView); } if (Alias != null) { dmp.Put(" %i", Alias); } }
public override void GenSql(ISqlDumper dmp, IDmlfHandler handler) { var src = Source; if (src == null) { src = handler.BaseTable; } dmp.Put("&n^from &>"); src.GenSqlDef(dmp, handler); dmp.Put(" "); Relations.GenSql(dmp, handler); dmp.Put("&<"); }
public override void GenSql(ISqlDumper dmp, IDmlfHandler handler) { dmp.Put("^select "); Columns.GenSql(dmp, handler); From.GenSql(dmp, handler); if (Where != null) { Where.GenSql(dmp, handler); } if (OrderBy != null) { OrderBy.GenSql(dmp, handler); } }
public override void GenSql(ISqlDumper dmp, IDmlfHandler handler) { JoinType.GenSql(dmp); dmp.Put("&n"); Reference.GenSqlDef(dmp, handler); dmp.Put(" ^on "); bool was = false; foreach (var cond in Conditions) { if (was) { dmp.Put(" ^and "); } cond.GenSql(dmp, handler); was = true; } }
public bool GenSqlRef(ISqlDumper dmp, IDmlfHandler handler) { if (Alias != null) { dmp.Put("%i", Alias); return(true); } else if (TableOrView != null) { dmp.Put("%f", TableOrView); return(true); } else if (handler != null && handler.BaseTable != null && handler.BaseTable != this) { return(handler.BaseTable.GenSqlRef(dmp, handler)); } return(false); }
public override void GenSql(ISqlDumper dmp, IDmlfHandler handler) { if (Source != null) { if (Source.GenSqlRef(dmp, handler)) { dmp.Put("."); } } else if (handler != null) { var b = handler.BaseTable; if (b != null) { b.GenSqlRef(dmp, handler); dmp.Put("."); } } dmp.Put("%i", ColumnName); }
public virtual void GenSql(ISqlDumper dmp, IDmlfHandler handler) { dmp.Put("&>"); bool was = false; foreach (var item in this) { if (was) { dmp.Put(",&n"); } else { dmp.Put("&n"); } item.GenSql(dmp, handler); was = true; } dmp.Put("&<"); }
public override void GenSql(ISqlDumper dmp, IDmlfHandler handler) { if (Conditions.Count == 0) { GenSqlEmpty(dmp); } else { GenSqlBegin(dmp); bool was = false; foreach (var item in Conditions) { if (was) { GenSqlConjuction(dmp); } GenSqlItem(item, dmp, handler); was = true; } GenSqlEnd(dmp); } }
public override void GenSql(ISqlDumper dmp, IDmlfHandler handler) { LeftExpr.GenSql(dmp, handler); dmp.Put(" ^like "); RightExpr.GenSql(dmp, handler); }
/// <summary> /// adds primary key information to query definition, or marks columns as read only, of no PK is available /// </summary> /// <param name="handler">used for obtain table structures with PKs</param> public void CompleteUpdatingInfo(IDmlfHandler handler) { var pks = new Dictionary <DmlfSource, IPrimaryKey>(); var required_pks = new Dictionary <DmlfSource, IPrimaryKey>(); // list of columns var usedcols = new HashSetEx <DmlfColumnRef>(); foreach (var col in Columns) { var di = col.DisplayInfo; if (di == null) { continue; } var tbl = col.Source; if (tbl == null) { tbl = handler.BaseTable; } if (tbl == null) { continue; } var cr = col.Expr as DmlfColumnRefExpression; if (cr == null) { di.IsReadOnly = true; continue; } if (!pks.ContainsKey(tbl)) { pks[tbl] = null; if (handler != null) { var ts = handler.GetStructure(tbl.TableOrView); if (ts != null) { pks[tbl] = ts.FindConstraint <IPrimaryKey>(); } } } var pk = pks[tbl]; if (pk == null) { // no primary key, is readonly di.IsReadOnly = true; continue; } var pkcols = new List <string>(pk.Columns.GetNames()); if (pkcols.Contains(cr.Column.ColumnName)) { di.IsPrimaryKey = true; } usedcols.Add(new DmlfColumnRef { Source = tbl, ColumnName = cr.Column.ColumnName }); if (di.Style == ColumnDisplayInfo.UsageStyle.Value) { required_pks[tbl] = pk; } if (di.Style == ColumnDisplayInfo.UsageStyle.Lookup) { di.IsReadOnly = true; } } // add missing primary key columns as hidden columns foreach (var pkt in required_pks) { foreach (string col in pkt.Value.Columns.GetNames()) { var key = new DmlfColumnRef { Source = pkt.Key, ColumnName = col }; if (usedcols.Contains(key)) { continue; } usedcols.Add(key); var nc = new DmlfResultField { DisplayInfo = new ColumnDisplayInfo { IsPrimaryKey = true, Style = ColumnDisplayInfo.UsageStyle.Hidden, }, Expr = new DmlfColumnRefExpression { Column = new DmlfColumnRef { Source = pkt.Key, ColumnName = col, } } }; Columns.Add(nc); } } }
private string CreateSearchCondition(ColumnDisplay disp, ISqlDialect dialect, IDmlfHandler handler) { if (disp == null) { disp = m_lastColumnDisplay; } if (disp == null) { return("1=1"); } bool was = false; StringBuilder res = new StringBuilder(); //ITableStructure table = TableData.GetStructure(Perspective); var dda = dialect.CreateDataAdapter(); var spars = new FulltextSearchParams { ExactMatch = SearchExactMatch }; foreach (var col in disp) { var cs = (IColumnStructure)col.ValueTag; if (cs == null) { continue; } if (cs.DataType is DbTypeXml || cs.DataType is DbTypeBlob) { continue; } if (SearchColumns != null && Array.IndexOf(SearchColumns, col.ValueRef.ToString()) < 0) { continue; } if (was) { res.Append(" OR "); } res.Append(dda.GetFulltextSearchExpr(col.ValueRef.Expr.ToSql(dialect, handler), SearchText, spars)); //res.AppendFormat("{0} LIKE {1}", dialect.QuoteIdentifier(col.ColumnName), dialect.GetSqlLiteral("%" + SearchText + "%")); was = true; } if (!was) { res.Append("1=1"); } return("(" + res.ToString() + ")"); }
public override void GenSql(ISqlDumper dmp, IDmlfHandler handler) { Expr.GenSql(dmp, handler); dmp.Put(" "); OrderType.GenSql(dmp); }
public override void GenSql(ISqlDumper dmp, IDmlfHandler handler) { Column.GenSql(dmp, handler); }
public override void GenSql(ISqlDumper dmp, IDmlfHandler handler) { dmp.Put("%v", Value); }
public override void GenSql(ISqlDumper dmp, IDmlfHandler handler) { dmp.WriteRaw(Value); }
public void GenSqlCount(ISqlDumper dmp, IDmlfHandler handler) { dmp.Put("^select ^count(*) "); From.GenSql(dmp, handler); }
public override void GenSql(ISqlDumper dmp, IDmlfHandler handler) { dmp.Put("1=0"); }
public virtual void GenSql(ISqlDumper dmp, IDmlfHandler handler) { throw new NotImplementedError("DAE-00105"); }
public static DmlfColumnRef FindColumn(this IEnumerable <DmlfSource> tables, string name, IDmlfHandler handler) { name = (name ?? "").Trim(); foreach (var tbl in tables) { var ts = handler.GetStructure(tbl == null ? null : tbl.TableOrView); foreach (var col in ts.Columns) { if (tbl != null) { string fullname = tbl.AliasOrName + "." + col.ColumnName; if (String.Compare(fullname, name, true) == 0) { return new DmlfColumnRef { Source = tbl, ColumnName = col.ColumnName } } ; } if (String.Compare(col.ColumnName, name, true) == 0) { return new DmlfColumnRef { Source = tbl, ColumnName = col.ColumnName } } ; } } return(null); }
public virtual void GenSqlItem(DmlfConditionBase item, ISqlDumper dmp, IDmlfHandler handler) { item.GenSql(dmp, handler); }