示例#1
0
        /// <inheritdoc />
        protected override void ParseLine(PafRepository repository, LineIterator iterator)
        {
            var record = new SubBuildingNameRecord();

            record.Key  = GetInt32(iterator, KeyStart, KeyLength);
            record.Name = GetString(iterator, NameStart, NameLength);
            repository.AddSubBuildingName(record);
        }
        /// <inheritdoc />
        protected override void ParseLine(PafRepository repository, LineIterator iterator)
        {
            var record = new ThoroughfareDescriptorRecord();

            record.Key        = GetInt32(iterator, KeyStart, KeyLength);
            record.Descriptor = GetString(iterator, DescriptorStart, DescriptorLength);
            repository.AddThoroughfareDescriptor(record);
        }
        /// <inheritdoc />
        protected override void ParseLine(PafRepository repository, LineIterator iterator)
        {
            var record = new OrganisationRecord();

            record.Key          = GetInt32(iterator, KeyStart, KeyLength);
            record.PostcodeType = ParsePostcodeType(iterator.Buffer[iterator.Offset + PostcodeTypeIndex]);
            record.Name         = GetString(iterator, NameStart, NameLength);
            record.Department   = GetString(iterator, DepartmentStart, DepartmentLength);
            repository.AddOrganisation(record);
        }
示例#4
0
        public string SaveToShouldSaveTheSpecifiedType(string content, MainfileType type)
        {
            PafRepository repository = Substitute.For <PafRepository>();

            this.mainfileBuilder.AddFile(type.ToString(), content);
            Mainfile mainfile = this.mainfileBuilder.Create();

            mainfile.SaveTo(repository, type);

            return(repository.ReceivedCalls().Single().GetMethodInfo().Name);
        }
示例#5
0
        /// <summary>
        /// Parses the specified file, adding parsed records to the specified
        /// repository.
        /// </summary>
        /// <param name="info">Contains the information about the file.</param>
        /// <param name="repository">The repository to add records to.</param>
        public void Parse(MainfileInfo info, PafRepository repository)
        {
            Check.IsNotNull(info, "info");
            Check.IsNotNull(repository, "repository");

            using (Stream stream = FileSystem.Instance.OpenRead(info.Path))
            {
                var iterator = new LineIterator(stream, info.RecordLength, info.RecordCount);
                while (iterator.MoveNext())
                {
                    this.ParseLine(repository, iterator);
                }
            }
        }
示例#6
0
        public void SaveToShouldReadFromMultipleFilesOfTheSameType()
        {
            this.mainfileBuilder.AddFile("Locality1", ExamplePafFileData.Localities);
            this.mainfileBuilder.AddFile("Locality2", ExamplePafFileData.Localities);
            this.mainfileBuilder.AddFile("MainAddress1", ExamplePafFileData.MainAddress);

            Mainfile mainfile = this.mainfileBuilder.Create();

            PafRepository repository = Substitute.For <PafRepository>();

            mainfile.SaveTo(repository, MainfileType.Localities);

            repository.ReceivedWithAnyArgs(2).AddLocality(null);
        }
示例#7
0
 /// <summary>
 /// Parses a record from the specified line.
 /// </summary>
 /// <param name="repository">The repository to add the record to.</param>
 /// <param name="iterator">Contains the current line information.</param>
 protected abstract void ParseLine(PafRepository repository, LineIterator iterator);
示例#8
0
 /// <inheritdoc />
 protected override void ParseLine(PafRepository repository, LineIterator iterator)
 {
     repository.AddAddress(this.ParseRecord(iterator));
 }