Example #1
0
 public LambdaConverter(SourceColumn column, Func <IDataReader, int, object> converter, string errorMsg)
     : base(column, errorMsg)
 {
     if (converter == null)
     {
         throw new ArgumentNullException("converter");
     }
     this._converter = converter;
 }
Example #2
0
 public override int GetHashCode()
 {
     unchecked
     {
         var hashCode = (SourceColumn != null ? SourceColumn.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (Caption != null ? Caption.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ Visible.GetHashCode();
         return(hashCode);
     }
 }
Example #3
0
        public SqlMappingInfo(PropertyInfo prop, string[] columns) : this(prop)
        {
            if (SourceColumn == MappingHelpers.DO_NOT_MAP || !columns.Contains(SourceColumn.ToUpper()))
            {
                SetValue = null;
                return;
            }

            SetValue     = CreateSetter(prop);
            ColumnNumber = Array.IndexOf(columns, SourceColumn.ToUpper());
        }
Example #4
0
        public static DmlfConditionBase CompileSingleFilter(SourceColumn column, string tableAlias)
        {
            var expr = new DmlfColumnRefExpression
            {
                Column = new DmlfColumnRef
                {
                    ColumnName = column.Name,
                    Source = new DmlfSource { Alias = tableAlias },
                }
            };

            var type = DetectFilterType(column.FilterType, new[] { column });
            var cond = FilterParser.ParseFilterExpression(type, expr, column.Filter);
            return cond;
        }
        public void TestCreateShouldReturnNewSourceMap()
        {
            var column = new SourceColumn
            {
                Index        = 1,
                Name         = "Column 1",
                DataType     = typeof(string),
                SemanticType = SemanticType.Measure
            };

            var result = _factory.Create(column.Index, column.Name, column.DataType, column.SemanticType);

            Assert.That(result.Index, Is.EqualTo(column.Index));
            Assert.That(result.Name, Is.EqualTo(column.Name));
            Assert.That(result.DataType, Is.EqualTo(column.DataType));
            Assert.That(result.SemanticType, Is.EqualTo(column.SemanticType));
        }
Example #6
0
 public SimpleFieldConverter(SourceColumn column, string errorMsg)
     : base(column, errorMsg)
 {
 }
Example #7
0
 public LambdaFieldConverter(SourceColumn column, Func <object, object> converter)
     : this(column, converter, string.Empty)
 {
 }
Example #8
0
 public NullConverter(SourceColumn column, object nullValue, string errorMsg)
     : base(column, errorMsg)
 {
     this._nullValue = nullValue;
 }
Example #9
0
 public SimpleFieldConverter(SourceColumn column, string errorMsg)
     : base(column, errorMsg)
 {
 }
Example #10
0
 public Converter(SourceColumn column, string errorMsg)
 {
     this._column   = column;
     this._errorMsg = errorMsg;
 }
Example #11
0
 public LambdaConverter(SourceColumn column, Func <IDataReader, int, object> converter)
     : this(column, converter, string.Empty)
 {
 }
Example #12
0
        private object ConvertType(SourceColumn col, SourceColumnInfo sci, object src_val)
        {
            if (src_val == null || src_val == DBNull.Value) return src_val;

            var destType = sci.DestType;
            var srcType = sci.SrcType;
            var dstIsEnumProp = sci.DestIsEnumProp;

            object dest_val = src_val;

            if (dstIsEnumProp)
            {
                Log.DebugFormat("Convert [{0}] = '{1}' from [{2}] to enum", col.Name, src_val, srcType);
                // Lookup mapping first
                var destEnum = col.EnumEntries.FirstOrDefault(e => e.SourceValue == src_val.ToString());
                if (destEnum != null)
                {
                    return destEnum.DestinationValue.Value;
                }
                else
                {
                    // Try to autoresolve
                    var enumProp = (Zetbox.App.Base.EnumerationProperty)col.DestinationProperty.Last();
                    // Lookup by name
                    var destEnumEntry = enumProp.Enumeration.EnumerationEntries.FirstOrDefault(e => e.Name == src_val.ToString());
                    if (destEnumEntry != null)
                    {
                        return destEnumEntry.Value;
                    }
                    else
                    {
                        // Try by number
                        int int_val;
                        if (int.TryParse(src_val.ToString(), out int_val))
                        {
                            destEnumEntry = enumProp.Enumeration.EnumerationEntries.FirstOrDefault(e => e.Value == int_val);
                            if (destEnumEntry != null)
                            {
                                return destEnumEntry.Value;
                            }
                        }
                    }
                    // Nothing found -> return null
                    return DBNull.Value;
                }
            }
            else if (srcType != destType
                && col.References == null)
            {
                Log.DebugFormat("Convert [{0}] = '{1}' from [{2}] to [{3}]", col.Name, src_val, srcType, destType);
                try
                {
                    switch (destType)
                    {
                        case DbType.AnsiString:
                        case DbType.AnsiStringFixedLength:
                        case DbType.String:
                        case DbType.StringFixedLength:
                            dest_val = src_val.ToString();
                            break;

                        case DbType.Boolean:
                            dest_val = _boolConverter.Convert(src_val);
                            break;

                        case DbType.Date:
                        case DbType.DateTime:
                        case DbType.DateTime2:
                            dest_val = _dateTimeConverter.Convert(src_val);
                            break;

                        case DbType.Single:
                            dest_val = Convert.ToSingle(src_val, CultureInfo.GetCultureInfo("de-AT"));
                            break;
                        case DbType.Double:
                            dest_val = Convert.ToDouble(src_val, CultureInfo.GetCultureInfo("de-AT"));
                            break;

                        case DbType.Byte:
                            dest_val = _byteConverter.Convert(src_val);
                            break;
                        case DbType.Int16:
                            dest_val = _int16Converter.Convert(src_val);
                            break;
                        case DbType.Int32:
                            dest_val = _int32Converter.Convert(src_val);
                            break;

                        case DbType.SByte:
                            dest_val = Convert.ToSByte(src_val, CultureInfo.GetCultureInfo("de-AT"));
                            break;
                        case DbType.Int64:
                            dest_val = Convert.ToInt64(src_val, CultureInfo.GetCultureInfo("de-AT"));
                            break;
                        case DbType.UInt16:
                            dest_val = Convert.ToUInt16(src_val, CultureInfo.GetCultureInfo("de-AT"));
                            break;
                        case DbType.UInt32:
                            dest_val = Convert.ToUInt32(src_val, CultureInfo.GetCultureInfo("de-AT"));
                            break;
                        case DbType.UInt64:
                            dest_val = Convert.ToUInt64(src_val, CultureInfo.GetCultureInfo("de-AT"));
                            break;

                        case DbType.Guid:
                            dest_val = new Guid(src_val.ToString());
                            break;

                        case DbType.Currency:
                        case DbType.Decimal:
                        case DbType.VarNumeric:
                            dest_val = Convert.ToDecimal(src_val, CultureInfo.GetCultureInfo("de-AT"));
                            break;

                        case DbType.Binary:
                        case DbType.DateTimeOffset:
                        case DbType.Object:
                        case DbType.Time:
                        case DbType.Xml:
                        default:
                            throw new NotSupportedException("Unknown DbType " + destType.ToString());

                    }
                }
                catch
                {
                    dest_val = DBNull.Value;
                }

                if (dest_val == null || dest_val == DBNull.Value)
                {
                    AddError(string.Format("Unable to convert '{{0}}' to {0}", destType), src_val);
                }
            }
            Log.DebugFormat(" => '{0}'", dest_val);
            return dest_val;
        }
Example #13
0
 public Converter(SourceColumn column, string errorMsg)
 {
     this._column = column;
     this._errorMsg = errorMsg;
 }
Example #14
0
 public NullConverter(SourceColumn column, object nullValue, string errorMsg)
     : base(column, errorMsg)
 {
     this._nullValue = nullValue;
 }
Example #15
0
 public LambdaFieldConverter(SourceColumn column, Func<object, object> converter, string errorMsg)
     : base(column, errorMsg)
 {
     if (converter == null) throw new ArgumentNullException("converter");
     this._converter = converter;
 }
Example #16
0
 public LambdaFieldConverter(SourceColumn column, Func<object, object> converter)
     : this(column, converter, string.Empty)
 {
 }
Example #17
0
 public LambdaConverter(SourceColumn column, Func<IDataReader, int, object> converter)
     : this(column, converter, string.Empty)
 {
 }
Example #18
0
        private object ConvertType(SourceColumn col, SourceColumnInfo sci, object src_val)
        {
            if (src_val == null || src_val == DBNull.Value)
            {
                return(src_val);
            }

            var destType      = sci.DestType;
            var srcType       = sci.SrcType;
            var dstIsEnumProp = sci.DestIsEnumProp;

            object dest_val = src_val;

            if (dstIsEnumProp)
            {
                Log.DebugFormat("Convert [{0}] = '{1}' from [{2}] to enum", col.Name, src_val, srcType);
                // Lookup mapping first
                var destEnum = col.EnumEntries.FirstOrDefault(e => e.SourceValue == src_val.ToString());
                if (destEnum != null)
                {
                    return(destEnum.DestinationValue.Value);
                }
                else
                {
                    // Try to autoresolve
                    var enumProp = (Zetbox.App.Base.EnumerationProperty)col.DestinationProperty.Last();
                    // Lookup by name
                    var destEnumEntry = enumProp.Enumeration.EnumerationEntries.FirstOrDefault(e => e.Name == src_val.ToString());
                    if (destEnumEntry != null)
                    {
                        return(destEnumEntry.Value);
                    }
                    else
                    {
                        // Try by number
                        int int_val;
                        if (int.TryParse(src_val.ToString(), out int_val))
                        {
                            destEnumEntry = enumProp.Enumeration.EnumerationEntries.FirstOrDefault(e => e.Value == int_val);
                            if (destEnumEntry != null)
                            {
                                return(destEnumEntry.Value);
                            }
                        }
                    }
                    // Nothing found -> return null
                    return(DBNull.Value);
                }
            }
            else if (srcType != destType &&
                     col.References == null)
            {
                Log.DebugFormat("Convert [{0}] = '{1}' from [{2}] to [{3}]", col.Name, src_val, srcType, destType);
                try
                {
                    switch (destType)
                    {
                    case DbType.AnsiString:
                    case DbType.AnsiStringFixedLength:
                    case DbType.String:
                    case DbType.StringFixedLength:
                        dest_val = src_val.ToString();
                        break;

                    case DbType.Boolean:
                        dest_val = _boolConverter.Convert(src_val);
                        break;

                    case DbType.Date:
                    case DbType.DateTime:
                    case DbType.DateTime2:
                        dest_val = _dateTimeConverter.Convert(src_val);
                        break;

                    case DbType.Single:
                        dest_val = Convert.ToSingle(src_val, CultureInfo.GetCultureInfo("de-AT"));
                        break;

                    case DbType.Double:
                        dest_val = Convert.ToDouble(src_val, CultureInfo.GetCultureInfo("de-AT"));
                        break;

                    case DbType.Byte:
                        dest_val = _byteConverter.Convert(src_val);
                        break;

                    case DbType.Int16:
                        dest_val = _int16Converter.Convert(src_val);
                        break;

                    case DbType.Int32:
                        dest_val = _int32Converter.Convert(src_val);
                        break;

                    case DbType.SByte:
                        dest_val = Convert.ToSByte(src_val, CultureInfo.GetCultureInfo("de-AT"));
                        break;

                    case DbType.Int64:
                        dest_val = Convert.ToInt64(src_val, CultureInfo.GetCultureInfo("de-AT"));
                        break;

                    case DbType.UInt16:
                        dest_val = Convert.ToUInt16(src_val, CultureInfo.GetCultureInfo("de-AT"));
                        break;

                    case DbType.UInt32:
                        dest_val = Convert.ToUInt32(src_val, CultureInfo.GetCultureInfo("de-AT"));
                        break;

                    case DbType.UInt64:
                        dest_val = Convert.ToUInt64(src_val, CultureInfo.GetCultureInfo("de-AT"));
                        break;

                    case DbType.Guid:
                        dest_val = new Guid(src_val.ToString());
                        break;

                    case DbType.Currency:
                    case DbType.Decimal:
                    case DbType.VarNumeric:
                        dest_val = Convert.ToDecimal(src_val, CultureInfo.GetCultureInfo("de-AT"));
                        break;


                    case DbType.Binary:
                    case DbType.DateTimeOffset:
                    case DbType.Object:
                    case DbType.Time:
                    case DbType.Xml:
                    default:
                        throw new NotSupportedException("Unknown DbType " + destType.ToString());
                    }
                }
                catch
                {
                    dest_val = DBNull.Value;
                }

                if (dest_val == null || dest_val == DBNull.Value)
                {
                    AddError(string.Format("Unable to convert '{{0}}' to {0}", destType), src_val);
                }
            }
            Log.DebugFormat(" => '{0}'", dest_val);
            return(dest_val);
        }