Ejemplo n.º 1
0
        public void ShouldParseAddmlWithForeignKey()
        {
            AddmlDefinition addmlDefinition = _parser.GetAddmlDefinition();
            List <AddmlFlatFileDefinition> addmlFlatFileDefinitions = addmlDefinition.AddmlFlatFileDefinitions;

            addmlFlatFileDefinitions.Count.Should().Be(3);
            addmlFlatFileDefinitions[0].Name.Should().Be("Saksregister");

            AddmlRecordDefinition addmlRecordDefinition = addmlFlatFileDefinitions[0].AddmlRecordDefinitions[0];

            addmlRecordDefinition.Name.Should().Be("Saksregisterpost");
            addmlRecordDefinition.Processes.Should().BeEmpty();

            addmlRecordDefinition.ForeignKeys.Should().NotBeNullOrEmpty();
            addmlRecordDefinition.ForeignKeys.Count.Should().Be(1);
            AddmlForeignKey foreignKey = addmlRecordDefinition.ForeignKeys[0];

            foreignKey.Name.Should().Be("FK1sak");
            foreignKey.ForeignKeys.Count.Should().Be(1);
            foreignKey.ForeignKeys[0].Name.Should().Be("Arkiv_2_delfelt");
            foreignKey.ForeignKeyReferenceIndexes[0].GetFlatFileDefinitionName().Should().Be("arkivnoekkelregister");
            foreignKey.ForeignKeyReferenceIndexes[0].GetRecordDefinitionName().Should().Be("arkivnoekkelregisterpost");
            foreignKey.ForeignKeyReferenceIndexes[0].GetFieldDefinitionName().Should().Be("arkivkode");

            List <AddmlFieldDefinition> addmlFieldDefinitions = addmlRecordDefinition.AddmlFieldDefinitions;

            addmlFieldDefinitions.Count.Should().Be(18);
            addmlFieldDefinitions[5].Name.Should().Be("Arkiv_2_delfelt");
        }
Ejemplo n.º 2
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);
            }
        }
Ejemplo n.º 3
0
        private Record GetNextRecord()
        {
            Tuple <string, List <string> > fieldIdentifierAndValues = _fixedFormatReader.GetNextValue();

            List <Field>          fields = CreateFields(fieldIdentifierAndValues);
            AddmlRecordDefinition addmlRecordDefinition = _addmlRecordDefinitions[fieldIdentifierAndValues.Item1];

            return(new Record(addmlRecordDefinition, fields));
        }
Ejemplo n.º 4
0
        public Noark4FileReader(FlatFile file)
        {
            FileStream fileStream = file.Definition.FileInfo.OpenRead();
            XmlReader  xmlReader  = XmlReaderUtil.Read(fileStream);

            // TODO: Support for multiple RecordDefinitions per file
            _addmlRecordDefinition = file.Definition.AddmlRecordDefinitions[0];
            string recordName = _addmlRecordDefinition.Name;

            _reader = new XmlFormatReader(xmlReader, recordName);
        }
Ejemplo n.º 5
0
        private List <Field> CreateFields(Tuple <string, List <string> > fieldIdentifierAndValues)
        {
            List <Field> fields = new List <Field>();

            for (int i = 0; i < fieldIdentifierAndValues.Item2.Count; i++)
            {
                List <string>         fieldValues           = fieldIdentifierAndValues.Item2;
                AddmlRecordDefinition addmlRecordDefinition = _addmlRecordDefinitions[fieldIdentifierAndValues.Item1];

                fields.Add(new Field(addmlRecordDefinition.AddmlFieldDefinitions[i], fieldValues[i]));
            }
            return(fields);
        }
Ejemplo 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);
        }
Ejemplo n.º 7
0
        private List <int> GetFieldLengths(AddmlRecordDefinition addmlRecordDefinition)
        {
            List <int> fieldLengths = new List <int>();

            foreach (AddmlFieldDefinition fd in addmlRecordDefinition.AddmlFieldDefinitions)
            {
                int?fixedLength = fd.FixedLength;
                if (!fixedLength.HasValue)
                {
                    throw new ArkadeException("FixedLength must be present in ADDML to use FlatFileReader");
                }
                fieldLengths.Add(fixedLength.Value);
            }

            return(fieldLengths);
        }
Ejemplo n.º 8
0
        public void ShouldParseAddmlWithProcesses()
        {
            AddmlDefinition addmlDefinition = _parser.GetAddmlDefinition();
            List <AddmlFlatFileDefinition> addmlFlatFileDefinitions = addmlDefinition.AddmlFlatFileDefinitions;

            addmlFlatFileDefinitions.Count.Should().Be(3);
            addmlFlatFileDefinitions[0].Name.Should().Be("Saksregister");
            addmlFlatFileDefinitions[0].FileName.Should().Be("SAK.DAT");
            addmlFlatFileDefinitions[0].Encoding.Should().Be(Encodings.ISO_8859_1);
            addmlFlatFileDefinitions[0].RecordSeparator.Should().BeNull();
            addmlFlatFileDefinitions[0].AddmlRecordDefinitions.Count.Should().Be(1);
            addmlFlatFileDefinitions[0].Processes.Should().BeEmpty();

            AddmlRecordDefinition addmlRecordDefinition = addmlFlatFileDefinitions[0].AddmlRecordDefinitions[0];

            addmlRecordDefinition.Name.Should().Be("Saksregisterpost");
            addmlRecordDefinition.Processes.Should().BeEmpty();

            List <AddmlFieldDefinition> addmlFieldDefinitions = addmlRecordDefinition.AddmlFieldDefinitions;

            addmlFieldDefinitions.Count.Should().Be(18);
            addmlFieldDefinitions[0].Name.Should().Be("Posttype");
            addmlFieldDefinitions[0].Processes.Should().Equal(
                "Analyse_FindMinMaxLengths",
                "Control_BirthNumber",
                "Control_Codes",
                "Analyse_FindMinMaxValues",
                "Analyse_FrequencyList"
                );

            addmlFieldDefinitions[1].Name.Should().Be("Grad");
            addmlFieldDefinitions[2].Name.Should().Be("Saksnr");
            addmlFieldDefinitions[3].Name.Should().Be("Dato");

            addmlRecordDefinition.PrimaryKey.Should().Equal(
                new List <AddmlFieldDefinition>()
            {
                addmlFieldDefinitions[2]
            }
                );
        }
Ejemplo n.º 9
0
        public AddmlFieldDefinition Build()
        {
            if (_addmlRecordDefinition == null)
            {
                _addmlRecordDefinition = new AddmlRecordDefinitionBuilder().Build();
            }

            var addmlFieldDefinition = _addmlRecordDefinition.AddAddmlFieldDefinition(_name,
                                                                                      _startPosition,
                                                                                      _fixedLength,
                                                                                      _dataType,
                                                                                      _isUnique,
                                                                                      _isNullable,
                                                                                      _minLength,
                                                                                      _maxLength,
                                                                                      _processes,
                                                                                      _codes,
                                                                                      _isPartOfPrimaryKey);

            return(addmlFieldDefinition);
        }
Ejemplo n.º 10
0
        public void ShouldParseAddmlWithForeignKey()
        {
            AddmlDefinition addmlDefinition = _parser.GetAddmlDefinition();
            List <AddmlFlatFileDefinition> addmlFlatFileDefinitions = addmlDefinition.AddmlFlatFileDefinitions;

            addmlFlatFileDefinitions.Count.Should().Be(3);
            addmlFlatFileDefinitions[0].Name.Should().Be("Saksregister");

            AddmlRecordDefinition addmlRecordDefinition = addmlFlatFileDefinitions[0].AddmlRecordDefinitions[0];

            addmlRecordDefinition.Name.Should().Be("Saksregisterpost");
            addmlRecordDefinition.Processes.Should().BeEmpty();

            List <AddmlFieldDefinition> addmlFieldDefinitions = addmlRecordDefinition.AddmlFieldDefinitions;

            addmlFieldDefinitions.Count.Should().Be(18);
            addmlFieldDefinitions[5].Name.Should().Be("Arkiv_2_delfelt");

            addmlFieldDefinitions[5].ForeignKey.Should().NotBeNull();
            addmlFieldDefinitions[5].ForeignKey.Name.Should().Be("Arkivkode");
            addmlFieldDefinitions[5].ForeignKey.AddmlRecordDefinition.Name.Should().Be("Arkivnoekkelregisterpost");
            addmlFieldDefinitions[5].ForeignKey.AddmlRecordDefinition.AddmlFlatFileDefinition.Name.Should().Be("Arkivnoekkelregister");
        }
Ejemplo n.º 11
0
        public void ShouldParseNoark4ConvertedArkivuttrekkXml()
        {
            // Code to convert NOARKIH.XML to addml.xml
            //string noarkihString = TestUtil.ReadFromFileInTestDataDir("noark4\\NOARKIH.XML");
            //string addmlString = NoarkihToAddmlTransformer.Transform(noarkihString);

            // File is converted from NOARKIH.XML format

            var testDataDirectory = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + "\\TestData\\noark4");
            var workingDirectory  = new WorkingDirectory(testDataDirectory, testDataDirectory);

            AddmlInfo addml = AddmlUtil.ReadFromFile(workingDirectory.Content().WithFile("addml.xml").FullName);

            AddmlDefinitionParser parser = new AddmlDefinitionParser(addml, workingDirectory, new StatusEventHandler());

            AddmlDefinition addmlDefinition = parser.GetAddmlDefinition();

            List <AddmlFlatFileDefinition> addmlFlatFileDefinitions = addmlDefinition.AddmlFlatFileDefinitions;

            addmlFlatFileDefinitions.Count.Should().Be(63);
            addmlFlatFileDefinitions[0].Name.Should().Be("ORDNPRINSTYPE");
            addmlFlatFileDefinitions[0].FileName.Should().Be("OPRITYP.XML");
            addmlFlatFileDefinitions[0].Encoding.Should().Be(Encodings.ISO_8859_1);
            addmlFlatFileDefinitions[0].RecordSeparator.Should().BeNull();
            addmlFlatFileDefinitions[0].AddmlRecordDefinitions.Count.Should().Be(1);
            AddmlRecordDefinition addmlRecordDefinition = addmlFlatFileDefinitions[0].AddmlRecordDefinitions[0];

            addmlRecordDefinition.Name.Should().Be("ORDNPRINSTYPE");
            List <AddmlFieldDefinition> addmlFieldDefinitions = addmlRecordDefinition.AddmlFieldDefinitions;

            addmlFieldDefinitions.Count.Should().Be(2);
            addmlFieldDefinitions[0].Name.Should().Be("OT.KODE");
            addmlFieldDefinitions[0].Type.Should().Be(StringDataType.Default);
            addmlFieldDefinitions[1].Name.Should().Be("OT.BETEGN");
            addmlFieldDefinitions[1].Type.Should().Be(StringDataType.Default);
            addmlRecordDefinition.PrimaryKey.Should().BeNull();
        }
Ejemplo n.º 12
0
        private Record GetCurrentRecord()
        {
            List <Field> fields = new List <Field>();

            string currentLine = _lines.Current;

            string[] strings = currentLine.Split(new[] { _fieldDelimiter }, StringSplitOptions.None);

            string recordIdentifier = null;

            if (_recordIdentifierPosition.HasValue)
            {
                recordIdentifier = strings[_recordIdentifierPosition.Value];
            }
            AddmlRecordDefinition       recordDefinition = GetAddmlRecordDefinition(recordIdentifier);
            List <AddmlFieldDefinition> fieldDefinitions = recordDefinition.AddmlFieldDefinitions;

            if (fieldDefinitions.Count != strings.Length)
            {
                int    maxFields = 40;
                string fielddata = currentLine.Length <= maxFields ? currentLine : currentLine.Substring(0, maxFields - 1);
                throw new ArkadeAddmlDelimiterException(
                          $"{Resources.AddmlMessages.UnexpectedNumberOfFields}: {strings.Length}/{fieldDefinitions.Count}",
                          recordDefinition.Name,
                          fielddata);
            }

            for (int i = 0; i < strings.Length; i++)
            {
                string s = strings[i];
                AddmlFieldDefinition fieldDefinition = fieldDefinitions[i];
                fields.Add(new Field(fieldDefinition, s));
            }

            return(new Record(recordDefinition, fields));
        }
Ejemplo n.º 13
0
 public Record(AddmlRecordDefinition definition, List <Field> fields)
 {
     Definition = definition;
     Fields     = fields;
 }
        public A_16_ControlForeignKeyCombinedKeyTest()
        {
            _attachmentRecordDef = new AddmlRecordDefinitionBuilder()
                                   .WithAddmlFlatFileDefinition(new AddmlFlatFileDefinitionBuilder().Build())
                                   .Build();

            _messageIdPrimaryKeyFieldDef = new AddmlFieldDefinitionBuilder()
                                           .WithRecordDefinition(_attachmentRecordDef)
                                           .WithName("MessageId")
                                           .IsPartOfPrimaryKey(true)
                                           .Build();
            _attachmentNumberPrimaryKeyFieldDef = new AddmlFieldDefinitionBuilder()
                                                  .WithRecordDefinition(_attachmentRecordDef)
                                                  .WithName("AttachmentNumber")
                                                  .IsPartOfPrimaryKey(true)
                                                  .Build();

            _documentRecordDef = new AddmlRecordDefinitionBuilder()
                                 .WithAddmlFlatFileDefinition(new AddmlFlatFileDefinitionBuilder().Build())
                                 .Build();
            _documentPrimaryKeyFieldDef = new AddmlFieldDefinitionBuilder()
                                          .WithRecordDefinition(_documentRecordDef)
                                          .WithName("DocumentId")
                                          .IsPartOfPrimaryKey(true)
                                          .Build();

            AddmlForeignKey addmlForeignKeyAttachment = new AddmlForeignKey("fk1-attachment");
            AddmlForeignKey addmlForeignKeyDocument   = new AddmlForeignKey("fk2-document");

            _recordWithBothCombinedAndSingleForeignKeyDef = new AddmlRecordDefinitionBuilder()
                                                            .WithAddmlFlatFileDefinition(new AddmlFlatFileDefinitionBuilder().Build())
                                                            .WithRecordProcess(A_16_ControlForeignKey.Name)
                                                            .WithForeignKey(addmlForeignKeyAttachment)
                                                            .WithForeignKey(addmlForeignKeyDocument)
                                                            .Build();
            _primaryKeyFieldDef = new AddmlFieldDefinitionBuilder()
                                  .WithRecordDefinition(_recordWithBothCombinedAndSingleForeignKeyDef)
                                  .WithName("Id")
                                  .IsPartOfPrimaryKey(true)
                                  .Build();
            _foreignKeyMessageIdFieldDef = new AddmlFieldDefinitionBuilder()
                                           .WithRecordDefinition(_recordWithBothCombinedAndSingleForeignKeyDef)
                                           .WithName("MessageId")
                                           .Build();
            _foreignKeyAttachmentNumberFieldDef = new AddmlFieldDefinitionBuilder()
                                                  .WithRecordDefinition(_recordWithBothCombinedAndSingleForeignKeyDef)
                                                  .WithName("AttachmentNumber")
                                                  .Build();

            addmlForeignKeyAttachment.ForeignKeys.Add(_foreignKeyMessageIdFieldDef);
            addmlForeignKeyAttachment.ForeignKeys.Add(_foreignKeyAttachmentNumberFieldDef);
            addmlForeignKeyAttachment.ForeignKeyReferenceIndexes.Add(_messageIdPrimaryKeyFieldDef.GetIndex());
            addmlForeignKeyAttachment.ForeignKeyReferenceIndexes.Add(_attachmentNumberPrimaryKeyFieldDef.GetIndex());
            addmlForeignKeyAttachment.ForeignKeyReferenceFields.Add(_messageIdPrimaryKeyFieldDef);
            addmlForeignKeyAttachment.ForeignKeyReferenceFields.Add(_attachmentNumberPrimaryKeyFieldDef);

            _foreignKeyDocumentIdFieldDef = new AddmlFieldDefinitionBuilder()
                                            .WithRecordDefinition(_recordWithBothCombinedAndSingleForeignKeyDef)
                                            .WithName("DocumentId")
                                            .Build();

            addmlForeignKeyDocument.ForeignKeys.Add(_foreignKeyDocumentIdFieldDef);
            addmlForeignKeyDocument.ForeignKeyReferenceIndexes.Add(_documentPrimaryKeyFieldDef.GetIndex());
            addmlForeignKeyDocument.ForeignKeyReferenceFields.Add(_documentPrimaryKeyFieldDef);
        }
Ejemplo n.º 15
0
        public void ShouldParseJegerreg98ArkivuttrekkXml()
        {
            var       externalContentDirectory = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + "\\..\\..\\TestData\\jegerreg-98-dos\\");
            var       workingDirectory         = new WorkingDirectory(ArkadeConstants.GetArkadeWorkDirectory(), externalContentDirectory);
            AddmlInfo addml = AddmlUtil.ReadFromFile(workingDirectory.Content().WithFile("arkivuttrekk.xml").FullName);

            AddmlDefinition addmlDefinition = new AddmlDefinitionParser(addml, workingDirectory).GetAddmlDefinition();

            List <AddmlFlatFileDefinition> addmlFlatFileDefinitions = addmlDefinition.AddmlFlatFileDefinitions;

            addmlFlatFileDefinitions.Count.Should().Be(10);
            {
                addmlFlatFileDefinitions[0].Name.Should().Be("ffd_3");
                addmlFlatFileDefinitions[0].FileName.Should().Be("jeger.dat");
                addmlFlatFileDefinitions[0].Encoding.Should().Be(Encodings.ISO_8859_1);
                addmlFlatFileDefinitions[0].RecordSeparator.Should().Be(Separator.CRLF);
                addmlFlatFileDefinitions[0].AddmlRecordDefinitions.Count.Should().Be(1);
                AddmlRecordDefinition       addmlRecordDefinition = addmlFlatFileDefinitions[0].AddmlRecordDefinitions[0];
                List <AddmlFieldDefinition> addmlFieldDefinitions = addmlRecordDefinition.AddmlFieldDefinitions;
                addmlFieldDefinitions.Count.Should().Be(36);
                addmlFieldDefinitions[0].Name.Should().Be("fodselsnummer");
                addmlRecordDefinition.PrimaryKey.Should()
                .Equal(new List <AddmlFieldDefinition>()
                {
                    addmlFieldDefinitions[0]
                });
            }
            {
                addmlFlatFileDefinitions[1].Name.Should().Be("ffd_4");
                addmlFlatFileDefinitions[1].FileName.Should().Be("ut_jeger.dat");
                addmlFlatFileDefinitions[1].Encoding.Should().Be(Encodings.ISO_8859_1);
                addmlFlatFileDefinitions[1].RecordSeparator.Should().Be(Separator.CRLF);
                addmlFlatFileDefinitions[1].AddmlRecordDefinitions.Count.Should().Be(1);
                AddmlRecordDefinition       addmlRecordDefinition = addmlFlatFileDefinitions[1].AddmlRecordDefinitions[0];
                List <AddmlFieldDefinition> addmlFieldDefinitions = addmlRecordDefinition.AddmlFieldDefinitions;
                addmlFieldDefinitions.Count.Should().Be(37);
                addmlFieldDefinitions[0].Name.Should().Be("plassnummer");
                addmlFieldDefinitions[0].Type.Should().Be(IntegerDataType.Default);
                addmlFieldDefinitions[1].Name.Should().Be("landkort");
                addmlFieldDefinitions[8].Name.Should().Be("personnummer");
                addmlRecordDefinition.PrimaryKey.Should()
                .Equal(new List <AddmlFieldDefinition>()
                {
                    addmlFieldDefinitions[0],
                    addmlFieldDefinitions[1],
                    addmlFieldDefinitions[8]
                });
            }
            {
                addmlFlatFileDefinitions[2].Name.Should().Be("ffd_5");
                addmlFlatFileDefinitions[2].FileName.Should().Be("ikkejeg.dat");
                addmlFlatFileDefinitions[2].Encoding.Should().Be(Encodings.ISO_8859_1);
                addmlFlatFileDefinitions[2].RecordSeparator.Should().Be(Separator.CRLF);
                addmlFlatFileDefinitions[2].AddmlRecordDefinitions.Count.Should().Be(1);
                AddmlRecordDefinition       addmlRecordDefinition = addmlFlatFileDefinitions[2].AddmlRecordDefinitions[0];
                List <AddmlFieldDefinition> addmlFieldDefinitions = addmlRecordDefinition.AddmlFieldDefinitions;
                addmlFieldDefinitions.Count.Should().Be(44);
                addmlFieldDefinitions[0].Name.Should().Be("fodselsnummer");
                addmlFieldDefinitions[0].StartPosition.Should().Be(1);
                addmlFieldDefinitions[0].FixedLength.Should().Be(11);
                addmlFieldDefinitions[0].IsUnique.Should().BeTrue();
                addmlFieldDefinitions[0].IsNullable.Should().BeFalse();
                addmlFieldDefinitions[0].MaxLength.Should().NotHaveValue();
                addmlFieldDefinitions[0].MinLength.Should().NotHaveValue();
                addmlFieldDefinitions[0].Type.Should().Be(StringDataType.Default);
                addmlFieldDefinitions[0].ForeignKey.Should().Be(
                    addmlFlatFileDefinitions[0].AddmlRecordDefinitions[0].AddmlFieldDefinitions[0]
                    );

                addmlFieldDefinitions[1].Name.Should().Be("etternavn");
                addmlFieldDefinitions[1].StartPosition.Should().Be(12);
                addmlFieldDefinitions[1].FixedLength.Should().Be(25);
                addmlFieldDefinitions[1].IsUnique.Should().BeFalse();
                addmlFieldDefinitions[1].IsNullable.Should().BeTrue();
                addmlFieldDefinitions[1].MaxLength.Should().NotHaveValue();
                addmlFieldDefinitions[1].MinLength.Should().NotHaveValue();
                addmlFieldDefinitions[1].Type.Should().Be(StringDataType.Default);
                addmlFieldDefinitions[1].ForeignKey.Should().BeNull();

                addmlRecordDefinition.PrimaryKey.Should()
                .Equal(new List <AddmlFieldDefinition>()
                {
                    addmlFieldDefinitions[0]
                });


                TestDateDataType(addmlDefinition);
                TestBooleanDataType(addmlDefinition);
                TestFloatDataType(addmlDefinition);
            }
        }
Ejemplo n.º 16
0
 public AddmlFieldDefinitionBuilder WithRecordDefinition(AddmlRecordDefinition recordDefinition)
 {
     _addmlRecordDefinition = recordDefinition;
     return(this);
 }
Ejemplo n.º 17
0
        public void ShouldParseJegerreg98ArkivuttrekkXml()
        {
            var       externalContentDirectory = new DirectoryInfo(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\TestData\\jegerreg-98-dos");
            var       workingDirectory         = new WorkingDirectory(ArkadeProcessingArea.WorkDirectory, externalContentDirectory);
            AddmlInfo addml = AddmlUtil.ReadFromFile(workingDirectory.Content().WithFile("arkivuttrekk.xml").FullName);

            AddmlDefinition addmlDefinition = new AddmlDefinitionParser(addml, workingDirectory, new StatusEventHandler()).GetAddmlDefinition();

            List <AddmlFlatFileDefinition> addmlFlatFileDefinitions = addmlDefinition.AddmlFlatFileDefinitions;

            addmlFlatFileDefinitions.Count.Should().Be(10);
            {
                addmlFlatFileDefinitions[0].Name.Should().Be("ffd_3");
                addmlFlatFileDefinitions[0].FileName.Should().Be("jeger.dat");
                addmlFlatFileDefinitions[0].Encoding.Should().Be(Encodings.ISO_8859_1);
                addmlFlatFileDefinitions[0].RecordSeparator.Should().Be(Separator.CRLF);
                addmlFlatFileDefinitions[0].AddmlRecordDefinitions.Count.Should().Be(1);
                AddmlRecordDefinition       addmlRecordDefinition = addmlFlatFileDefinitions[0].AddmlRecordDefinitions[0];
                List <AddmlFieldDefinition> addmlFieldDefinitions = addmlRecordDefinition.AddmlFieldDefinitions;
                addmlFieldDefinitions.Count.Should().Be(36);
                addmlFieldDefinitions[0].Name.Should().Be("fodselsnummer");
                addmlRecordDefinition.PrimaryKey.Should()
                .Equal(new List <AddmlFieldDefinition>()
                {
                    addmlFieldDefinitions[0]
                });
            }
            {
                addmlFlatFileDefinitions[1].Name.Should().Be("ffd_4");
                addmlFlatFileDefinitions[1].FileName.Should().Be("ut_jeger.dat");
                addmlFlatFileDefinitions[1].Encoding.Should().Be(Encodings.ISO_8859_1);
                addmlFlatFileDefinitions[1].RecordSeparator.Should().Be(Separator.CRLF);
                addmlFlatFileDefinitions[1].AddmlRecordDefinitions.Count.Should().Be(1);
                AddmlRecordDefinition       addmlRecordDefinition = addmlFlatFileDefinitions[1].AddmlRecordDefinitions[0];
                List <AddmlFieldDefinition> addmlFieldDefinitions = addmlRecordDefinition.AddmlFieldDefinitions;
                addmlFieldDefinitions.Count.Should().Be(37);
                addmlFieldDefinitions[0].Name.Should().Be("plassnummer");
                addmlFieldDefinitions[0].Type.Should().Be(IntegerDataType.Default);
                addmlFieldDefinitions[1].Name.Should().Be("landkort");
                addmlFieldDefinitions[8].Name.Should().Be("personnummer");
                addmlRecordDefinition.PrimaryKey.Should()
                .Equal(new List <AddmlFieldDefinition>()
                {
                    addmlFieldDefinitions[0],
                    addmlFieldDefinitions[1],
                    addmlFieldDefinitions[8]
                });
            }
            {
                addmlFlatFileDefinitions[2].Name.Should().Be("ffd_5");
                addmlFlatFileDefinitions[2].FileName.Should().Be("ikkejeg.dat");
                addmlFlatFileDefinitions[2].Encoding.Should().Be(Encodings.ISO_8859_1);
                addmlFlatFileDefinitions[2].RecordSeparator.Should().Be(Separator.CRLF);
                addmlFlatFileDefinitions[2].AddmlRecordDefinitions.Count.Should().Be(1);
                AddmlRecordDefinition       addmlRecordDefinition = addmlFlatFileDefinitions[2].AddmlRecordDefinitions[0];
                List <AddmlFieldDefinition> addmlFieldDefinitions = addmlRecordDefinition.AddmlFieldDefinitions;
                addmlFieldDefinitions.Count.Should().Be(44);
                addmlFieldDefinitions[0].Name.Should().Be("fodselsnummer");
                addmlFieldDefinitions[0].StartPosition.Should().Be(1);
                addmlFieldDefinitions[0].FixedLength.Should().Be(11);
                addmlFieldDefinitions[0].IsUnique.Should().BeTrue();
                addmlFieldDefinitions[0].IsNullable.Should().BeFalse();
                addmlFieldDefinitions[0].MaxLength.Should().NotHaveValue();
                addmlFieldDefinitions[0].MinLength.Should().NotHaveValue();
                addmlFieldDefinitions[0].Type.Should().Be(StringDataType.Default);

                /*              addmlFieldDefinitions[0].ForeignKeys.First().Should().Be(
                 *                addmlFlatFileDefinitions[0].AddmlRecordDefinitions[0].AddmlFieldDefinitions[0]
                 *            );*/

                addmlFieldDefinitions[1].Name.Should().Be("etternavn");
                addmlFieldDefinitions[1].StartPosition.Should().Be(12);
                addmlFieldDefinitions[1].FixedLength.Should().Be(25);
                addmlFieldDefinitions[1].IsUnique.Should().BeFalse();
                addmlFieldDefinitions[1].IsNullable.Should().BeTrue();
                addmlFieldDefinitions[1].MaxLength.Should().NotHaveValue();
                addmlFieldDefinitions[1].MinLength.Should().NotHaveValue();
                addmlFieldDefinitions[1].Type.Should().Be(StringDataType.Default);
//                addmlFieldDefinitions[1].ForeignKeys.Should().BeEmpty();

                addmlRecordDefinition.PrimaryKey.Should()
                .Equal(new List <AddmlFieldDefinition>()
                {
                    addmlFieldDefinitions[0]
                });


                TestDateDataType(addmlDefinition);
                TestBooleanDataType(addmlDefinition);
                TestFloatDataType(addmlDefinition);
            }
        }
Ejemplo n.º 18
0
 public Record(AddmlRecordDefinition definition, params Field[] fields)
 {
     Definition = definition;
     Fields     = fields.ToList();
 }