public RoadNodeChangeDbaseSchema() { Fields = new DbaseField[] { DbaseField.CreateNumberField( new DbaseFieldName(nameof(WEGKNOOPID)), new DbaseFieldLength(10), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(TYPE)), new DbaseFieldLength(3), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(TRANSACTID)), new DbaseFieldLength(4), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(RECORDTYPE)), new DbaseFieldLength(4), new DbaseDecimalCount(0)) }; }
public EuropeanRoadChangeDbaseSchema() { Fields = new DbaseField[] { DbaseField.CreateNumberField( new DbaseFieldName(nameof(EU_OIDN)), new DbaseFieldLength(10), new DbaseDecimalCount(0)), DbaseField.CreateNumberField( new DbaseFieldName(nameof(WS_OIDN)), new DbaseFieldLength(10), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(EUNUMMER)), new DbaseFieldLength(4)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(TRANSACTID)), new DbaseFieldLength(4), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(RECORDTYPE)), new DbaseFieldLength(4), new DbaseDecimalCount(0)) }; }
internal static ICollection<DbaseField> GetFields(DataTable schema, DbaseHeader header) { if (schema == null) { throw new ArgumentNullException("schema"); } List<DbaseField> fields = new List<DbaseField>(); DataView schemaView = new DataView(schema, "", ProviderSchemaHelper.ColumnOrdinalColumn, DataViewRowState.CurrentRows); int offset = 1; foreach (DataRowView rowView in schemaView) { if (String.Compare(rowView[ProviderSchemaHelper.ColumnNameColumn] as string, OidColumnName, StringComparison.InvariantCultureIgnoreCase) == 0) { continue; } string colName = rowView[ProviderSchemaHelper.ColumnNameColumn] as string; Type dataType = (Type)rowView[ProviderSchemaHelper.DataTypeColumn]; Int16 length = Convert.ToInt16(rowView[ProviderSchemaHelper.ColumnSizeColumn]); Byte decimals = Convert.ToByte(rowView[ProviderSchemaHelper.NumericPrecisionColumn]); int ordinal = Convert.ToInt32(rowView[ProviderSchemaHelper.ColumnOrdinalColumn]); DbaseField field = new DbaseField(header, colName, dataType, length, decimals, ordinal, offset); fields.Add(field); offset += field.Length; } return fields; }
public NationalRoadChangeDbaseSchema() { Fields = new DbaseField[] { DbaseField.CreateNumberField( new DbaseFieldName(nameof(NW_OIDN)), new DbaseFieldLength(10), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(WS_OIDN)), new DbaseFieldLength(10), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(IDENT2)), new DbaseFieldLength(8)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(TRANSACTID)), new DbaseFieldLength(4), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(RECORDTYPE)), new DbaseFieldLength(4), new DbaseDecimalCount(0)) }; }
internal FeatureDataRow GetFeature(uint oid, FeatureDataTable table) { if (RecordDeleted(oid)) { return(null); } /* * if (!_isOpen) * throw (new ApplicationException("An attempt was made to read from a closed DBF file")); * if (oid >= _NumberOfRecords) * throw (new ArgumentException("Invalid DataRow requested at index " + oid)); * fs.Seek(_HeaderLength + oid*_RecordLength, 0); * * if (br.ReadChar() == '*') //is record marked deleted? * return null; */ var dr = table.NewRow(); for (int i = 0; i < DbaseColumns.Length; i++) { DbaseField dbf = DbaseColumns[i]; dr[dbf.ColumnName] = ReadDbfValue(dbf); } return(dr); }
/// <summary> /// Gets the feature at the specified Object ID /// </summary> /// <param name="oid"></param> /// <param name="table"></param> /// <returns></returns> internal IFeature GetFeature(uint oid, IFeatures table) { if (!_isOpen) { throw (new ApplicationException("An attempt was made to read from a closed DBF file")); } if (oid >= _NumberOfRecords) { throw (new ArgumentException("Invalid DataRow requested at index " + oid.ToString())); } fs.Seek(_HeaderLength + oid * _RecordLength, 0); IFeature dr = table.New(); if (br.ReadChar() == '*') //is record marked deleted? { return(null); } for (int i = 0; i < DbaseColumns.Length; i++) { DbaseField dbf = DbaseColumns[i]; dr[dbf.ColumnName] = ReadDbfValue(dbf); } return(dr); }
public TransactionZoneDbaseSchema() { Fields = new [] { DbaseField.CreateNumberField( new DbaseFieldName(nameof(SOURCE_ID)), new DbaseFieldLength(4), new DbaseDecimalCount(0)), DbaseField.CreateNumberField( new DbaseFieldName(nameof(TYPE)), new DbaseFieldLength(4), new DbaseDecimalCount(0)), DbaseField.CreateCharacterField( new DbaseFieldName(nameof(BESCHRIJV)), new DbaseFieldLength(254)), DbaseField.CreateCharacterField( new DbaseFieldName(nameof(OPERATOR)), new DbaseFieldLength(254)), DbaseField.CreateCharacterField( new DbaseFieldName(nameof(ORG)), new DbaseFieldLength(18)), DbaseField.CreateCharacterField( new DbaseFieldName(nameof(APPLICATIE)), new DbaseFieldLength(18)) }; }
public RoadSegmentSurfaceAttributeDbaseSchema() { Fields = new DbaseField[] { DbaseField.CreateNumberField( new DbaseFieldName(nameof(WV_OIDN)), new DbaseFieldLength(15), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(WS_OIDN)), new DbaseFieldLength(15), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(WS_GIDN)), new DbaseFieldLength(18)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(TYPE)), new DbaseFieldLength(2), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLTYPE)), new DbaseFieldLength(64)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(VANPOS)), new DbaseFieldLength(9), new DbaseDecimalCount(3)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(TOTPOS)), new DbaseFieldLength(9), new DbaseDecimalCount(3)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(BEGINTIJD)), new DbaseFieldLength(15)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(BEGINORG)), new DbaseFieldLength(18)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLBGNORG)), new DbaseFieldLength(64)) }; }
public FakeDbaseSchema() { Fields = new [] { DbaseField.CreateNumberField( new DbaseFieldName(nameof(Field)), new DbaseFieldLength(10), new DbaseDecimalCount(0)) }; }
public void ValidateWithRecordsThatHaveNullAsRequiredFieldValueReturnsExpectedResult( Action <NumberedRoadChangeDbaseRecord> modifier, DbaseField field) { var record = _fixture.Create <NumberedRoadChangeDbaseRecord>(); modifier(record); var records = new[] { record }.ToDbaseRecordEnumerator(); var result = _sut.Validate(_entry, records); Assert.Contains(_entry.AtDbaseRecord(new RecordNumber(1)).RequiredFieldIsNull(field), result); }
public RoadSegmentNumberedRoadAttributeDbaseSchema() { Fields = new DbaseField[] { DbaseField.CreateNumberField( new DbaseFieldName(nameof(GW_OIDN)), new DbaseFieldLength(15), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(WS_OIDN)), new DbaseFieldLength(15), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(IDENT8)), new DbaseFieldLength(8)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(RICHTING)), new DbaseFieldLength(2), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLRICHT)), new DbaseFieldLength(64)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(VOLGNUMMER)), new DbaseFieldLength(5), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(BEGINTIJD)), new DbaseFieldLength(15)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(BEGINORG)), new DbaseFieldLength(18)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLBGNORG)), new DbaseFieldLength(64)) }; }
public RoadSegmentLaneChangeDbaseSchema() { Fields = new DbaseField[] { DbaseField.CreateNumberField( new DbaseFieldName(nameof(RS_OIDN)), new DbaseFieldLength(10), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(WS_OIDN)), new DbaseFieldLength(10), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(VANPOSITIE)), new DbaseFieldLength(7), new DbaseDecimalCount(3)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(TOTPOSITIE)), new DbaseFieldLength(7), new DbaseDecimalCount(3)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(AANTAL)), new DbaseFieldLength(4), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(RICHTING)), new DbaseFieldLength(4), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(TRANSACTID)), new DbaseFieldLength(4), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(RECORDTYPE)), new DbaseFieldLength(4), new DbaseDecimalCount(0)) }; }
public OrganizationDbaseSchema() { Fields = new DbaseField[] { DbaseField.CreateCharacterField( new DbaseFieldName(nameof(ORG)), new DbaseFieldLength(18)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLORG)), new DbaseFieldLength(64)) }; }
public GradeSeparatedJunctionDbaseSchema() { Fields = new DbaseField[] { DbaseField.CreateNumberField( new DbaseFieldName(nameof(OK_OIDN)), new DbaseFieldLength(15), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(TYPE)), new DbaseFieldLength(2), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLTYPE)), new DbaseFieldLength(64)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(BO_WS_OIDN)), new DbaseFieldLength(15), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(ON_WS_OIDN)), new DbaseFieldLength(15), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(BEGINTIJD)), new DbaseFieldLength(15)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(BEGINORG)), new DbaseFieldLength(18)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLBGNORG)), new DbaseFieldLength(64)) }; }
public NumberedRoadChangeDbaseSchema() { Fields = new DbaseField[] { DbaseField.CreateNumberField( new DbaseFieldName(nameof(GW_OIDN)), new DbaseFieldLength(10), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(WS_OIDN)), new DbaseFieldLength(10), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(IDENT8)), new DbaseFieldLength(8)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(RICHTING)), new DbaseFieldLength(2), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(VOLGNUMMER)), new DbaseFieldLength(5), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(TRANSACTID)), new DbaseFieldLength(4), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(RECORDTYPE)), new DbaseFieldLength(4), new DbaseDecimalCount(0)) }; }
public RoadSegmentCategoryDbaseSchema() { Fields = new[] { DbaseField.CreateCharacterField( new DbaseFieldName(nameof(WEGCAT)), new DbaseFieldLength(5)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLWEGCAT)), new DbaseFieldLength(64)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(DEFWEGCAT)), new DbaseFieldLength(254)) }; }
public RoadNodeTypeDbaseSchema() { Fields = new[] { DbaseField.CreateNumberField( new DbaseFieldName(nameof(TYPE)), new DbaseFieldLength(2), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLTYPE)), new DbaseFieldLength(64)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(DEFTYPE)), new DbaseFieldLength(254)) }; }
public RoadSegmentMorphologyDbaseSchema() { Fields = new[] { DbaseField.CreateNumberField( new DbaseFieldName(nameof(MORF)), new DbaseFieldLength(3), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLMORF)), new DbaseFieldLength(64)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(DEFMORF)), new DbaseFieldLength(254)) }; }
public NumberedRoadSegmentDirectionDbaseSchema() { Fields = new[] { DbaseField.CreateNumberField( new DbaseFieldName(nameof(RICHTING)), new DbaseFieldLength(2), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLRICHT)), new DbaseFieldLength(64)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(DEFRICHT)), new DbaseFieldLength(254)) }; }
public RoadSegmentStatusDbaseSchema() { Fields = new[] { DbaseField.CreateNumberField( new DbaseFieldName(nameof(STATUS)), new DbaseFieldLength(2), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLSTATUS)), new DbaseFieldLength(64)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(DEFSTATUS)), new DbaseFieldLength(254)) }; }
public RoadSegmentGeometryDrawMethodDbaseSchema() { Fields = new[] { DbaseField.CreateNumberField( new DbaseFieldName(nameof(METHODE)), new DbaseFieldLength(2), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLMETHOD)), new DbaseFieldLength(64)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(DEFMETHOD)), new DbaseFieldLength(254)) }; }
public RoadSegmentAccessRestrictionDbaseSchema() { Fields = new[] { DbaseField.CreateNumberField( new DbaseFieldName(nameof(TYPE)), new DbaseFieldLength(2), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLTYPE)), new DbaseFieldLength(64)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(DEFTYPE)), new DbaseFieldLength(254)) }; }
public RoadNodeDbaseSchema() { Fields = new DbaseField[] { DbaseField.CreateNumberField( new DbaseFieldName(nameof(WK_OIDN)), new DbaseFieldLength(15), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(WK_UIDN)), new DbaseFieldLength(18)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(TYPE)), new DbaseFieldLength(2), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLTYPE)), new DbaseFieldLength(64)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(BEGINTIJD)), new DbaseFieldLength(15)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(BEGINORG)), new DbaseFieldLength(18)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLBGNORG)), new DbaseFieldLength(64)) }; }
public GradeSeparatedJunctionChangeDbaseSchema() { Fields = new DbaseField[] { DbaseField.CreateNumberField( new DbaseFieldName(nameof(OK_OIDN)), new DbaseFieldLength(10), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(TYPE)), new DbaseFieldLength(2), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(BO_WS_OIDN)), new DbaseFieldLength(10), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(ON_WS_OIDN)), new DbaseFieldLength(10), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(TRANSACTID)), new DbaseFieldLength(4), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(RECORDTYPE)), new DbaseFieldLength(4), new DbaseDecimalCount(0)) }; }
public RoadSegmentNationalRoadAttributeDbaseSchema() { Fields = new DbaseField[] { DbaseField.CreateNumberField( new DbaseFieldName(nameof(NW_OIDN)), new DbaseFieldLength(15), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(WS_OIDN)), new DbaseFieldLength(15), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(IDENT2)), new DbaseFieldLength(8)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(BEGINTIJD)), new DbaseFieldLength(15)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(BEGINORG)), new DbaseFieldLength(18)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLBGNORG)), new DbaseFieldLength(64)) }; }
public RoadSegmentEuropeanRoadAttributeDbaseSchema() { Fields = new DbaseField[] { DbaseField.CreateNumberField( new DbaseFieldName(nameof(EU_OIDN)), new DbaseFieldLength(15), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(WS_OIDN)), new DbaseFieldLength(15), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(EUNUMMER)), new DbaseFieldLength(4)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(BEGINTIJD)), new DbaseFieldLength(15)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(BEGINORG)), new DbaseFieldLength(18)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLBGNORG)), new DbaseFieldLength(64)) }; }
public RoadSegmentChangeDbaseSchema() { Fields = new DbaseField[] { DbaseField.CreateNumberField( new DbaseFieldName(nameof(WS_OIDN)), new DbaseFieldLength(10), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(METHODE)), new DbaseFieldLength(2), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(BEHEERDER)), new DbaseFieldLength(18)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(MORFOLOGIE)), new DbaseFieldLength(3), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(STATUS)), new DbaseFieldLength(10), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(WEGCAT)), new DbaseFieldLength(10)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(B_WK_OIDN)), new DbaseFieldLength(10), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(E_WK_OIDN)), new DbaseFieldLength(10), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(LSTRNMID)), new DbaseFieldLength(10), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(RSTRNMID)), new DbaseFieldLength(10), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(TGBEP)), new DbaseFieldLength(2), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(TRANSACTID)), new DbaseFieldLength(4), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(RECORDTYPE)), new DbaseFieldLength(4), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(EVENTIDN)), new DbaseFieldLength(10), new DbaseDecimalCount(0)) }; }
private object readDbfValue(DbaseField dbf) { if (ReferenceEquals(dbf, null)) { throw new ArgumentNullException("dbf"); } #if CFBuild byte[] brBytes; #endif switch (Type.GetTypeCode(dbf.DataType)) { case TypeCode.Boolean: char tempChar = (char)_dbaseReader.ReadByte(); return ((tempChar == 'T') || (tempChar == 't') || (tempChar == 'Y') || (tempChar == 'y')); case TypeCode.DateTime: DateTime date; // Mono has not yet implemented DateTime.TryParseExact #if !MONO #if !CFBuild if (DateTime.TryParseExact(Encoding.UTF8.GetString((_dbaseReader.ReadBytes(8))), "yyyyMMdd", DbaseConstants.StorageNumberFormat, DateTimeStyles.None, out date)) { return date; } else { return DBNull.Value; } #else try { brBytes = _dbaseReader.ReadBytes(8); return date = DateTime.ParseExact(Encoding.UTF7.GetString(brBytes, 0, brBytes.Length), "yyyyMMdd", DbaseConstants.StorageNumberFormat, DateTimeStyles.None); } catch (Exception e) { return DBNull.Value; } #endif #else try { date = DateTime.ParseExact(Encoding.UTF8.GetString((_dbaseReader.ReadBytes(8))), "yyyyMMdd", DbaseConstants.StorageNumberFormat, DateTimeStyles.None); return date; } catch (FormatException) { return DBNull.Value; } #endif case TypeCode.Double: #if !CFBuild string temp = Encoding.UTF8.GetString(_dbaseReader.ReadBytes(dbf.Length)).Replace("\0", "").Trim(); #else brBytes = _dbaseReader.ReadBytes(dbf.Length); string temp = Encoding.UTF8.GetString(brBytes, 0, brBytes.Length).Replace("\0", "").Trim(); #endif double dbl; #if !CFBuild if (double.TryParse(temp, NumberStyles.Float, DbaseConstants.StorageNumberFormat, out dbl)) { return dbl; } else { return DBNull.Value; } #else try { dbl = double.Parse(temp, NumberStyles.Float, DbaseConstants.StorageNumberFormat); return dbl; } catch (Exception e) { return DBNull.Value; } #endif case TypeCode.Int16: #if !CFBuild string temp16 = Encoding.UTF8.GetString((_dbaseReader.ReadBytes(dbf.Length))).Replace("\0", "").Trim(); #else brBytes = _dbaseReader.ReadBytes(dbf.Length); string temp16 = Encoding.UTF8.GetString(brBytes, 0, brBytes.Length).Replace("\0", "").Trim(); #endif Int16 i16; #if !CFBuild if (Int16.TryParse(temp16, NumberStyles.Float, DbaseConstants.StorageNumberFormat, out i16)) { return i16; } else { return DBNull.Value; } #else try { i16 = Int16.Parse(temp16, NumberStyles.Float, DbaseConstants.StorageNumberFormat); return i16; } catch (Exception e) { return DBNull.Value; } #endif case TypeCode.Int32: #if !CFBuild string temp32 = Encoding.UTF8.GetString((_dbaseReader.ReadBytes(dbf.Length))).Replace("\0", "").Trim(); #else brBytes = _dbaseReader.ReadBytes(dbf.Length); string temp32 = Encoding.UTF8.GetString(brBytes, 0, brBytes.Length).Replace("\0", "").Trim(); #endif Int32 i32; #if !CFBuild if (Int32.TryParse(temp32, NumberStyles.Float, DbaseConstants.StorageNumberFormat, out i32)) { return i32; } else { return DBNull.Value; } #else try { i32 = Int32.Parse(temp32, NumberStyles.Float, DbaseConstants.StorageNumberFormat); return i32; } catch (Exception e) { return DBNull.Value; } #endif case TypeCode.Int64: #if !CFBuild string temp64 = Encoding.UTF8.GetString((_dbaseReader.ReadBytes(dbf.Length))).Replace("\0", "").Trim(); #else brBytes = _dbaseReader.ReadBytes(dbf.Length); string temp64 = Encoding.UTF8.GetString(brBytes, 0, brBytes.Length).Replace("\0", "").Trim(); #endif Int64 i64 = 0; #if !CFBuild if (Int64.TryParse(temp64, NumberStyles.Float, DbaseConstants.StorageNumberFormat, out i64)) { return i64; } else { return DBNull.Value; } #else try { i64 = Int64.Parse(temp64, NumberStyles.Float, DbaseConstants.StorageNumberFormat); return i64; } catch (Exception e) { return DBNull.Value; } #endif case TypeCode.Single: #if !CFBuild string temp4 = Encoding.UTF8.GetString((_dbaseReader.ReadBytes(dbf.Length))); #else brBytes = _dbaseReader.ReadBytes(dbf.Length); string temp4 = Encoding.UTF8.GetString(brBytes, 0, brBytes.Length); #endif float f = 0; #if !CFBuild if (float.TryParse(temp4, NumberStyles.Float, DbaseConstants.StorageNumberFormat, out f)) { return f; } else { return DBNull.Value; } #else try { f = float.Parse(temp4, NumberStyles.Float, DbaseConstants.StorageNumberFormat); return f; } catch (Exception e) { return DBNull.Value; } #endif case TypeCode.String: { byte[] chars = _dbaseReader.ReadBytes(dbf.Length); #if !CFBuild string value = _dbaseFile.Encoding.GetString(chars); #else string value = _dbaseFile.Encoding.GetString(chars, 0, chars.Length); #endif return value.Replace("\0", "").Trim(); } case TypeCode.Char: case TypeCode.UInt16: case TypeCode.UInt32: case TypeCode.UInt64: case TypeCode.Byte: case TypeCode.DBNull: case TypeCode.Object: case TypeCode.SByte: case TypeCode.Empty: case TypeCode.Decimal: default: throw new NotSupportedException("Cannot parse DBase field '" + dbf.ColumnName + "' of type '" + dbf.DataType + "'"); } }
/// <summary> /// Gets a value for the given <paramref name="row">row index</paramref> and /// <paramref name="column">column index</paramref>. /// </summary> /// <param name="row"> /// Index of the row to retrieve value from. Zero-based. /// </param> /// <param name="column"> /// Index of the column to retrieve value from. Zero-based. /// </param> /// <returns> /// The value at the given (row, column). /// </returns> /// <exception cref="ObjectDisposedException"> /// Thrown when the method is called and /// object has been disposed. /// </exception> /// <exception cref="InvalidDbaseFileOperationException"> /// Thrown if this reader is /// closed (check <see cref="IsOpen"/> before calling), or if the column is an /// unsupported type. /// </exception> /// <exception cref="ArgumentOutOfRangeException"> /// Thrown if <paramref name="row"/> is /// less than 0 or greater than <see cref="RecordCount"/> - 1. /// </exception> internal object GetValue(uint row, DbaseField column) { checkState(); DbaseHeader header = _dbaseFile._header; if (!_dbaseFile.IsOpen) { throw new InvalidDbaseFileOperationException( "An attempt was made to read from a closed DBF file"); } if (row < 0 || row >= header.RecordCount) { throw new ArgumentOutOfRangeException( "Invalid row requested at index " + row); } // Compute the position in the file stream for the requested row and column long offset = header.HeaderLength + (row * header.RecordLength); offset += column.Offset; // Seek to the computed offset _dbaseFile.DataStream.Seek(offset, SeekOrigin.Begin); try { return readDbfValue(column); } catch (NotSupportedException) { throw new InvalidDbaseFileOperationException( String.Format("Column type {0} is not supported.", column.DataType)); } }
private object ReadDbfValue(DbaseField dbf) { switch (dbf.DataType.ToString()) { case "System.String": if (_encoding == null) { return(_fileEncoding.GetString(_br.ReadBytes(dbf.Length)).Replace("\0", "").Trim()); } return(_encoding.GetString(_br.ReadBytes(dbf.Length)).Replace("\0", "").Trim()); case "System.Double": string temp = Encoding.UTF7.GetString(_br.ReadBytes(dbf.Length)).Replace("\0", "").Trim(); double dbl; if (double.TryParse(temp, NumberStyles.Float, CultureInfo.InvariantCulture, out dbl)) { return(dbl); } return(DBNull.Value); case "System.Int16": string temp16 = Encoding.UTF7.GetString((_br.ReadBytes(dbf.Length))).Replace("\0", "").Trim(); Int16 i16; if (Int16.TryParse(temp16, NumberStyles.Float, CultureInfo.InvariantCulture, out i16)) { return(i16); } return(DBNull.Value); case "System.Int32": string temp32 = Encoding.UTF7.GetString((_br.ReadBytes(dbf.Length))).Replace("\0", "").Trim(); Int32 i32; if (Int32.TryParse(temp32, NumberStyles.Float, CultureInfo.InvariantCulture, out i32)) { return(i32); } return(DBNull.Value); case "System.Int64": string temp64 = Encoding.UTF7.GetString((_br.ReadBytes(dbf.Length))).Replace("\0", "").Trim(); Int64 i64; if (Int64.TryParse(temp64, NumberStyles.Float, CultureInfo.InvariantCulture, out i64)) { return(i64); } return(DBNull.Value); case "System.Single": string temp4 = Encoding.UTF8.GetString((_br.ReadBytes(dbf.Length))); float f; if (float.TryParse(temp4, NumberStyles.Float, CultureInfo.InvariantCulture, out f)) { return(f); } return(DBNull.Value); case "System.Boolean": char tempChar = _br.ReadChar(); return((tempChar == 'T') || (tempChar == 't') || (tempChar == 'Y') || (tempChar == 'y')); case "System.DateTime": DateTime date; // Mono has not yet implemented DateTime.TryParseExact #if !MONO if (DateTime.TryParseExact(Encoding.UTF7.GetString((_br.ReadBytes(8))), "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out date)) { return(date); } return(DBNull.Value); #else try { return(date = DateTime.ParseExact(System.Text.Encoding.UTF7.GetString((br.ReadBytes(8))), "yyyyMMdd", Mapsui.Map.numberFormat_EnUS, System.Globalization.DateTimeStyles.None)); } catch (Exception e) { return(DBNull.Value); } #endif default: throw (new NotSupportedException("Cannot parse DBase field '" + dbf.ColumnName + "' of type '" + dbf.DataType + "'")); } }
private void ParseDbfHeader() { if (_br.ReadByte() != 0x03) { throw new NotSupportedException("Unsupported DBF Type"); } _lastUpdate = new DateTime(_br.ReadByte() + 1900, _br.ReadByte(), _br.ReadByte()); //Read the last update date _numberOfRecords = _br.ReadInt32(); // read number of records. _headerLength = _br.ReadInt16(); // read length of header structure. _recordLength = _br.ReadInt16(); // read length of a record _fs.Seek(29, SeekOrigin.Begin); //Seek to encoding flag _fileEncoding = GetDbaseLanguageDriver(_br.ReadByte()); //Read and parse Language driver _fs.Seek(32, SeekOrigin.Begin); //Move past the reserved bytes int numberOfColumns = (_headerLength - 31) / 32; // calculate the number of DataColumns in the header _dbaseColumns = new DbaseField[numberOfColumns]; for (int i = 0; i < _dbaseColumns.Length; i++) { _dbaseColumns[i] = new DbaseField { ColumnName = Encoding.UTF7.GetString((_br.ReadBytes(11))).Replace("\0", "").Trim() }; char fieldtype = _br.ReadChar(); switch (fieldtype) { case 'L': _dbaseColumns[i].DataType = typeof(bool); break; case 'C': _dbaseColumns[i].DataType = typeof(string); break; case 'D': _dbaseColumns[i].DataType = typeof(DateTime); break; case 'N': _dbaseColumns[i].DataType = typeof(double); break; case 'F': _dbaseColumns[i].DataType = typeof(float); break; case 'B': _dbaseColumns[i].DataType = typeof(byte[]); break; default: throw (new NotSupportedException("Invalid or unknown DBase field type '" + fieldtype + "' in column '" + _dbaseColumns[i].ColumnName + "'")); } _dbaseColumns[i].Address = _br.ReadInt32(); int length = _br.ReadByte(); if (length < 0) { length = length + 256; } _dbaseColumns[i].Length = length; _dbaseColumns[i].Decimals = _br.ReadByte(); //If the double-type doesn't have any decimals, make the type an integer if (_dbaseColumns[i].Decimals == 0 && _dbaseColumns[i].DataType == typeof(double)) { if (_dbaseColumns[i].Length <= 2) { _dbaseColumns[i].DataType = typeof(Int16); } else if (_dbaseColumns[i].Length <= 4) { _dbaseColumns[i].DataType = typeof(Int32); } else { _dbaseColumns[i].DataType = typeof(Int64); } } _fs.Seek(_fs.Position + 14, 0); } _headerIsParsed = true; }
internal static DbaseHeader ParseDbfHeader(Stream dataStream) { DbaseHeader header; using (BinaryReader reader = new BinaryReader(dataStream)) { if (reader.ReadByte() != DbaseConstants.DbfVersionCode) { throw new NotSupportedException("Unsupported DBF Type"); } DateTime lastUpdate = new DateTime(reader.ReadByte() + DbaseConstants.DbaseEpoch, reader.ReadByte(), reader.ReadByte()); //Read the last update date UInt32 recordCount = reader.ReadUInt32(); // read number of records. Int16 storedHeaderLength = reader.ReadInt16(); // read length of header structure. Int16 storedRecordLength = reader.ReadInt16(); // read length of a record reader.BaseStream.Seek(DbaseConstants.EncodingOffset, SeekOrigin.Begin); //Seek to encoding flag Byte languageDriver = reader.ReadByte(); //Read and parse Language driver reader.BaseStream.Seek(DbaseConstants.ColumnDescriptionOffset, SeekOrigin.Begin); //Move past the reserved bytes Int32 numberOfColumns = (storedHeaderLength - DbaseConstants.ColumnDescriptionOffset) / DbaseConstants.ColumnDescriptionLength; // calculate the number of DataColumns in the header header = new DbaseHeader(languageDriver, lastUpdate, recordCount); DbaseField[] columns = new DbaseField[numberOfColumns]; Int32 offset = 1; for (Int32 i = 0; i < columns.Length; i++) { String colName = header.FileEncoding.GetString( reader.ReadBytes(11)).Replace("\0", "").Trim(); Char fieldtype = reader.ReadChar(); // Unused address data... reader.ReadInt32(); Int16 fieldLength = reader.ReadByte(); Byte decimals = 0; if (fieldtype == 'N' || fieldtype == 'F') { decimals = reader.ReadByte(); } else { fieldLength += (Int16)(reader.ReadByte() << 8); } Type dataType = mapFieldTypeToClrType(fieldtype, decimals, fieldLength); columns[i] = new DbaseField(header, colName, dataType, fieldLength, decimals, i, offset); offset += fieldLength; // Move stream to next field record reader.BaseStream.Seek(DbaseConstants.BytesFromEndOfDecimalInFieldRecord, SeekOrigin.Current); } header.Columns = columns; if (storedHeaderLength != header.HeaderLength) { throw new InvalidDbaseFileException( "Recorded header length doesn't equal computed header length."); } if (storedRecordLength != header.RecordLength) { throw new InvalidDbaseFileException( "Recorded record length doesn't equal computed record length."); } } return header; }
public static FileError RequiredFieldIsNull(this IDbaseFileRecordProblemBuilder builder, DbaseField field) { if (field == null) { throw new ArgumentNullException(nameof(field)); } return(builder .Error(nameof(RequiredFieldIsNull)) .WithParameter(new ProblemParameter("Field", field.Name.ToString())) .Build()); }
public RoadSegmentDbaseSchema() { Fields = new DbaseField[] { DbaseField.CreateNumberField( new DbaseFieldName(nameof(WS_OIDN)), new DbaseFieldLength(15), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(WS_UIDN)), new DbaseFieldLength(18)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(WS_GIDN)), new DbaseFieldLength(18)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(B_WK_OIDN)), new DbaseFieldLength(15), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(E_WK_OIDN)), new DbaseFieldLength(15), new DbaseDecimalCount(0)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(STATUS)), new DbaseFieldLength(2), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLSTATUS)), new DbaseFieldLength(64)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(MORF)), new DbaseFieldLength(3), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLMORF)), new DbaseFieldLength(64)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(WEGCAT)), new DbaseFieldLength(5)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLWEGCAT)), new DbaseFieldLength(64)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(LSTRNMID)), new DbaseFieldLength(15), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LSTRNM)), new DbaseFieldLength(80)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(RSTRNMID)), new DbaseFieldLength(15), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(RSTRNM)), new DbaseFieldLength(80)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(BEHEER)), new DbaseFieldLength(18)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLBEHEER)), new DbaseFieldLength(64)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(METHODE)), new DbaseFieldLength(2), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLMETHOD)), new DbaseFieldLength(64)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(OPNDATUM)), new DbaseFieldLength(15)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(BEGINTIJD)), new DbaseFieldLength(15)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(BEGINORG)), new DbaseFieldLength(18)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLBGNORG)), new DbaseFieldLength(64)), DbaseField .CreateNumberField( new DbaseFieldName(nameof(TGBEP)), new DbaseFieldLength(2), new DbaseDecimalCount(0)), DbaseField .CreateCharacterField( new DbaseFieldName(nameof(LBLTGBEP)), new DbaseFieldLength(64)) }; }
/// <summary> /// Gets a value for the given <paramref name="row">row index</paramref> and /// <paramref name="column">column index</paramref>. /// </summary> /// <param name="row"> /// Index of the row to retrieve value from. Zero-based. /// </param> /// <param name="column"> /// Index of the column to retrieve value from. Zero-based. /// </param> /// <returns> /// The value at the given (row, column). /// </returns> /// <exception cref="ObjectDisposedException"> /// Thrown when the method is called and /// Object has been disposed. /// </exception> /// <exception cref="InvalidDbaseFileOperationException"> /// Thrown if this reader is /// closed (check <see cref="IsOpen"/> before calling), or if the column is an /// unsupported type. /// </exception> /// <exception cref="ArgumentOutOfRangeException"> /// Thrown if <paramref name="row"/> is /// less than 0 or greater than <see cref="RecordCount"/> - 1. /// </exception> internal Object GetValue(UInt32 row, DbaseField column) { ensureCurrentValues(row); if (_currentRowValues[column.Ordinal] is Exception) { throw (Exception)_currentRowValues[column.Ordinal]; } return _currentRowValues[column.Ordinal]; }