Ejemplo n.º 1
0
        private void WriteColumnPredicates(DbTextWriter writer, IEnumerable <ColumnPredicate> predicates)
        {
            int i = 0;

            foreach (ColumnPredicate predicate in predicates)
            {
                if (predicate.OrToPreviousGroup)
                {
                    OnWriteOr(writer);
                }
                else if (i++ >= 1)
                {
                    OnWriteAnd(writer);
                }

                if (predicate.IsGroup)
                {
                    WriteBeginGroup(writer);
                    for (ColumnPredicate current = predicate; current != null; current = current.NextInGroup)
                    {
                        WriteColumnPredicate(writer, current);
                    }
                }
                else
                {
                    WriteColumnPredicate(writer, predicate);
                }
            }
        }
Ejemplo n.º 2
0
        private ParameterNames AddParameter(ColumnPredicate predicate)
        {
            if ((predicate.Value == null || predicate.Value == DBNull.Value) &&
                (predicate.Comparison == Comparison.NotEqual || predicate.Comparison == Comparison.Equal))
            {
                return(ParameterNames.Empty);
            }

            object value1;

            switch (predicate.Comparison)
            {
            case Comparison.DoesNotStartWith:
            case Comparison.StartsWith:
                value1 = predicate.Value + WildcardCharacter;
                break;

            case Comparison.DoesNotEndWith:
            case Comparison.EndsWith:
                value1 = WildcardCharacter + predicate.Value;
                break;

            case Comparison.DoesNotContain:
            case Comparison.Contains:
                value1 = WildcardCharacter + predicate.Value + WildcardCharacter;
                break;

            default:
                value1 = predicate.Value;
                break;
            }

            string param1Name = ParameterPrefix + NameGenerator(predicate.Column.Name);
            string param2Name = null;

            if (!Parameters.ContainsKey(param1Name))
            {
                Parameters.Add(param1Name, value1);
            }

            if (predicate.Comparison == Comparison.Between)
            {
                param2Name = ParameterPrefix + NameGenerator(predicate.Column.Name);
                if (!Parameters.ContainsKey(param2Name))
                {
                    Parameters.Add(param2Name, predicate.Value2);
                }
            }

            return(new ParameterNames(param1Name, param2Name));
        }
Ejemplo n.º 3
0
        private void WriteColumnPredicate(DbTextWriter writer, ColumnPredicate current)
        {
            if (current.IsJoinPredicate)
            {
                WriteJoinPredicate(writer, current);
                return;
            }

            writer.WritePredicate(current.Column, GetComparisonOperator(current.Comparison, current.Value), AddParameter(current));

            if (current.NextInGroup == null)
            {
                WriteEndGroup(writer);
            }

            if (current.NextInGroup != null && current.OrNextPredicate)
            {
                OnWriteOr(writer);
            }
            else if (current.NextInGroup != null)
            {
                OnWriteAnd(writer);
            }
        }
Ejemplo n.º 4
0
        public void AppendSelect(IQueryableColumn selectColumn)
        {
            string currentCulture = CultureInfo.CurrentCulture.Name;

            if (!session.UseDefaultLocale && session.DefaultLocale != currentCulture && session.IsLanguageSupported(currentCulture))
            {
                IQueryableColumn localizedColumn = selectColumn.LocalizedColumn;
                if (localizedColumn != null)
                {
                    localizedColumn = localizedColumn.As(selectColumn.Alias);
                    ColumnPredicate localizePredicate = (localizedColumn.Table.FindColumn("Locale") == currentCulture) | (localizedColumn.Table.FindColumn("Locale") == null);
                    if (!((ICommandBuilder)this).WherePredicates.Contains(localizePredicate))
                    {
                        ((ICommandBuilder)this).WherePredicates.Add(localizePredicate);
                    }
                    localizedColumn.LocalizeFallbackColumn = selectColumn;
                    Columns.Add(localizedColumn);

                    foreach (QueryColumn primaryKey in selectColumn.Table.PrimaryKey)
                    {
                        JoinPredicate joinPredicate = primaryKey == localizedColumn.Table.FindColumn(primaryKey.Name);

                        if (!LocalizedJoinPredicates.Contains(joinPredicate))
                        {
                            LocalizedJoinPredicates.Add(joinPredicate);
                        }
                    }

                    JoinInWhereClause = false;
                    return;
                }
            }

            AppendFrom(selectColumn.Table);
            Columns.Add(selectColumn);
        }