private static IntegrationTaskEndpoint GetEndpoint(IDbConnection connection, int endpointId)
        {
            var integrationConfiguration = new DynamicParameters();

            integrationConfiguration.Add("@IntegrationTaskEndpointId", endpointId);

            var rows = connection.Query <ConfigurationRow>("sp_GetIntegrationTaskEndpoint",
                                                           integrationConfiguration,
                                                           commandType: CommandType.StoredProcedure).ToList();

            var integrationTaskEndpoint = new IntegrationTaskEndpoint
            {
                EndpointType           = (IntegrationTaskEndpointType)Enum.Parse(typeof(IntegrationTaskEndpointType), rows.First().IntegrationTaskEndpointTypeName),
                EndpointConfigurations = rows.Select(r => r.ToEndpointConfiguration()).ToList()
            };

            return(integrationTaskEndpoint);
        }
        public IXmlWriteRepository CreateWriter(IntegrationTaskEndpoint destination)
        {
            switch (destination.EndpointType)
            {
            case IntegrationTaskEndpointType.GreatPlains:
                return(new GreatPlainsCommand());

            case IntegrationTaskEndpointType.File:
                var directory = destination.EndpointConfigurations.Single(f => f.ConfigurationType == IntegrationTaskEndpointConfigurationType.Directory).ConfigurationValue;
                var filename  = destination.EndpointConfigurations.Single(f => f.ConfigurationType == IntegrationTaskEndpointConfigurationType.Filename).ConfigurationValue;
                return(new XmlFileCommand(directory, filename));

            case IntegrationTaskEndpointType.Database:
            case IntegrationTaskEndpointType.WebService:
            default:
                throw new NotImplementedException();
            }
        }
        public IXmlReadRepository CreateReader(IntegrationTaskEndpoint source)
        {
            switch (source.EndpointType)
            {
            case IntegrationTaskEndpointType.Database:
                var connectionString = source.EndpointConfigurations.Single(f => f.ConfigurationType == IntegrationTaskEndpointConfigurationType.Connection).ConfigurationValue;
                var commandText      = source.EndpointConfigurations.Single(f => f.ConfigurationType == IntegrationTaskEndpointConfigurationType.CommandText).ConfigurationValue;
                return(new XmlDatabaseCommand(connectionString, commandText));

            case IntegrationTaskEndpointType.WebService:
                var url = source.EndpointConfigurations.Single(f => f.ConfigurationType == IntegrationTaskEndpointConfigurationType.Url).ConfigurationValue;
                return(new XmlWebCommand(url));

            case IntegrationTaskEndpointType.File:
            case IntegrationTaskEndpointType.GreatPlains:
            default:
                throw new NotImplementedException();
            }
        }