Example #1
0
 /// <summary>
 /// Renomea a coluna para o nome do mapeamento.
 /// </summary>
 /// <param name="provider">Provider que será usado para renomear.</param>
 internal void RenameToMapper(GDA.Interfaces.IProvider provider)
 {
     if (!string.IsNullOrEmpty(DBColumnName))
     {
         Rename(provider != null ? provider.QuoteExpression(DBColumnName) : DBColumnName);
     }
 }
Example #2
0
 /// <summary>
 /// Passa a consulta para string.
 /// </summary>
 /// <param name="provider">Provider usado para gerar a consulta.</param>
 /// <param name="parameterContainer"></param>
 /// <returns></returns>
 public string Parser2(GDA.Interfaces.IProvider provider, IGDAParameterContainer parameterContainer)
 {
     foreach (TableInfo ti in TablesInfo)
     {
         ti.RenameToMapper();
         foreach (ColumnInfo ci in ti.Columns)
         {
             ci.RenameToMapper(provider);
         }
     }
     foreach (var variableInfo in VariablesInfo)
     {
         variableInfo.Replace(provider, parameterContainer, null);
     }
     return((new ParserToSqlCommand(this._parser, provider.QuoteExpressionBegin, provider.QuoteExpressionEnd)).SqlCommand);
 }
Example #3
0
        /// <summary>
        /// Constrói as informações para o resultado da consulta.
        /// </summary>
        /// <param name="provider">Provider que será utilizado no build.</param>
        /// <param name="aggregationFunction">Função de agregação usada para recuperar o resultado.</param>
        /// <param name="classesDictionary">Dicionário com as classe que já foram processadas.</param>
        /// <returns></returns>
        public override QueryReturnInfo BuildResultInfo2(GDA.Interfaces.IProvider provider, string aggregationFunction, Dictionary <string, Type> classesDictionary)
        {
            var query = Parser2(provider, parameters);

            query = query.TrimStart(' ', '\r', '\n', '\t');
            if (query.IndexOf("SELECT ", StringComparison.InvariantCultureIgnoreCase) == 0)
            {
                var fromPos = query.IndexOf(" FROM ");
                if (fromPos > 0)
                {
                    query = query.Substring(0, "SELECT ".Length) + aggregationFunction + query.Substring(fromPos);
                }
            }
            var orderByIndex = query.LastIndexOf("ORDER BY");

            if (orderByIndex >= 0)
            {
                query = query.Substring(0, orderByIndex);
            }
            return(new QueryReturnInfo(query, parameters, new List <Mapper>()));
        }
Example #4
0
        /// <summary>
        /// Executa o replace da variável.
        /// </summary>
        /// <param name="provider"></param>
        /// <param name="parameterContainer">Container dos parametros que serão processados.</param>
        /// <param name="classesDictionary"></param>
        /// <returns></returns>
        public bool Replace(GDA.Interfaces.IProvider provider, IGDAParameterContainer parameterContainer, Dictionary <string, Type> classesDictionary)
        {
            if (parameterContainer == null)
            {
                return(false);
            }
            GDAParameter parameter = null;

            if (!parameterContainer.TryGet(Name, out parameter))
            {
                return(false);
            }
            QueryReturnInfo returnInfo = null;

            if (parameter.Value is IQuery)
            {
                var query = (IQuery)parameter.Value;
                returnInfo = query.BuildResultInfo2(provider, query.AggregationFunctionProperty, classesDictionary);
            }
            else
            {
                returnInfo = parameter.Value as QueryReturnInfo;
            }
            if (returnInfo != null)
            {
                _expression.Text = returnInfo.CommandText;
                foreach (var p in returnInfo.Parameters)
                {
                    if (!parameterContainer.ContainsKey(p.ParameterName))
                    {
                        parameterContainer.Add(p);
                    }
                }
                return(true);
            }
            return(false);
        }
Example #5
0
        //// <summary>
        /// Constrói as informações para o resultado da consulta.
        /// </summary>
        /// <param name="provider">Provider que será utilizado no build.</param>
        /// <param name="aggregationFunction">Função de agregação usada para recuperar o resultado.</param>
        /// <param name="classesDictionary">Dicionário com as classe que já foram processadas.</param>
        /// <returns></returns>
        public override QueryReturnInfo BuildResultInfo2(GDA.Interfaces.IProvider provider, string aggregationFunction, Dictionary <string, Type> classesDictionary)
        {
            if (string.IsNullOrEmpty(_commandText))
            {
                throw new QueryException("Command text not informed.");
            }
            var query = _commandText;

            query = query.TrimStart(' ', '\r', '\n', '\t');
            var match = Regex.Match(_commandText, "SELECT(?<selectpart>(\r|\n|\r\n|.*?)*?)FROM", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);

            if (!match.Success)
            {
                throw new QueryException("Invalid aggregation function.\r\nNot found SELECT ... FROM for substitution in command");
            }
            query = query.Replace(match.Groups["selectpart"].Value, " " + aggregationFunction + " ");
            var orderByIndex = query.LastIndexOf("ORDER BY");

            if (orderByIndex >= 0)
            {
                query = query.Substring(0, orderByIndex);
            }
            return(new QueryReturnInfo(query, this.Parameters, new List <Mapper>()));
        }
Example #6
0
 /// <summary>
 /// Construtor Padr�o.
 /// </summary>
 /// <param name="connectionString">ConnectionString a ser utilizado pelo provider.</param>
 /// <param name="provider">Provider a ser tratado.</param>
 public ProviderConfiguration(string connectionString, GDA.Interfaces.IProvider provider)
 {
     _ConnectionString = connectionString;
     _Provider         = provider;
 }
Example #7
0
 /// <summary>
 /// Constrói as informações para o resultado da consulta.
 /// </summary>
 /// <param name="provider">Provider que será utilizado no build.</param>
 /// <param name="aggregationFunction">Função de agregação usada para recuperar o resultado.</param>
 /// <param name="classesDictionary">Dicionário com as classe que já foram processadas.</param>
 /// <returns></returns>
 public abstract QueryReturnInfo BuildResultInfo2(GDA.Interfaces.IProvider provider, string aggregationFunction, Dictionary <string, Type> classesDictionary);
Example #8
0
 /// <summary>
 /// Constrói as informações para o resultado da consulta.
 /// </summary>
 /// <param name="aggregationFunction">Função de agregação usada para recuperar o resultado.</param>
 /// <param name="provider">Provider que será utilizado no build.</param>
 /// <returns></returns>
 public abstract QueryReturnInfo BuildResultInfo2(GDA.Interfaces.IProvider provider, string aggregationFunction);
Example #9
0
 /// <summary>
 /// Constrói as informações para o resultado da consulta.
 /// </summary>
 /// <param name="aggregationFunction">Função de agregação usada para recuperar o resultado.</param>
 /// <returns></returns>
 public override QueryReturnInfo BuildResultInfo2(GDA.Interfaces.IProvider provider, string aggregationFunction)
 {
     return(BuildResultInfo2(provider, aggregationFunction, new Dictionary <string, Type>()));
 }
Example #10
0
 /// <summary>
 /// Passa a consulta para string.
 /// </summary>
 /// <param name="provider">Provider usado para gerar a consulta.</param>
 /// <returns></returns>
 public string Parser(GDA.Interfaces.IProvider provider)
 {
     return(Parser2(provider, null));
 }
Example #11
0
 /// <summary>
 /// Converte um parametro do GDA para um parametro do ADO.NET.
 /// </summary>
 /// <param name="cmd"></param>
 /// <param name="parameter"></param>
 /// <param name="provider">Provider que será usado na conversão.</param>
 /// <returns></returns>
 internal static IDbDataParameter ConvertGDAParameter(IDbCommand cmd, GDAParameter parameter, GDA.Interfaces.IProvider provider)
 {
     if (provider is Interfaces.IParameterConverter2)
     {
         return(((Interfaces.IParameterConverter2)provider).Converter(cmd, parameter));
     }
     else if (provider is Interfaces.IParameterConverter)
     {
         return(((Interfaces.IParameterConverter)provider).Convert(parameter));
     }
     else
     {
         IDbDataParameter p = cmd.CreateParameter();
         if (p.Direction != parameter.Direction)
         {
             p.Direction = parameter.Direction;
         }
         p.Size = parameter.Size;
         try
         {
             if (parameter.ParameterName[0] == '?')
             {
                 p.ParameterName = provider.ParameterPrefix + parameter.ParameterName.Substring(1) + provider.ParameterSuffix;
             }
             else
             {
                 p.ParameterName = parameter.ParameterName;
             }
         }
         catch (Exception ex)
         {
             throw new GDAException("Error on convert parameter name '" + parameter.ParameterName + "'.", ex);
         }
         if (parameter.DbTypeIsDefined)
         {
             p.DbType = parameter.DbType;
         }
         provider.SetParameterValue(p, parameter.Value == null ? DBNull.Value : parameter.Value);
         return(p);
     }
 }