Пример #1
0
        public override object Read(byte[] buffer, IDataRow row, int offset)
        {
            var baseVal = base.Read(buffer, row, offset);

            var def = Header.SheetDefinition;
            return def != null ? def.Convert(row, baseVal, Index) : baseVal;
        }
        public object Convert(IDataRow row, object value, int index) {
            var innerIndex = index - Index;
            if (innerIndex < 0 || innerIndex >= Length)
                throw new ArgumentOutOfRangeException("index");

            return InnerDefinition.Convert(row, value, innerIndex);
        }
Пример #3
0
        public object Convert(IDataRow row, object rawValue) {
            var argb = System.Convert.ToInt32(rawValue);

            if (!IncludesAlpha)
                argb = (int)(((uint)argb) | 0xFF000000);

            return Color.FromArgb(argb);
        }
        public object Convert(IDataRow row, object value, int index)
        {
            if (index < 0 || index >= Length)
                throw new ArgumentOutOfRangeException("index");

            var innerIndex = index % RepeatedDefinition.Length;

            return RepeatedDefinition.Convert(row, value, innerIndex);
        }
Пример #5
0
        public object Convert(IDataRow row, object rawValue) {

            var nr = System.Convert.ToInt32(rawValue);
            if (nr < 0 || nr > 999999)
                return null;

            var sheet = row.Sheet;
            return Imaging.IconHelper.GetIcon(sheet.Collection.PackCollection, sheet.Language, nr);
        }
Пример #6
0
        public object Convert(IDataRow row, object rawValue) {
            var coll = row.Sheet.Collection;
            if (!coll.SheetExists(TargetSheet))
                return null;

            var sheet = coll.GetSheet(TargetSheet);

            var key = System.Convert.ToInt32(rawValue);
            return !sheet.ContainsRow(key) ? null : sheet[key];
        }
 public static int GetDepth(IDataRow item)
 {
     int cnt = 0;
     while (item.Parent != null)
     {
         cnt++;
         item = item.Parent;
     }
     return cnt;
 }
Пример #8
0
        private bool GetClass(IDataRow row, ConditionalNode node, out string className)
        {
            className = node.Class;
            bool isValid = false;

            var rowValue = row[node.Attribute];
            switch (node.Condition)
            {
                case PredicateCondition.Equal:
                    if (row[node.Attribute].Equals(node.ThreshHold))
                    {
                        isValid = true;
                    }
                    break;
                case PredicateCondition.LessThanOrEqual:
                    if (rowValue == null)
                    {
                        return false;
                    }
                    if (Convert.ToDouble(rowValue) <= Convert.ToDouble(node.ThreshHold))
                    {
                        isValid = true;
                    }
                    break;
                case PredicateCondition.GreaterThan:
                    if (rowValue == null)
                    {
                        return false;
                    }
                    if (Convert.ToDouble(rowValue) > Convert.ToDouble(node.ThreshHold))
                    {
                        isValid = true;
                    }
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }

            if (isValid && node.Children != null)
            {
                foreach (var child in node.Children)
                {
                    if (GetClass(row, child, out className))
                    {
                        break;
                    }
                }
            }

            return isValid;
        }
        public object Convert(IDataRow row, object rawValue) {
            var key = System.Convert.ToInt32(rawValue);
            if (Targets == null)
                return null;

            foreach(var target in Targets) {
                var sheet = row.Sheet.Collection.GetSheet(target);
                if (!sheet.Header.DataFileRanges.Any(r => r.Contains(key)))
                    continue;

                if (sheet.ContainsRow(key))
                    return sheet[key];
            }
            return null;
        }
Пример #10
0
 public string GetClass(IDataRow row)
 {
     if (Root == null)
     {
         return null;
     }
     string className = null;
     foreach (var child in Root.Children)
     {
         if (GetClass(row, child, out className))
         {
             break;
         }
     }
     return className;
 }
Пример #11
0
        /// ///////////////////////////////////////////////////////////////////////
        /// ReadRow
        /// 
        /// <summary>
        /// 
        /// </summary>
        /// <param name="row">
        /// Contains the values in the current row, in the order in which they 
        /// appear in the file.
        /// </param>
        /// <returns>
        /// True if a row was returned in parameter "row".
        /// False if no row returned. In that case, you're at the end of the file.
        /// </returns>
        public bool ReadRow(IDataRow row, List<int> charactersLength = null)
        {
            row.Clear();

            int i = 0;

            while (true)
            {
                // Number of the line where the item starts. Note that an item
                // can span multiple lines.
                int startingLineNbr = m_lineNbr;

                string item = null;

                int? itemLength = charactersLength == null ? (int?)null : charactersLength.Skip(i).First();

                bool moreAvailable = GetNextItem(ref item, itemLength);
                if (charactersLength != null)
                {
                    if (!(charactersLength.Count > i + 1))
                    {
                        if (moreAvailable)
                        {
                            row.Add(new DataRowItem(item, startingLineNbr));
                        }

                        if (!EOL)
                        {
                            AdvanceToEndOfLine();
                            moreAvailable = false;
                        }
                    }
                }

                if (!moreAvailable)
                {
                    return (row.Count > 0);
                }

                row.Add(new DataRowItem(item, startingLineNbr));

                i++;
            }
        }
Пример #12
0
        /// ///////////////////////////////////////////////////////////////////////
        /// ReadRow
        /// 
        /// <summary>
        /// 
        /// </summary>
        /// <param name="row">
        /// Contains the values in the current row, in the order in which they 
        /// appear in the file.
        /// </param>
        /// <returns>
        /// True if a row was returned in parameter "row".
        /// False if no row returned. In that case, you're at the end of the file.
        /// </returns>
        public bool ReadRow(ref IDataRow row)
        {
            row.Clear();

            while (true)
            {
                // Number of the line where the item starts. Note that an item
                // can span multiple lines.
                int startingLineNbr = m_lineNbr;

                string item = null;

                bool moreAvailable = GetNextItem(ref item);
                if (!moreAvailable)
                {
                    return (row.Count > 0);
                }
                row.Add(new DataRowItem(item, startingLineNbr));
            }
        }
Пример #13
0
        public object Convert(IDataRow row, object value, int index)
        {
            if (index < 0 || index >= Length)
                throw new ArgumentOutOfRangeException("index");

            var convertedValue = value;
            var pos = 0;
            foreach (var member in Members) {
                var newPos = pos + member.Length;
                if (newPos > index) {
                    var innerIndex = index - pos;

                    convertedValue = member.Convert(row, value, innerIndex);

                    break;
                }
                pos = newPos;
            }
            return convertedValue;
        }
        /// <summary>
        ///     Read a column's buffer of a row.
        /// </summary>
        /// <param name="buffer">A byte-array containing the contents of the EX buffer file.</param>
        /// <param name="col"><see cref="Column" /> to read.</param>
        /// <param name="row"><see cref="IDataRow" /> to read in.</param>
        /// <returns>Returns the value read from the given <c>row</c> and <c>column</c>.</returns>
        public override object Read(byte[] buffer, Column col, IDataRow row)
        {
            var fieldOffset = GetFieldOffset(col, row);
            var endOfFixed = row.Offset + row.Sheet.Header.FixedSizeDataLength;

            var start = endOfFixed + OrderedBitConverter.ToInt32(buffer, fieldOffset, true);
            if (start < 0)
                return null;

            var end = start - 1;
            while (++end < buffer.Length && buffer[end] != 0) { }
            var len = end - start;

            if (len == 0)
                return Text.XivString.Empty;

            var binaryString = new byte[len];
            Array.Copy(buffer, start, binaryString, 0, len);

            return Text.XivStringDecoder.Default.Decode(binaryString);//.ToString();
        }
Пример #15
0
        public void TestInitialize()
        {
            _description = new CsvFileDescription
            {
                SeparatorChar = ',',
                FirstLineHasColumnNames = true,
                IgnoreUnknownColumns = true,
            };
            _input =
@"Id,Name,Last Name,Age,City
1,John,Doe,15,Washington";

            byte[] stringAsByteArray = Encoding.UTF8.GetBytes(_input);
            Stream stream = new MemoryStream(stringAsByteArray);
            _sr = new StreamReader(stream, Encoding.UTF8);
            _dataAccess = new FileDataAccess(_sr, _description);
            
            _cs = new CsvStream(_sr, null, _description.SeparatorChar,
                _description.IgnoreTrailingSeparatorChar);
            _row = new DataRow();
            _fm = new FieldMapperReading<Person>(_description, null, false);
            _ae = new AggregatedException(typeof(Person).ToString(), null, _description.MaximumNbrExceptions);
            _reader = new RowReader<Person>(_description, _ae);
        }
 public EnabledEventArgs(IDataRow rowValues, bool enabled)
 {
     RowValues = rowValues;
     Enabled   = enabled;
 }
Пример #17
0
 public object ReadRaw(byte[] buffer, IDataRow row, int offset)
 {
     return Reader.Read(buffer, offset);
 }
Пример #18
0
 /// <summary>
 /// 从数据行读取
 /// </summary>
 /// <param name="dr">数据行</param>
 protected override BaseEntity GetFrom(IDataRow dr)
 {
     GetFromExtend(dr);
     if (dr.ContainsColumn(FieldId))
     {
         Id = BaseUtil.ConvertToInt(dr[FieldId]);
     }
     if (dr.ContainsColumn(FieldSystemCode))
     {
         SystemCode = BaseUtil.ConvertToString(dr[FieldSystemCode]);
     }
     if (dr.ContainsColumn(FieldResourceCategory))
     {
         ResourceCategory = BaseUtil.ConvertToString(dr[FieldResourceCategory]);
     }
     if (dr.ContainsColumn(FieldResourceId))
     {
         ResourceId = BaseUtil.ConvertToString(dr[FieldResourceId]);
     }
     if (dr.ContainsColumn(FieldPermissionId))
     {
         PermissionId = BaseUtil.ConvertToString(dr[FieldPermissionId]);
     }
     if (dr.ContainsColumn(FieldCompanyId))
     {
         CompanyId = BaseUtil.ConvertToInt(dr[FieldCompanyId]);
     }
     if (dr.ContainsColumn(FieldCompanyName))
     {
         CompanyName = BaseUtil.ConvertToString(dr[FieldCompanyName]);
     }
     if (dr.ContainsColumn(FieldPermissionConstraint))
     {
         PermissionConstraint = BaseUtil.ConvertToString(dr[FieldPermissionConstraint]);
     }
     if (dr.ContainsColumn(FieldDescription))
     {
         Description = BaseUtil.ConvertToString(dr[FieldDescription]);
     }
     if (dr.ContainsColumn(FieldSortCode))
     {
         SortCode = BaseUtil.ConvertToInt(dr[FieldSortCode]);
     }
     if (dr.ContainsColumn(FieldDeleted))
     {
         Deleted = BaseUtil.ConvertToInt(dr[FieldDeleted]);
     }
     if (dr.ContainsColumn(FieldEnabled))
     {
         Enabled = BaseUtil.ConvertToInt(dr[FieldEnabled]);
     }
     if (dr.ContainsColumn(FieldCreateTime))
     {
         CreateTime = BaseUtil.ConvertToDateTime(dr[FieldCreateTime]);
     }
     if (dr.ContainsColumn(FieldCreateUserId))
     {
         CreateUserId = BaseUtil.ConvertToInt(dr[FieldCreateUserId]);
     }
     if (dr.ContainsColumn(FieldCreateUserName))
     {
         CreateUserName = BaseUtil.ConvertToString(dr[FieldCreateUserName]);
     }
     if (dr.ContainsColumn(FieldCreateBy))
     {
         CreateBy = BaseUtil.ConvertToString(dr[FieldCreateBy]);
     }
     if (dr.ContainsColumn(FieldCreateIp))
     {
         CreateIp = BaseUtil.ConvertToString(dr[FieldCreateIp]);
     }
     if (dr.ContainsColumn(FieldUpdateTime))
     {
         UpdateTime = BaseUtil.ConvertToDateTime(dr[FieldUpdateTime]);
     }
     if (dr.ContainsColumn(FieldUpdateUserId))
     {
         UpdateUserId = BaseUtil.ConvertToInt(dr[FieldUpdateUserId]);
     }
     if (dr.ContainsColumn(FieldUpdateUserName))
     {
         UpdateUserName = BaseUtil.ConvertToString(dr[FieldUpdateUserName]);
     }
     if (dr.ContainsColumn(FieldUpdateBy))
     {
         UpdateBy = BaseUtil.ConvertToString(dr[FieldUpdateBy]);
     }
     if (dr.ContainsColumn(FieldUpdateIp))
     {
         UpdateIp = BaseUtil.ConvertToString(dr[FieldUpdateIp]);
     }
     return(this);
 }
 /// <summary>
 ///     Read a column's buffer of a row.
 /// </summary>
 /// <param name="buffer">A byte-array containing the contents of the EX buffer file.</param>
 /// <param name="col"><see cref="Column" /> to read.</param>
 /// <param name="row"><see cref="IDataRow" /> to read in.</param>
 /// <returns>Returns the value read from the given <c>row</c> and <c>column</c>.</returns>
 public override object Read(byte[] buffer, Column col, IDataRow row)
 {
     var offset = GetFieldOffset(col, row);
     return _Func(buffer, offset);
 }
Пример #20
0
 protected abstract TEntity RowToEntity(IDataRow row);
        public void Add(IDataRow par)
        {
            if (ReadOnly) return;
            if (_children == null)
                _children = new List<IDataRow>();
            _children.Add(par);
            par.Parent = this;

            ClearBlockAddress();
        }
Пример #22
0
 public double[] Compute(IDataRow row)
 {
     if (Root == null)
     {
         return null;
     }
     double[] ret;
     foreach (var child in Root.Children)
     {
         ret = ComputeEstimates(row, child);
         if (ret != null)
         {
             return ret;
         }
     }
     return null;
 }
Пример #23
0
 public static void SetValue(this IDataRow row, int index, object value)
 {
     row[index] = value;
 }
Пример #24
0
 public static object GetValue(this IDataRow row, string name)
 {
     return(row[name]);
 }
Пример #25
0
 public static object GetValue(this IDataRow row, int index)
 {
     return(row[index]);
 }
 /// <summary>
 /// 从数据行读取
 /// </summary>
 /// <param name="dr">数据行</param>
 protected override BaseEntity GetFrom(IDataRow dr)
 {
     GetFromExtend(dr);
     if (dr.ContainsColumn(FieldId))
     {
         Id = BaseUtil.ConvertToInt(dr[FieldId]);
     }
     if (dr.ContainsColumn(FieldSystemCode))
     {
         SystemCode = BaseUtil.ConvertToString(dr[FieldSystemCode]);
     }
     if (dr.ContainsColumn(FieldEventId))
     {
         EventId = BaseUtil.ConvertToNullableInt(dr[FieldEventId]);
     }
     if (dr.ContainsColumn(FieldCategory))
     {
         Category = BaseUtil.ConvertToString(dr[FieldCategory]);
     }
     if (dr.ContainsColumn(FieldPriority))
     {
         Priority = BaseUtil.ConvertToNullableInt(dr[FieldPriority]);
     }
     if (dr.ContainsColumn(FieldSeverity))
     {
         Severity = BaseUtil.ConvertToString(dr[FieldSeverity]);
     }
     if (dr.ContainsColumn(FieldTitle))
     {
         Title = BaseUtil.ConvertToString(dr[FieldTitle]);
     }
     if (dr.ContainsColumn(FieldTimestamp))
     {
         Timestamp = BaseUtil.ConvertToNullableDateTime(dr[FieldTimestamp]);
     }
     if (dr.ContainsColumn(FieldMachineName))
     {
         MachineName = BaseUtil.ConvertToString(dr[FieldMachineName]);
     }
     if (dr.ContainsColumn(FieldIpAddress))
     {
         IpAddress = BaseUtil.ConvertToString(dr[FieldIpAddress]);
     }
     if (dr.ContainsColumn(FieldAppDomainName))
     {
         AppDomainName = BaseUtil.ConvertToString(dr[FieldAppDomainName]);
     }
     if (dr.ContainsColumn(FieldProcessId))
     {
         ProcessId = BaseUtil.ConvertToString(dr[FieldProcessId]);
     }
     if (dr.ContainsColumn(FieldProcessName))
     {
         ProcessName = BaseUtil.ConvertToString(dr[FieldProcessName]);
     }
     if (dr.ContainsColumn(FieldThreadName))
     {
         ThreadName = BaseUtil.ConvertToString(dr[FieldThreadName]);
     }
     if (dr.ContainsColumn(FieldWin32ThreadId))
     {
         Win32ThreadId = BaseUtil.ConvertToString(dr[FieldWin32ThreadId]);
     }
     if (dr.ContainsColumn(FieldMessage))
     {
         Message = BaseUtil.ConvertToString(dr[FieldMessage]);
     }
     if (dr.ContainsColumn(FieldFormattedMessage))
     {
         FormattedMessage = BaseUtil.ConvertToString(dr[FieldFormattedMessage]);
     }
     if (dr.ContainsColumn(FieldSortCode))
     {
         SortCode = BaseUtil.ConvertToInt(dr[FieldSortCode]);
     }
     if (dr.ContainsColumn(FieldDeleted))
     {
         Deleted = BaseUtil.ConvertToInt(dr[FieldDeleted]);
     }
     if (dr.ContainsColumn(FieldEnabled))
     {
         Enabled = BaseUtil.ConvertToInt(dr[FieldEnabled]);
     }
     if (dr.ContainsColumn(FieldCreateTime))
     {
         CreateTime = BaseUtil.ConvertToDateTime(dr[FieldCreateTime]);
     }
     if (dr.ContainsColumn(FieldCreateUserId))
     {
         CreateUserId = BaseUtil.ConvertToInt(dr[FieldCreateUserId]);
     }
     if (dr.ContainsColumn(FieldCreateUserName))
     {
         CreateUserName = BaseUtil.ConvertToString(dr[FieldCreateUserName]);
     }
     if (dr.ContainsColumn(FieldCreateBy))
     {
         CreateBy = BaseUtil.ConvertToString(dr[FieldCreateBy]);
     }
     if (dr.ContainsColumn(FieldCreateIp))
     {
         CreateIp = BaseUtil.ConvertToString(dr[FieldCreateIp]);
     }
     if (dr.ContainsColumn(FieldUpdateTime))
     {
         UpdateTime = BaseUtil.ConvertToDateTime(dr[FieldUpdateTime]);
     }
     if (dr.ContainsColumn(FieldUpdateUserId))
     {
         UpdateUserId = BaseUtil.ConvertToInt(dr[FieldUpdateUserId]);
     }
     if (dr.ContainsColumn(FieldUpdateUserName))
     {
         UpdateUserName = BaseUtil.ConvertToString(dr[FieldUpdateUserName]);
     }
     if (dr.ContainsColumn(FieldUpdateBy))
     {
         UpdateBy = BaseUtil.ConvertToString(dr[FieldUpdateBy]);
     }
     if (dr.ContainsColumn(FieldUpdateIp))
     {
         UpdateIp = BaseUtil.ConvertToString(dr[FieldUpdateIp]);
     }
     return(this);
 }
Пример #27
0
 /// <summary>
 /// GetFrom
 /// </summary>
 /// <param name="dr"></param>
 /// <returns></returns>
 protected abstract BaseEntity GetFrom(IDataRow dr);
Пример #28
0
 /// <summary>
 /// 从自定义数据流读取
 /// </summary>
 /// <param name="dr">数据流</param>
 public virtual void GetFromExtend(IDataRow dr)
 {
 }
Пример #29
0
        /// <summary>
        ///     Read a column's buffer of a row.
        /// </summary>
        /// <param name="buffer">A byte-array containing the contents of the EX buffer file.</param>
        /// <param name="col"><see cref="Column" /> to read.</param>
        /// <param name="row"><see cref="IDataRow" /> to read in.</param>
        /// <returns>Returns the value read from the given <c>row</c> and <c>column</c>.</returns>
        public override object Read(byte[] buffer, Column col, IDataRow row)
        {
            int offset = GetFieldOffset(col, row);

            return(_Func(buffer, offset));
        }
Пример #30
0
 public void AddRaw(IDataRow dataRow)
 {
     rows.Add(dataRow);
 }
Пример #31
0
 /// <summary>
 ///     Read the raw column's value in a row.
 /// </summary>
 /// <param name="buffer">A byte-array containing the contents of the data file.</param>
 /// <param name="row">The <see cref="IDataRow" /> whose data should be read.</param>
 /// <returns>Returns the raw column's value in <c>row</c>.</returns>
 public object ReadRaw(byte[] buffer, IDataRow row)
 {
     return Reader.Read(buffer, this, row);
 }
Пример #32
0
 public static void SetValue(this IDataRow row, string name, object value)
 {
     row[name] = value;
 }
Пример #33
0
 void DataProvider_DatumReplacing(int ndxSource, IDataRow datum)
 {
     Monitor.Enter(m_lock);
     m_cache.Add(Tuple.Create(ndxSource, datum));
     Monitor.Exit(m_lock);
 }
Пример #34
0
 public object Convert(IDataRow row, object rawValue)
 {
     return(new Quad((long)rawValue));
 }
        public object Convert(IDataRow row, object value, int index) {
            if (index != 0)
                throw new ArgumentOutOfRangeException("index");

            return Converter != null ? Converter.Convert(row, value) : value;
        }
Пример #36
0
 internal SubRow(IDataRow parent, int key)
 {
     ParentRow = parent;
     Key = key;
 }
Пример #37
0
        /// ///////////////////////////////////////////////////////////////////////
        /// ReadObject
        ///
        /// <summary>
        /// Creates an object of type T from the data in row and returns that object.
        ///
        /// </summary>
        /// <param name="row"></param>
        /// <param name="firstRow"></param>
        /// <returns></returns>
        public T ReadObject(IDataRow row, AggregatedException ae)
        {
            //If there are more columns than the required
            if (row.Count > m_IndexToInfo.Length)
            {
                //Are we ignoring unknown columns?
                if (!m_fileDescription.IgnoreUnknownColumns)
                {
                    // Too many fields
                    throw new TooManyDataFieldsException(typeof(T).ToString(), row[0].LineNbr, m_fileName);
                }
            }

            // -----

            T obj = new T();

            //If we will be using the mappings, we just iterate through all the cells in this row
            int maxRowCount = _mappingIndexes.Count > 0 ? row.Count : Math.Min(row.Count, m_IndexToInfo.Length);

            for (int i = 0; i < maxRowCount; i++)
            {
                TypeFieldInfo tfi;
                //If there is some index mapping generated and the IgnoreUnknownColums is `true`
                if (m_fileDescription.IgnoreUnknownColumns && _mappingIndexes.Count > 0)
                {
                    if (!_mappingIndexes.ContainsKey(i))
                    {
                        continue;
                    }
                    tfi = m_IndexToInfo[_mappingIndexes[i]];
                }
                else
                {
                    tfi = m_IndexToInfo[i];
                }

                if (m_fileDescription.EnforceCsvColumnAttribute &&
                    (!tfi.hasColumnAttribute))
                {
                    // enforcing column attr, but this field/prop has no column attr.
                    // So there are too many fields in this record.
                    throw new TooManyNonCsvColumnDataFieldsException(typeof(T).ToString(), row[i].LineNbr, m_fileName);
                }

                // -----

                if ((!m_fileDescription.FirstLineHasColumnNames) &&
                    (tfi.index == CsvColumnAttribute.mc_DefaultFieldIndex))
                {
                    // First line in the file does not have field names, so we're
                    // depending on the FieldIndex of each field in the type
                    // to ensure each value is placed in the correct field.
                    // However, now hit a field where there is no FieldIndex.
                    throw new MissingFieldIndexException(typeof(T).ToString(), row[i].LineNbr, m_fileName);
                }

                // -----

                if (m_fileDescription.UseFieldIndexForReadingData && (!m_fileDescription.FirstLineHasColumnNames) &&
                    (tfi.index > row.Count))
                {
                    // First line in the file does not have field names, so we're
                    // depending on the FieldIndex of each field in the type
                    // to ensure each value is placed in the correct field.
                    // However, now hit a field where the FieldIndex is bigger
                    // than the total number of items in a row generated by the separatorChar
                    throw new WrongFieldIndexException(typeof(T).ToString(), row[i].LineNbr, m_fileName);
                }

                int index = m_fileDescription.UseFieldIndexForReadingData ? tfi.index - 1 : i;

                // value to put in the object
                string value = row[index].Value;

                if (value == null)
                {
                    if (!tfi.canBeNull)
                    {
                        ae.AddException(
                            new MissingRequiredFieldException(
                                typeof(T).ToString(),
                                tfi.name,
                                row[i].LineNbr,
                                m_fileName));
                    }
                }
                else
                {
                    try
                    {
                        Object objValue = null;

                        // Normally, either tfi.typeConverter is not null,
                        // or tfi.parseNumberMethod is not null.
                        //
                        if (tfi.typeConverter != null)
                        {
                            objValue = tfi.typeConverter.ConvertFromString(
                                null,
                                m_fileDescription.FileCultureInfo,
                                value);
                        }
                        else if (tfi.parseExactMethod != null)
                        {
                            objValue =
                                tfi.parseExactMethod.Invoke(
                                    tfi.fieldType,
                                    new Object[] {
                                value,
                                tfi.outputFormat,
                                m_fileDescription.FileCultureInfo
                            });
                        }
                        else if (tfi.parseNumberMethod != null)
                        {
                            objValue =
                                tfi.parseNumberMethod.Invoke(
                                    tfi.fieldType,
                                    new Object[] {
                                value,
                                tfi.inputNumberStyle,
                                m_fileDescription.FileCultureInfo
                            });
                        }
                        else
                        {
                            // No TypeConverter and no Parse method available.
                            // Try direct approach.
                            objValue = value;
                        }

                        if (tfi.memberInfo is PropertyInfo)
                        {
                            ((PropertyInfo)tfi.memberInfo).SetValue(obj, objValue, null);
                        }
                        else
                        {
                            ((FieldInfo)tfi.memberInfo).SetValue(obj, objValue);
                        }
                    }
                    catch (Exception e)
                    {
                        if (e is TargetInvocationException)
                        {
                            e = e.InnerException;
                        }

                        if (e is FormatException)
                        {
                            e = new WrongDataFormatException(
                                typeof(T).ToString(),
                                tfi.name,
                                value,
                                row[i].LineNbr,
                                m_fileName,
                                e);
                        }

                        ae.AddException(e);
                    }
                }
            }

            // Visit any remaining fields in the type for which no value was given
            // in the data row, to see whether any of those was required.
            // If only looking at fields with CsvColumn attribute, do ignore
            // fields that don't have that attribute.

            for (int i = row.Count; i < m_IndexToInfo.Length; i++)
            {
                TypeFieldInfo tfi = m_IndexToInfo[i];

                if (((!m_fileDescription.EnforceCsvColumnAttribute) ||
                     tfi.hasColumnAttribute) &&
                    (!tfi.canBeNull))
                {
                    ae.AddException(
                        new MissingRequiredFieldException(
                            typeof(T).ToString(),
                            tfi.name,
                            row[row.Count - 1].LineNbr,
                            m_fileName));
                }
            }

            return(obj);
        }
 /// <summary>
 /// 从数据行读取
 /// </summary>
 /// <param name="dr">数据行</param>
 protected override BaseEntity GetFrom(IDataRow dr)
 {
     GetFromExtend(dr);
     if (dr.ContainsColumn(FieldId))
     {
         Id = BaseUtil.ConvertToInt(dr[FieldId]);
     }
     if (dr.ContainsColumn(FieldUserId))
     {
         UserId = BaseUtil.ConvertToInt(dr[FieldUserId]);
     }
     if (dr.ContainsColumn(FieldUserPassword))
     {
         UserPassword = BaseUtil.ConvertToString(dr[FieldUserPassword]);
     }
     if (dr.ContainsColumn(FieldOpenId))
     {
         OpenId = BaseUtil.ConvertToString(dr[FieldOpenId]);
     }
     if (dr.ContainsColumn(FieldAllowStartTime))
     {
         AllowStartTime = BaseUtil.ConvertToNullableDateTime(dr[FieldAllowStartTime]);
     }
     if (dr.ContainsColumn(FieldAllowEndTime))
     {
         AllowEndTime = BaseUtil.ConvertToNullableDateTime(dr[FieldAllowEndTime]);
     }
     if (dr.ContainsColumn(FieldLockStartTime))
     {
         LockStartTime = BaseUtil.ConvertToNullableDateTime(dr[FieldLockStartTime]);
     }
     if (dr.ContainsColumn(FieldLockEndTime))
     {
         LockEndTime = BaseUtil.ConvertToNullableDateTime(dr[FieldLockEndTime]);
     }
     if (dr.ContainsColumn(FieldFirstVisitTime))
     {
         FirstVisitTime = BaseUtil.ConvertToNullableDateTime(dr[FieldFirstVisitTime]);
     }
     if (dr.ContainsColumn(FieldPreviousVisitTime))
     {
         PreviousVisitTime = BaseUtil.ConvertToNullableDateTime(dr[FieldPreviousVisitTime]);
     }
     if (dr.ContainsColumn(FieldLastVisitTime))
     {
         LastVisitTime = BaseUtil.ConvertToNullableDateTime(dr[FieldLastVisitTime]);
     }
     if (dr.ContainsColumn(FieldChangePasswordTime))
     {
         ChangePasswordTime = BaseUtil.ConvertToNullableDateTime(dr[FieldChangePasswordTime]);
     }
     if (dr.ContainsColumn(FieldLogonCount))
     {
         LogonCount = BaseUtil.ConvertToInt(dr[FieldLogonCount]);
     }
     if (dr.ContainsColumn(FieldConcurrentUser))
     {
         ConcurrentUser = BaseUtil.ConvertToInt(dr[FieldConcurrentUser]);
     }
     if (dr.ContainsColumn(FieldShowCount))
     {
         ShowCount = BaseUtil.ConvertToInt(dr[FieldShowCount]);
     }
     if (dr.ContainsColumn(FieldPasswordErrorCount))
     {
         PasswordErrorCount = BaseUtil.ConvertToInt(dr[FieldPasswordErrorCount]);
     }
     if (dr.ContainsColumn(FieldUserOnline))
     {
         UserOnline = BaseUtil.ConvertToInt(dr[FieldUserOnline]);
     }
     if (dr.ContainsColumn(FieldCheckIpAddress))
     {
         CheckIpAddress = BaseUtil.ConvertToInt(dr[FieldCheckIpAddress]);
     }
     if (dr.ContainsColumn(FieldVerificationCode))
     {
         VerificationCode = BaseUtil.ConvertToString(dr[FieldVerificationCode]);
     }
     if (dr.ContainsColumn(FieldIpAddress))
     {
         IpAddress = BaseUtil.ConvertToString(dr[FieldIpAddress]);
     }
     if (dr.ContainsColumn(FieldMacAddress))
     {
         MacAddress = BaseUtil.ConvertToString(dr[FieldMacAddress]);
     }
     if (dr.ContainsColumn(FieldQuestion))
     {
         Question = BaseUtil.ConvertToString(dr[FieldQuestion]);
     }
     if (dr.ContainsColumn(FieldAnswerQuestion))
     {
         AnswerQuestion = BaseUtil.ConvertToString(dr[FieldAnswerQuestion]);
     }
     if (dr.ContainsColumn(FieldSalt))
     {
         Salt = BaseUtil.ConvertToString(dr[FieldSalt]);
     }
     if (dr.ContainsColumn(FieldOpenIdTimeoutTime))
     {
         OpenIdTimeoutTime = BaseUtil.ConvertToNullableDateTime(dr[FieldOpenIdTimeoutTime]);
     }
     if (dr.ContainsColumn(FieldSystemCode))
     {
         SystemCode = BaseUtil.ConvertToString(dr[FieldSystemCode]);
     }
     if (dr.ContainsColumn(FieldIpAddressName))
     {
         IpAddressName = BaseUtil.ConvertToString(dr[FieldIpAddressName]);
     }
     if (dr.ContainsColumn(FieldPasswordStrength))
     {
         PasswordStrength = BaseUtil.ConvertToNullableByteInt(dr[FieldPasswordStrength]);
     }
     if (dr.ContainsColumn(FieldComputerName))
     {
         ComputerName = BaseUtil.ConvertToString(dr[FieldComputerName]);
     }
     if (dr.ContainsColumn(FieldNeedModifyPassword))
     {
         NeedModifyPassword = BaseUtil.ConvertToInt(dr[FieldNeedModifyPassword]);
     }
     if (dr.ContainsColumn(FieldSortCode))
     {
         SortCode = BaseUtil.ConvertToInt(dr[FieldSortCode]);
     }
     if (dr.ContainsColumn(FieldDeleted))
     {
         Deleted = BaseUtil.ConvertToInt(dr[FieldDeleted]);
     }
     if (dr.ContainsColumn(FieldEnabled))
     {
         Enabled = BaseUtil.ConvertToInt(dr[FieldEnabled]);
     }
     if (dr.ContainsColumn(FieldCreateTime))
     {
         CreateTime = BaseUtil.ConvertToDateTime(dr[FieldCreateTime]);
     }
     if (dr.ContainsColumn(FieldCreateUserId))
     {
         CreateUserId = BaseUtil.ConvertToInt(dr[FieldCreateUserId]);
     }
     if (dr.ContainsColumn(FieldCreateUserName))
     {
         CreateUserName = BaseUtil.ConvertToString(dr[FieldCreateUserName]);
     }
     if (dr.ContainsColumn(FieldCreateBy))
     {
         CreateBy = BaseUtil.ConvertToString(dr[FieldCreateBy]);
     }
     if (dr.ContainsColumn(FieldCreateIp))
     {
         CreateIp = BaseUtil.ConvertToString(dr[FieldCreateIp]);
     }
     if (dr.ContainsColumn(FieldUpdateTime))
     {
         UpdateTime = BaseUtil.ConvertToDateTime(dr[FieldUpdateTime]);
     }
     if (dr.ContainsColumn(FieldUpdateUserId))
     {
         UpdateUserId = BaseUtil.ConvertToInt(dr[FieldUpdateUserId]);
     }
     if (dr.ContainsColumn(FieldUpdateUserName))
     {
         UpdateUserName = BaseUtil.ConvertToString(dr[FieldUpdateUserName]);
     }
     if (dr.ContainsColumn(FieldUpdateBy))
     {
         UpdateBy = BaseUtil.ConvertToString(dr[FieldUpdateBy]);
     }
     if (dr.ContainsColumn(FieldUpdateIp))
     {
         UpdateIp = BaseUtil.ConvertToString(dr[FieldUpdateIp]);
     }
     return(this);
 }
Пример #39
0
 public ImportRow(ImportDataSegmenter parent, IDataRow row, int position)
 {
     _segmenter = parent;
     _row       = row;
     _position  = position;
 }
 public SelectedEventArgs2(IDataRow rowValues, IDataRow rowMembers, string value, bool enabled)
     : base(rowValues, value, enabled)
 {
     RowMembers = rowMembers;
 }
Пример #41
0
 public virtual object Read(byte[] buffer, IDataRow row, int offset)
 {
     return ReadRaw(buffer, row, offset);
 }
Пример #42
0
 /// <summary>
 ///     Read a column's data of a row.
 /// </summary>
 /// <param name="buffer">A byte-array containing the contents of the EX data file.</param>
 /// <param name="col"><see cref="Column" /> to read.</param>
 /// <param name="row"><see cref="IDataRow" /> to read in.</param>
 /// <returns>Returns the value read from the given <c>row</c> and <c>column</c>.</returns>
 public abstract object Read(byte[] buffer, Column col, IDataRow row);
 public SelectedEventArgs1(IDataRow rowValues, string value, bool selected)
     : base(value, selected)
 {
     RowValues = rowValues;
 }
 public EnabledEventArgs2(IDataRow rowValues, IDataRow rowMembers, bool enabled)
     : base(rowValues, enabled)
 {
     RowMembers = rowMembers;
 }
 /// <summary>
 /// 从数据行读取
 /// </summary>
 /// <param name="dr">数据行</param>
 protected override BaseEntity GetFrom(IDataRow dr)
 {
     GetFromExtend(dr);
     if (dr.ContainsColumn(FieldId))
     {
         Id = BaseUtil.ConvertToInt(dr[FieldId]);
     }
     if (dr.ContainsColumn(FieldTenantId))
     {
         TenantId = BaseUtil.ConvertToInt(dr[FieldTenantId]);
     }
     if (dr.ContainsColumn(FieldCode))
     {
         Code = BaseUtil.ConvertToString(dr[FieldCode]);
     }
     if (dr.ContainsColumn(FieldName))
     {
         Name = BaseUtil.ConvertToString(dr[FieldName]);
     }
     if (dr.ContainsColumn(FieldIsTree))
     {
         IsTree = BaseUtil.ConvertToInt(dr[FieldIsTree]);
     }
     if (dr.ContainsColumn(FieldAllowEdit))
     {
         AllowEdit = BaseUtil.ConvertToInt(dr[FieldAllowEdit]);
     }
     if (dr.ContainsColumn(FieldAllowDelete))
     {
         AllowDelete = BaseUtil.ConvertToInt(dr[FieldAllowDelete]);
     }
     if (dr.ContainsColumn(FieldDescription))
     {
         Description = BaseUtil.ConvertToString(dr[FieldDescription]);
     }
     if (dr.ContainsColumn(FieldSortCode))
     {
         SortCode = BaseUtil.ConvertToInt(dr[FieldSortCode]);
     }
     if (dr.ContainsColumn(FieldDeleted))
     {
         Deleted = BaseUtil.ConvertToInt(dr[FieldDeleted]);
     }
     if (dr.ContainsColumn(FieldEnabled))
     {
         Enabled = BaseUtil.ConvertToInt(dr[FieldEnabled]);
     }
     if (dr.ContainsColumn(FieldCreateTime))
     {
         CreateTime = BaseUtil.ConvertToDateTime(dr[FieldCreateTime]);
     }
     if (dr.ContainsColumn(FieldCreateUserId))
     {
         CreateUserId = BaseUtil.ConvertToInt(dr[FieldCreateUserId]);
     }
     if (dr.ContainsColumn(FieldCreateUserName))
     {
         CreateUserName = BaseUtil.ConvertToString(dr[FieldCreateUserName]);
     }
     if (dr.ContainsColumn(FieldCreateBy))
     {
         CreateBy = BaseUtil.ConvertToString(dr[FieldCreateBy]);
     }
     if (dr.ContainsColumn(FieldCreateIp))
     {
         CreateIp = BaseUtil.ConvertToString(dr[FieldCreateIp]);
     }
     if (dr.ContainsColumn(FieldUpdateTime))
     {
         UpdateTime = BaseUtil.ConvertToDateTime(dr[FieldUpdateTime]);
     }
     if (dr.ContainsColumn(FieldUpdateUserId))
     {
         UpdateUserId = BaseUtil.ConvertToInt(dr[FieldUpdateUserId]);
     }
     if (dr.ContainsColumn(FieldUpdateUserName))
     {
         UpdateUserName = BaseUtil.ConvertToString(dr[FieldUpdateUserName]);
     }
     if (dr.ContainsColumn(FieldUpdateBy))
     {
         UpdateBy = BaseUtil.ConvertToString(dr[FieldUpdateBy]);
     }
     if (dr.ContainsColumn(FieldUpdateIp))
     {
         UpdateIp = BaseUtil.ConvertToString(dr[FieldUpdateIp]);
     }
     return(this);
 }
Пример #46
0
 /// <summary>
 /// 从数据行读取
 /// </summary>
 /// <param name="dr">数据行</param>
 protected override BaseEntity GetFrom(IDataRow dr)
 {
     GetFromExtend(dr);
     if (dr.ContainsColumn(FieldId))
     {
         Id = BaseUtil.ConvertToInt(dr[FieldId]);
     }
     if (dr.ContainsColumn(FieldUserId))
     {
         UserId = BaseUtil.ConvertToInt(dr[FieldUserId]);
     }
     if (dr.ContainsColumn(FieldShowEmail))
     {
         ShowEmail = BaseUtil.ConvertToInt(dr[FieldShowEmail]);
     }
     if (dr.ContainsColumn(FieldEmail))
     {
         Email = BaseUtil.ConvertToString(dr[FieldEmail]);
     }
     if (dr.ContainsColumn(FieldEmailValidated))
     {
         EmailValidated = BaseUtil.ConvertToInt(dr[FieldEmailValidated]);
     }
     if (dr.ContainsColumn(FieldShowMobile))
     {
         ShowMobile = BaseUtil.ConvertToNullableByteInt(dr[FieldShowMobile]);
     }
     if (dr.ContainsColumn(FieldMobile))
     {
         Mobile = BaseUtil.ConvertToString(dr[FieldMobile]);
     }
     if (dr.ContainsColumn(FieldMobileValidated))
     {
         MobileValidated = BaseUtil.ConvertToInt(dr[FieldMobileValidated]);
     }
     if (dr.ContainsColumn(FieldMobileValidatedTime))
     {
         MobileValidatedTime = BaseUtil.ConvertToNullableDateTime(dr[FieldMobileValidatedTime]);
     }
     if (dr.ContainsColumn(FieldShortNumber))
     {
         ShortNumber = BaseUtil.ConvertToString(dr[FieldShortNumber]);
     }
     if (dr.ContainsColumn(FieldTelephone))
     {
         Telephone = BaseUtil.ConvertToString(dr[FieldTelephone]);
     }
     if (dr.ContainsColumn(FieldExtension))
     {
         Extension = BaseUtil.ConvertToString(dr[FieldExtension]);
     }
     if (dr.ContainsColumn(FieldQq))
     {
         Qq = BaseUtil.ConvertToString(dr[FieldQq]);
     }
     if (dr.ContainsColumn(FieldWw))
     {
         Ww = BaseUtil.ConvertToString(dr[FieldWw]);
     }
     if (dr.ContainsColumn(FieldIm))
     {
         Im = BaseUtil.ConvertToString(dr[FieldIm]);
     }
     if (dr.ContainsColumn(FieldWeChat))
     {
         WeChat = BaseUtil.ConvertToString(dr[FieldWeChat]);
     }
     if (dr.ContainsColumn(FieldWeChatValidated))
     {
         WeChatValidated = BaseUtil.ConvertToInt(dr[FieldWeChatValidated]);
     }
     if (dr.ContainsColumn(FieldWeChatOpenId))
     {
         WeChatOpenId = BaseUtil.ConvertToString(dr[FieldWeChatOpenId]);
     }
     if (dr.ContainsColumn(FieldCompanyId))
     {
         CompanyId = BaseUtil.ConvertToInt(dr[FieldCompanyId]);
     }
     if (dr.ContainsColumn(FieldCompanyEmail))
     {
         CompanyEmail = BaseUtil.ConvertToString(dr[FieldCompanyEmail]);
     }
     if (dr.ContainsColumn(FieldEmergencyContact))
     {
         EmergencyContact = BaseUtil.ConvertToString(dr[FieldEmergencyContact]);
     }
     if (dr.ContainsColumn(FieldEmergencyMobile))
     {
         EmergencyMobile = BaseUtil.ConvertToString(dr[FieldEmergencyMobile]);
     }
     if (dr.ContainsColumn(FieldEmergencyTelephone))
     {
         EmergencyTelephone = BaseUtil.ConvertToString(dr[FieldEmergencyTelephone]);
     }
     if (dr.ContainsColumn(FieldSortCode))
     {
         SortCode = BaseUtil.ConvertToInt(dr[FieldSortCode]);
     }
     if (dr.ContainsColumn(FieldDeleted))
     {
         Deleted = BaseUtil.ConvertToInt(dr[FieldDeleted]);
     }
     if (dr.ContainsColumn(FieldEnabled))
     {
         Enabled = BaseUtil.ConvertToInt(dr[FieldEnabled]);
     }
     if (dr.ContainsColumn(FieldCreateTime))
     {
         CreateTime = BaseUtil.ConvertToDateTime(dr[FieldCreateTime]);
     }
     if (dr.ContainsColumn(FieldCreateUserId))
     {
         CreateUserId = BaseUtil.ConvertToInt(dr[FieldCreateUserId]);
     }
     if (dr.ContainsColumn(FieldCreateUserName))
     {
         CreateUserName = BaseUtil.ConvertToString(dr[FieldCreateUserName]);
     }
     if (dr.ContainsColumn(FieldCreateBy))
     {
         CreateBy = BaseUtil.ConvertToString(dr[FieldCreateBy]);
     }
     if (dr.ContainsColumn(FieldCreateIp))
     {
         CreateIp = BaseUtil.ConvertToString(dr[FieldCreateIp]);
     }
     if (dr.ContainsColumn(FieldUpdateTime))
     {
         UpdateTime = BaseUtil.ConvertToDateTime(dr[FieldUpdateTime]);
     }
     if (dr.ContainsColumn(FieldUpdateUserId))
     {
         UpdateUserId = BaseUtil.ConvertToInt(dr[FieldUpdateUserId]);
     }
     if (dr.ContainsColumn(FieldUpdateUserName))
     {
         UpdateUserName = BaseUtil.ConvertToString(dr[FieldUpdateUserName]);
     }
     if (dr.ContainsColumn(FieldUpdateBy))
     {
         UpdateBy = BaseUtil.ConvertToString(dr[FieldUpdateBy]);
     }
     if (dr.ContainsColumn(FieldUpdateIp))
     {
         UpdateIp = BaseUtil.ConvertToString(dr[FieldUpdateIp]);
     }
     return(this);
 }
Пример #47
0
 /// <summary>
 ///     Read the column's value in a row, possibly post-processed depending on the column's implementation.
 /// </summary>
 /// <param name="buffer">A byte-array containing the contents of the data file.</param>
 /// <param name="row">The <see cref="IDataRow" /> whose data should be read.</param>
 /// <returns>Returns the column's value in <c>row</c>.</returns>
 public virtual object Read(byte[] buffer, IDataRow row)
 {
     return ReadRaw(buffer, row);
 }
Пример #48
0
        /// ///////////////////////////////////////////////////////////////////////
        /// ReadData
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="fileName">
        /// Name of the file associated with the stream.
        ///
        /// If this is not null, a file is opened with this name.
        /// If this is null, the method attempts to read from the passed in stream.
        /// </param>
        /// <param name="stream">
        /// All data is read from this stream, unless fileName is not null.
        ///
        /// This is a StreamReader rather then a TextReader,
        /// because we need to be able to seek back to the start of the
        /// stream, and you can't do that with a TextReader (or StringReader).
        /// </param>
        /// <param name="fileDescription"></param>
        /// <returns></returns>
        private IEnumerable <T> ReadData <T>(
            string fileName,
            StreamReader stream,
            CsvFileDescription fileDescription) where T : class, new()
        {
            // If T implements IDataRow, then we're reading raw data rows
            bool readingRawDataRows = typeof(IDataRow).IsAssignableFrom(typeof(T));

            // The constructor for FieldMapper_Reading will throw an exception if there is something
            // wrong with type T. So invoke that constructor before you open the file, because if there
            // is an exception, the file will not be closed.
            //
            // If T implements IDataRow, there is no need for a FieldMapper, because in that case we're returning
            // raw data rows.
            FieldMapper_Reading <T> fm = null;

            if (!readingRawDataRows)
            {
                fm = new FieldMapper_Reading <T>(fileDescription, fileName, false);
            }

            // -------
            // Each time the IEnumerable<T> that is returned from this method is
            // accessed in a foreach, ReadData is called again (not the original Read overload!)
            //
            // So, open the file here, or rewind the stream.

            bool readingFile = !string.IsNullOrEmpty(fileName);

            if (readingFile)
            {
                stream = new StreamReader(
                    fileName,
                    fileDescription.TextEncoding,
                    fileDescription.DetectEncodingFromByteOrderMarks);
            }
            else
            {
                // Rewind the stream

                if ((stream == null) || (!stream.BaseStream.CanSeek))
                {
                    throw new BadStreamException();
                }

                stream.BaseStream.Seek(0, SeekOrigin.Begin);
            }

            // ----------

            CsvStream cs = new CsvStream(stream, null, fileDescription.SeparatorChar, fileDescription.IgnoreTrailingSeparatorChar);

            // If we're reading raw data rows, instantiate a T so we return objects
            // of the type specified by the caller.
            // Otherwise, instantiate a DataRow, which also implements IDataRow.
            IDataRow row = null;

            if (readingRawDataRows)
            {
                row = new T() as IDataRow;
            }
            else
            {
                row = new DataRow();
            }

            AggregatedException ae =
                new AggregatedException(typeof(T).ToString(), fileName, fileDescription.MaximumNbrExceptions);

            try
            {
                List <int> charLengths = null;
                if (!readingRawDataRows)
                {
                    charLengths = fm.GetCharLengths();
                }

                bool firstRow = true;
                while (cs.ReadRow(row, charLengths))
                {
                    // Skip empty lines.
                    // Important. If there is a newline at the end of the last data line, the code
                    // thinks there is an empty line after that last data line.
                    if ((row.Count == 1) &&
                        ((row[0].Value == null) ||
                         (string.IsNullOrEmpty(row[0].Value.Trim()))))
                    {
                        continue;
                    }

                    if (firstRow && fileDescription.FirstLineHasColumnNames)
                    {
                        if (!readingRawDataRows)
                        {
                            fm.ReadNames(row);
                        }
                    }
                    else
                    {
                        T obj = default(T);
                        try
                        {
                            if (readingRawDataRows)
                            {
                                obj = row as T;
                            }
                            else
                            {
                                obj = fm.ReadObject(row, ae);
                            }
                        }
                        catch (AggregatedException ae2)
                        {
                            // Seeing that the AggregatedException was thrown, maximum number of exceptions
                            // must have been reached, so rethrow.
                            // Catch here, so you don't add an AggregatedException to an AggregatedException
                            throw ae2;
                        }
                        catch (Exception e)
                        {
                            // Store the exception in the AggregatedException ae.
                            // That way, if a file has many errors leading to exceptions,
                            // you get them all in one go, packaged in a single aggregated exception.
                            ae.AddException(e);
                        }

                        yield return(obj);
                    }
                    firstRow = false;
                }
            }
            finally
            {
                if (readingFile)
                {
                    stream.Close();
                }

                // If any exceptions were raised while reading the data from the file,
                // they will have been stored in the AggregatedException ae.
                // In that case, time to throw ae.
                ae.ThrowIfExceptionsStored();
            }
        }
 /// <summary>
 ///     Read a column's buffer of a row.
 /// </summary>
 /// <param name="buffer">A byte-array containing the contents of the EX buffer file.</param>
 /// <param name="col"><see cref="Column" /> to read.</param>
 /// <param name="row"><see cref="IDataRow" /> to read in.</param>
 /// <returns>Returns the value read from the given <c>row</c> and <c>column</c>.</returns>
 public override object Read(byte[] buffer, Column col, IDataRow row)
 {
     var offset = GetFieldOffset(col, row);
     return (buffer[offset] & _Mask) != 0;
 }
Пример #50
0
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="streamWriter">流写者</param>
 /// <param name="rowWriter">行写者</param>
 /// <param name="explainer">数据解释器</param>
 public DataWriter(StreamWriter streamWriter, IDataRow rowWriter, IDataExplainer explainer)
 {
     this._streamWriter = streamWriter;
     this._rowWriter    = rowWriter;
     this._explainer    = explainer;
 }
Пример #51
0
        private static double[] ComputeEstimates(IDataRow row, DecisionNode node)
        {
            var rowValue = row[node.Attribute];
            switch (node.Condition)
            {
                case PredicateCondition.Equal:
                    if (!row[node.Attribute].Equals(node.ThreshHold))
                    {
                        return null;
                    }
                    break;
                case PredicateCondition.LessThanOrEqual:
                    if ((rowValue == null) || (Convert.ToDouble(rowValue) > Convert.ToDouble(node.ThreshHold)))
                    {
                        return null;
                    }
                    break;
                case PredicateCondition.GreaterThan:
                    if ((rowValue == null) || (Convert.ToDouble(rowValue) <= Convert.ToDouble(node.ThreshHold)))
                    {
                        return null;
                    }
                    break;
                default:
                    return null;
            }

            if (node.Children != null && node.Children.Any())
            {
                foreach (var child in node.Children)
                {
                    var estimates = ComputeEstimates(row, child);
                    if (estimates != null)
                    {
                        return estimates;
                    }
                }
            }
            else
            {
                var estimates = new double[node.Statistics.Frequencies.Length];
                for (int index = 0; index < estimates.Length; index++)
                {
                    estimates[index] = node.Statistics.Frequencies[index]/(double) node.Statistics.DatasetLength;
                }
                return estimates;
            }

            return null;
        }
Пример #52
0
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="rowWriter">行写者</param>
 /// <param name="explainer">数据解释器</param>
 public DataWriter(IDataRow rowWriter, IDataExplainer explainer)
 {
     this._rowWriter = rowWriter;
     this._explainer = explainer;
 }
 public object Convert(IDataRow row, object rawValue) {
     var coll = (RelationalExCollection)row.Sheet.Collection;
     var key = System.Convert.ToInt32(rawValue);
     return coll.FindReference(key);
 }
Пример #54
0
 /// <summary>
 ///     Read the raw column's value in a row.
 /// </summary>
 /// <param name="buffer">A byte-array containing the contents of the data file.</param>
 /// <param name="row">The <see cref="IDataRow" /> whose data should be read.</param>
 /// <returns>Returns the raw column's value in <c>row</c>.</returns>
 public object ReadRaw(byte[] buffer, IDataRow row)
 {
     return(Reader.Read(buffer, this, row));
 }
 public override void Add(IDataRow dataRow)
 {
     data.Add(dataRow);
 }
Пример #56
0
 /// <summary>
 ///     Read the column's value in a row, possibly post-processed depending on the column's implementation.
 /// </summary>
 /// <param name="buffer">A byte-array containing the contents of the data file.</param>
 /// <param name="row">The <see cref="IDataRow" /> whose data should be read.</param>
 /// <returns>Returns the column's value in <c>row</c>.</returns>
 public virtual object Read(byte[] buffer, IDataRow row)
 {
     return(ReadRaw(buffer, row));
 }
Пример #57
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Feature"/> class from a geometry.
 /// </summary>
 /// <param name="geometry">The geometry to turn into a feature</param>
 public Feature(IGeometry geometry)
 {
     _geometry    = geometry;
     _featureType = FeatureTypeFromGeometryType(geometry);
     _dataRow     = null;
 }
Пример #58
0
        /// <summary>
        ///     Read a column's buffer of a row.
        /// </summary>
        /// <param name="buffer">A byte-array containing the contents of the EX buffer file.</param>
        /// <param name="col"><see cref="Column" /> to read.</param>
        /// <param name="row"><see cref="IDataRow" /> to read in.</param>
        /// <returns>Returns the value read from the given <c>row</c> and <c>column</c>.</returns>
        public override object Read(byte[] buffer, Column col, IDataRow row)
        {
            var offset = GetFieldOffset(col, row);

            return((buffer[offset] & _Mask) != 0);
        }
Пример #59
0
 /// <summary>
 ///     Get the absolute offset in the EX data file of a column for a given row.
 /// </summary>
 /// <param name="col"><see cref="Column" /> whose offset should be returned.</param>
 /// <param name="row"><see cref="IDataRow" /> to use as base.</param>
 /// <returns>Returns the absolute offset in the EX data file <c>col</c> inside <c>row</c>.</returns>
 protected static int GetFieldOffset(Column col, IDataRow row)
 {
     return col.Offset + row.Offset;
 }
Пример #60
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Feature"/> class.
 /// </summary>
 public Feature()
 {
     _dataRow     = null;
     _geometry    = null;
     _featureType = FeatureType.Unspecified;
 }