public object Execute(TransformContext context)
        {
            var logger = context.Service <ILogger>();

            logger.LogDebug("ExecuteScalar transform");

            var sql      = context.Arguments.Get <string>("sql");
            var dataType = context.Arguments.Get <string>("dataType");

            var sqlHelper = new SqlHelper(sql);

            foreach (var pair in context.Arguments)
            {
                logger.LogDebug("arg {0}:{1}", pair.Key, pair.Value);

                if (!pair.Key.ToLower().StartsWith("param."))
                {
                    continue;
                }

                var key = pair.Key.Substring(6);
                sqlHelper.Parameters.Add(key, pair.Value);
            }

            var result = sqlHelper.ExecuteScalar();

            var targetType = PropertyTypes.Parse(dataType);

            if (result == null || DBNull.Value.Equals(result))
            {
                return(null);
            }

            return(Convert.ChangeType(result, targetType));
        }
        public Filter CreateFilter()
        {
            var expression = new FilterExpression();
            var dataType   = PropertyTypes.Parse(_dataType);
            var value      = Convert.ChangeType(_value, dataType);

            if (dataType == typeof(int))
            {
                return(expression.NotEqual(_field, (int)value));
            }

            if (dataType == typeof(string))
            {
                return(expression.NotEqual(_field, (string)value));
            }

            if (dataType == typeof(DateTime))
            {
                return(expression.NotEqual(_field, (DateTime)value));
            }

            if (dataType == typeof(decimal))
            {
                return(expression.NotEqual(_field, (decimal)value));
            }

            throw new NotSupportedException("Unsupported data type: " + _dataType);
        }
Esempio n. 3
0
 public void parses_known_types()
 {
     PropertyTypes.Parse("int").ShouldEqual(typeof(int));
     PropertyTypes.Parse("string").ShouldEqual(typeof(string));
     PropertyTypes.Parse("dateTime").ShouldEqual(typeof(DateTime));
     PropertyTypes.Parse("decimal").ShouldEqual(typeof(decimal));
     PropertyTypes.Parse("bool").ShouldEqual(typeof(bool));
     PropertyTypes.Parse("double").ShouldEqual(typeof(double));
     PropertyTypes.Parse("float").ShouldEqual(typeof(float));
     PropertyTypes.Parse("short").ShouldEqual(typeof(short));
 }
        public Filter CreateFilter()
        {
            var expression = new FilterExpression();
            var dataType   = PropertyTypes.Parse(_dataType);

            if (dataType == typeof(string))
            {
                return(expression.IsIn(_field, _values));
            }

            throw new NotSupportedException("Unsupported data type: " + _dataType);
        }
Esempio n. 5
0
        public void Visit(BeginProperty instruction)
        {
            executeInstruction(() =>
            {
                var key      = instruction.Key.Resolve(_services).ToString();
                _propertyDef = new PropertyDefinition
                {
                    Key = instruction.Key.Resolve(_services).ToString()
                };

                if (instruction.Field == null)
                {
                    return;
                }

                _currentFieldMap = new FieldMap
                {
                    Key          = key,
                    FieldNames   = new[] { instruction.Field.Resolve(_services).ToString() },
                    IsIdentifier = instruction.IsIdentifier,
                    PropertyType = PropertyTypes.Parse(instruction.DataType.Resolve(_services).ToString())
                };
            });
        }