private bool TryGetTable(MemberExpression me) { if (me == null) { this.fallback = true; return(false); } TableFindResult result = this.tableFinder.Find(me); if (result.QueryString != null) { this.queryBuilder.Append(result.QueryString); } this.arguments.AddRange(result.Arguments); if (Table == null) { Table = result.Table; } else if (Table != result.Table) { this.fallback = true; return(false); } return(true); }
protected override Expression VisitMember(MemberExpression memberExpression) { TableFindResult result = tableFinder.Find(memberExpression); if (table == null) { table = result; } else if (Table != result.Table || result.MimeType != table.MimeType) { Fallback = true; return(memberExpression); } ContentResolverColumnMapping cmap = tableFinder.GetColumn(memberExpression.Member); if (cmap == null || cmap.Columns == null) { Fallback = true; return(memberExpression); } currentMap = cmap; if (cmap.Columns.Length == 1) { builder.Append(cmap.Columns[0]); } else { throw new NotSupportedException(); } return(base.VisitMember(memberExpression)); }
private Boolean TryGetTable(MemberExpression me) { if (me == null) { fallback = true; return(false); } TableFindResult result = tableFinder.Find(me); if (result.MimeType != null) { if (queryBuilder.Length > 0) { queryBuilder.Append(" AND "); } queryBuilder.Append(String.Format("({0} = ?)", ContactsContract.DataColumns.Mimetype)); } arguments.Add(result.MimeType); if (Table == null) { Table = result.Table; } else if (Table != result.Table) { fallback = true; return(false); } return(true); }
private bool TryGetTable(MemberExpression me) { if (me == null) { this.fallback = true; return(false); } TableFindResult result = this.tableFinder.Find(me); if (result.MimeType != null) { this.queryBuilder.Append(String.Format("({0} = ?)", ContactsContract.DataColumns.Mimetype)); } this.arguments.Add(result.MimeType); if (Table == null) { Table = result.Table; } else if (Table != result.Table) { this.fallback = true; return(false); } return(true); }
private Expression VisitWhere(MethodCallExpression methodCall) { Expression expression = ExpressionEvaluator.Evaluate(methodCall); var eval = new WhereEvaluator(this.tableFinder, Table); expression = eval.Evaluate(expression); TableFindResult result = eval.Result; if (Table == null) { Table = result.Table; } if (eval.Fallback || result.Table == null || result.Table != Table) { this.fallback = true; return(methodCall); } this.arguments.AddRange(result.Arguments); if (this.queryBuilder.Length > 0) { this.queryBuilder.Append(" AND "); } this.queryBuilder.Append(result.QueryString); return(methodCall.Arguments[0]); }
public WhereEvaluator(ITableFinder tableFinder, Uri existingTable) { this.tableFinder = tableFinder; if (existingTable != null) { table = new TableFindResult(existingTable, null); } }
public Expression Evaluate(Expression expression) { expression = Visit(expression); Result = new TableFindResult(this.table, this.builder.ToString(), this.arguments); return(expression); }
private Boolean TryGetTable(List <MemberExpression> memberExpressions) { if (memberExpressions.Count == 0) { fallback = true; return(false); } Uri existingTable = Table; TableFindResult presult = null; foreach (MemberExpression me in memberExpressions) { TableFindResult result = tableFinder.Find(me); if (result.Table == null) { fallback = true; return(false); } if (existingTable == null) { existingTable = result.Table; presult = result; } else if (existingTable != result.Table) { fallback = true; return(false); } } if (presult == null) { fallback = true; return(false); } Table = presult.Table; if (presult.MimeType != null) { if (queryBuilder.Length > 0) { queryBuilder.Append(" AND "); } queryBuilder.Append(String.Format("({0} = ?)", ContactsContract.DataColumns.Mimetype)); } arguments.Add(presult.MimeType); return(true); }
private bool TryGetTable(List <MemberExpression> memberExpressions) { if (memberExpressions.Count == 0) { this.fallback = true; return(false); } Android.Net.Uri existingTable = Table; TableFindResult presult = null; foreach (MemberExpression me in memberExpressions) { TableFindResult result = this.tableFinder.Find(me); if (result.Table == null) { this.fallback = true; return(false); } if (existingTable == null) { existingTable = result.Table; presult = result; } else if (existingTable != result.Table) { this.fallback = true; return(false); } } if (presult == null) { this.fallback = true; return(false); } Table = presult.Table; if (presult.QueryString != null) { this.queryBuilder.Append(presult.QueryString); } this.arguments.AddRange(presult.Arguments); return(true); }
protected override Expression VisitMemberAccess(MemberExpression memberExpression) { TableFindResult result = this.tableFinder.Find(memberExpression); if (this.table == null) { this.table = result.Table; this.builder.Append(result.QueryString); this.arguments.AddRange(result.Arguments); } else if (this.table != result.Table) { Fallback = true; return(memberExpression); } ContentResolverColumnMapping cmap = this.tableFinder.GetColumn(memberExpression.Member); if (cmap == null || cmap.Columns == null) { Fallback = true; return(memberExpression); } this.currentMap = cmap; if (this.builder.Length > 0) { this.builder.Append(" AND "); } if (cmap.Columns.Length == 1) { this.builder.Append(cmap.Columns[0]); } else { throw new NotSupportedException(); } return(base.VisitMemberAccess(memberExpression)); }
protected override Expression VisitMember( MemberExpression memberExpression ) { TableFindResult result = tableFinder.Find( memberExpression ); if(table == null) { table = result; } else if(Table != result.Table || result.MimeType != table.MimeType) { Fallback = true; return memberExpression; } ContentResolverColumnMapping cmap = tableFinder.GetColumn( memberExpression.Member ); if(cmap == null || cmap.Columns == null) { Fallback = true; return memberExpression; } currentMap = cmap; if(cmap.Columns.Length == 1) { builder.Append( cmap.Columns[0] ); } else { throw new NotSupportedException(); } return base.VisitMember( memberExpression ); }
public WhereEvaluator( ITableFinder tableFinder, Uri existingTable ) { this.tableFinder = tableFinder; if(existingTable != null) { table = new TableFindResult( existingTable, null ); } }
public Expression Evaluate (Expression expression) { expression = Visit (expression); Result = new TableFindResult (this.table, this.builder.ToString(), this.arguments); return expression; }