Пример #1
0
        public void Build()
        {
            if (!isSetup)
            {
                throw new InvalidOperationException();
            }

            var connectionString = queryXml.GetConnectionString();
            var parameters       = BuildParameters(queryXml.GetParameters());
            var variables        = queryXml.GetVariables();
            var timeout          = queryXml.Timeout;

            if (!string.IsNullOrEmpty(queryXml.InlineQuery))
            {
                args = new EmbeddedQueryResolverArgs(queryXml.InlineQuery
                                                     , connectionString, parameters, variables, timeout);
            }

            else if (!string.IsNullOrEmpty(queryXml.File))
            {
                var file = GetFullPath(settingsXml?.BasePath, queryXml.File);

                args = new ExternalFileQueryResolverArgs(file
                                                         , connectionString, parameters, variables, timeout);
            }

            else if (queryXml.Assembly != null)
            {
                var file = GetFullPath(settingsXml?.BasePath, queryXml.Assembly.Path);

                args = new AssemblyQueryResolverArgs(
                    file, queryXml.Assembly.Klass, queryXml.Assembly.Method,
                    queryXml.Assembly.Static, queryXml.Assembly.GetMethodParameters()
                    , connectionString, parameters, variables, timeout);
            }

            else if (queryXml.Report != null)
            {
                var path = string.IsNullOrEmpty(queryXml.Report.Source) ? settingsXml.BasePath + queryXml.Report.Path : queryXml.Report.Path;

                args = new ReportDataSetQueryResolverArgs(
                    queryXml.Report.Source, path, queryXml.Report.Name, queryXml.Report.Dataset
                    , connectionString, parameters, variables, timeout);
            }

            else if (queryXml.SharedDataset != null)
            {
                var path = string.IsNullOrEmpty(queryXml.SharedDataset.Source) ? settingsXml.BasePath + queryXml.SharedDataset.Path : queryXml.SharedDataset.Path;

                args = new SharedDataSetQueryResolverArgs(
                    queryXml.SharedDataset.Source, queryXml.SharedDataset.Path, queryXml.SharedDataset.Name
                    , connectionString, parameters, variables, timeout);
            }

            if (args == null)
            {
                throw new ArgumentException();
            }
        }
Пример #2
0
        protected ResultSet GetResultSet(IQuery query)
        {
            var argsQuery = new QueryResolverArgs(query.Statement, query.ConnectionString, query.Parameters, query.TemplateTokens, query.Timeout, query.CommandType);
            var args      = new QueryResultSetResolverArgs(argsQuery);
            var factory   = new ResultSetResolverFactory(null);
            var resolver  = factory.Instantiate(args);

            return(resolver.Execute());
        }
Пример #3
0
        protected virtual IResultSetService InstantiateSystemUnderTest(ExecutionXml executionXml)
        {
            var commandFactory = new CommandProvider();

            var argsBuilder = new QueryResolverArgsBuilder(ServiceLocator);

            var connectionString = executionXml.Item.GetConnectionString();
            var statement        = (executionXml.Item as QueryableXml).GetQuery();

            IEnumerable <IQueryParameter>        parameters        = null;
            IEnumerable <IQueryTemplateVariable> templateVariables = null;
            int timeout     = 0;
            var commandType = CommandType.Text;

            if (executionXml.BaseItem is QueryXml)
            {
                parameters        = argsBuilder.BuildParameters(((QueryXml)executionXml.BaseItem).GetParameters());
                templateVariables = ((QueryXml)executionXml.BaseItem).GetTemplateVariables();
                timeout           = ((QueryXml)executionXml.BaseItem).Timeout;
            }
            if (executionXml.BaseItem is ReportXml)
            {
                parameters = argsBuilder.BuildParameters(((ReportXml)executionXml.BaseItem).GetParameters());
            }

            if (executionXml.BaseItem is ReportXml)
            {
                commandType = ((ReportXml)executionXml.BaseItem).GetCommandType();
            }

            var queryArgs = new QueryResolverArgs(statement, connectionString, parameters, templateVariables, new TimeSpan(0, 0, timeout), commandType);
            var args      = new QueryResultSetResolverArgs(queryArgs);
            var factory   = ServiceLocator.GetResultSetResolverFactory();
            var resolver  = factory.Instantiate(args);

            var builder = new ResultSetServiceBuilder();

            builder.Setup(resolver);
            var service = builder.GetService();

            return(service);
        }
Пример #4
0
        protected virtual IQuery GetQuery(ExecutionXml executionXml)
        {
            var commandFactory = ServiceLocator.GetCommandFactory();

            var connectionString = executionXml.Item.GetConnectionString();
            var commandText      = (executionXml.Item as QueryableXml).GetQuery();

            IEnumerable <IQueryParameter>        parameters = null;
            IEnumerable <IQueryTemplateVariable> variables  = null;
            var commandType = CommandType.Text;
            int timeout     = 0;

            if (executionXml.BaseItem is QueryXml)
            {
                var builder = new QueryResolverArgsBuilder(ServiceLocator);
                parameters = builder.BuildParameters(((QueryXml)executionXml.BaseItem).GetParameters());
                variables  = ((QueryXml)executionXml.BaseItem).GetVariables();
                timeout    = ((QueryXml)executionXml.BaseItem).Timeout;
            }
            if (executionXml.BaseItem is ReportXml)
            {
                var builder = new QueryResolverArgsBuilder(ServiceLocator);
                parameters = builder.BuildParameters(((ReportXml)executionXml.BaseItem).GetParameters());
            }

            if (executionXml.BaseItem is ReportXml)
            {
                commandType = ((ReportXml)executionXml.BaseItem).GetCommandType();
            }

            var queryArgs = new QueryResolverArgs(commandText, connectionString, parameters, variables, new TimeSpan(0, 0, timeout), commandType);
            var factory   = ServiceLocator.GetQueryResolverFactory();
            var resolver  = factory.Instantiate(queryArgs);
            var query     = resolver.Execute();

            return(query);
        }
Пример #5
0
 public QueryScalarResolverArgs(QueryResolverArgs args)
 {
     this.QueryArgs = args;
 }
Пример #6
0
 public QueryResultSetResolverArgs(QueryResolverArgs args)
 {
     QueryResolverArgs = args;
 }