protected FileFormatReader(AddmlFlatFileDefinition addmlFlatFileDefinition) { List <AddmlRecordDefinition> addmlRecordDefinitions = addmlFlatFileDefinition.AddmlRecordDefinitions; if (addmlRecordDefinitions.Count < 1) { throw new ArgumentException("At least 1 addmlFlatFileDefinition must be present. Found: " + addmlRecordDefinitions.Count); } if (addmlRecordDefinitions.Count == 1) { _addmlRecordDefinition = addmlRecordDefinitions[0]; return; } foreach (AddmlRecordDefinition addmlRecordDefinition in addmlRecordDefinitions) { string recordDefinitionFieldValue = addmlRecordDefinition.RecordDefinitionFieldValue; if (string.IsNullOrEmpty(recordDefinitionFieldValue)) { throw new ArgumentException("recordDefinitionFieldValue must be present"); } _addmlRecordDefinitions.Add(recordDefinitionFieldValue, addmlRecordDefinition); } }
private Tuple <int?, int?> GetIdentifierStartPositionAndLength(AddmlFlatFileDefinition flatFileDefinition) { string recordDefinitionFieldIdentifier = flatFileDefinition.RecordDefinitionFieldIdentifier; if (recordDefinitionFieldIdentifier == null) { return(new Tuple <int?, int?>(null, null)); } foreach (AddmlRecordDefinition addmlRecordDefinition in flatFileDefinition.AddmlRecordDefinitions) { foreach (AddmlFieldDefinition addmlFieldDefinition in addmlRecordDefinition.AddmlFieldDefinitions) { if (addmlFieldDefinition.Name == recordDefinitionFieldIdentifier) { // ADDML startPosition is 1 based int?startPosition = addmlFieldDefinition.StartPosition - 1; int?length = addmlFieldDefinition.FixedLength; return(new Tuple <int?, int?>(startPosition, length)); } } } return(new Tuple <int?, int?>(null, null)); }
private void TestBooleanDataType(AddmlDefinition addmlDefinition) { AddmlFlatFileDefinition addmlFlatFileDefinition = addmlDefinition.AddmlFlatFileDefinitions[3]; addmlFlatFileDefinition.Name.Should().Be("ffd_6"); addmlFlatFileDefinition.FileName.Should().Be("jegerK.dat"); AddmlFieldDefinition addmlFieldDefinition = addmlFlatFileDefinition.AddmlRecordDefinitions[0].AddmlFieldDefinitions[10]; addmlFieldDefinition.Name.Should().Be("avgift"); addmlFieldDefinition.Type.Should().Be(new BooleanDataType("J/N")); }
private void TestFloatDataType(AddmlDefinition addmlDefinition) { AddmlFlatFileDefinition addmlFlatFileDefinition = addmlDefinition.AddmlFlatFileDefinitions[5]; addmlFlatFileDefinition.Name.Should().Be("ffd_8"); addmlFlatFileDefinition.FileName.Should().Be("betalt.dat"); AddmlFieldDefinition addmlFieldDefinition = addmlFlatFileDefinition.AddmlRecordDefinitions[0].AddmlFieldDefinitions[8]; addmlFieldDefinition.Name.Should().Be("beløp"); addmlFieldDefinition.Type.Should().Be(new FloatDataType()); }
private void TestDateDataType(AddmlDefinition addmlDefinition) { AddmlFlatFileDefinition addmlFlatFileDefinition = addmlDefinition.AddmlFlatFileDefinitions[2]; addmlFlatFileDefinition.Name.Should().Be("ffd_5"); addmlFlatFileDefinition.FileName.Should().Be("ikkejeg.dat"); AddmlFieldDefinition addmlFieldDefinition = addmlFlatFileDefinition.AddmlRecordDefinitions[0].AddmlFieldDefinitions[35]; addmlFieldDefinition.Name.Should().Be("fradato"); addmlFieldDefinition.Type.Should().Be(new DateDataType("ddmmyyyy")); }
public AddmlRecordDefinition Build() { if (_addmlFlatFileDefinition == null) { _addmlFlatFileDefinition = new AddmlFlatFileDefinitionBuilder().Build(); } var addmlRecordDefinition = new AddmlRecordDefinition(_addmlFlatFileDefinition, _name, _recordLength, _recordDefinitionFieldValue, _foreignKeys, _processes); _addmlFlatFileDefinition.AddmlRecordDefinitions.Add(addmlRecordDefinition); return(addmlRecordDefinition); }
public FixedFileFormatReader(FlatFile file, Stream stream) { _addmlRecordDefinitions = new Dictionary <string, AddmlRecordDefinition>(); AddmlFlatFileDefinition flatFileDefinition = file.Definition; List <AddmlRecordDefinition> addmlRecordDefinitions = flatFileDefinition.AddmlRecordDefinitions; int?recordLength = null; foreach (AddmlRecordDefinition addmlRecordDefinition in addmlRecordDefinitions) { if (!recordLength.HasValue) { recordLength = addmlRecordDefinition.RecordLength; } if (recordLength != addmlRecordDefinition.RecordLength) { throw new ArkadeException("Different record lengths in same file is not supported"); } string recordDefinitionFieldValue = addmlRecordDefinition.RecordDefinitionFieldValue; if (addmlRecordDefinitions.Count == 1 && recordDefinitionFieldValue == null) { recordDefinitionFieldValue = ""; } _addmlRecordDefinitions.Add(recordDefinitionFieldValue, addmlRecordDefinition); } if (!recordLength.HasValue) { throw new ArkadeException("FlatFileReader requires recordLength"); } Encoding encoding = file.Definition.Encoding; StreamReader streamReader = new StreamReader(stream, encoding); var fixedFormatDefinition = new FixedFormatReader.FixedFormatConfig(); Tuple <int?, int?> identifierStartPositionAndLength = GetIdentifierStartPositionAndLength(flatFileDefinition); fixedFormatDefinition.IdentifierStartPosition = identifierStartPositionAndLength.Item1; fixedFormatDefinition.IdentifierLength = identifierStartPositionAndLength.Item2; fixedFormatDefinition.RecordLength = recordLength.Value; fixedFormatDefinition.RecordSparator = flatFileDefinition.RecordSeparator; fixedFormatDefinition.RecordDefinitions = GetRecordFefinitions(flatFileDefinition); _fixedFormatReader = new FixedFormatReader(streamReader, fixedFormatDefinition); }
public AddmlRecordDefinitionBuilder WithAddmlFlatFileDefinition(AddmlFlatFileDefinition addmlFlatFileDefinition) { _addmlFlatFileDefinition = addmlFlatFileDefinition; return(this); }
public FlatFile(AddmlFlatFileDefinition definition) { Definition = definition; }
private List <FixedFormatReader.FixedFormatRecordConfig> GetRecordFefinitions(AddmlFlatFileDefinition flatFileDefinition) { List <FixedFormatReader.FixedFormatRecordConfig> recordDefinitions = new List <FixedFormatReader.FixedFormatRecordConfig>(); foreach (AddmlRecordDefinition addmlRecordDefinition in flatFileDefinition.AddmlRecordDefinitions) { FixedFormatReader.FixedFormatRecordConfig rd = new FixedFormatReader.FixedFormatRecordConfig(); rd.RecordIdentifier = addmlRecordDefinition.RecordDefinitionFieldValue; rd.FieldLengths = GetFieldLengths(addmlRecordDefinition); rd.RecordIndex = addmlRecordDefinition.GetIndex(); recordDefinitions.Add(rd); } return(recordDefinitions); }