Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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"));
        }
Exemplo n.º 4
0
        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());
        }
Exemplo n.º 5
0
        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"));
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
 public AddmlRecordDefinitionBuilder WithAddmlFlatFileDefinition(AddmlFlatFileDefinition addmlFlatFileDefinition)
 {
     _addmlFlatFileDefinition = addmlFlatFileDefinition;
     return(this);
 }
Exemplo n.º 9
0
 public FlatFile(AddmlFlatFileDefinition definition)
 {
     Definition = definition;
 }
Exemplo n.º 10
0
        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);
        }