Exemplo n.º 1
0
        /// <summary>
        /// Formats the specified data into printable lines.
        /// </summary>
        /// <param name="data">The raw PAF data.</param>
        /// <returns>
        /// An array of lines representing the specified data.
        /// </returns>
        /// <exception cref="ArgumentNullException">data is null.</exception>
        public string[] Format(IPafData data)
        {
            Check.IsNotNull(data, "data");

            var lines = new List <string>(9);

            AddIfNotEmpty(lines, data.Postcode);
            AddIfNotEmpty(lines, data.PostTown);
            AddIfNotEmpty(lines, data.DependentLocality);
            AddIfNotEmpty(lines, data.DoubleDependentLocality);
            AddIfNotEmpty(lines, FormatThoroughfare(data.ThoroughfareName, data.ThoroughfareDescriptor));
            AddIfNotEmpty(lines, FormatThoroughfare(data.DependentThoroughfareName, data.DependentThoroughfareDescriptor));

            if (!string.IsNullOrWhiteSpace(data.POBoxNumber))
            {
                AddPOBox(lines, data.POBoxNumber);
            }
            else
            {
                AddPremisesElements(lines, data);
            }

            AddIfNotEmpty(lines, data.DepartmentName);
            AddIfNotEmpty(lines, data.OrganisationName);

            return(CopyToReversedArray(lines));
        }
Exemplo n.º 2
0
        private static void AddPremisesElements(List <string> lines, IPafData data)
        {
            BuildingInfo info = ProcessExceptionRules(data);

            PrependIfSpecified(lines, info.BuildingNumber);
            AddIfNotEmpty(lines, info.BuildingName);
            PrependIfSpecified(lines, info.SubBuildingNumber);
            AddIfNotEmpty(lines, info.SubBuildingName);
        }
Exemplo n.º 3
0
 private static void ProcessBuildingNumberAndSubBuildingName(IPafData data, BuildingInfo info)
 {
     if (data.ConcatenateBuildingNumber)
     {
         info.BuildingNumber   += data.SubBuildingName;
         info.SubBuildingName   = null;
         info.SubBuildingNumber = null;
     }
 }
Exemplo n.º 4
0
        private static BuildingInfo ProcessExceptionRules(IPafData data)
        {
            var info = new BuildingInfo();

            info.BuildingNumber = data.BuildingNumber;
            ProcessExceptions(data.BuildingName, ref info.BuildingName, ref info.BuildingNumber);
            ProcessExceptions(data.SubBuildingName, ref info.SubBuildingName, ref info.SubBuildingNumber);
            ProcessBuildingNumberAndSubBuildingName(data, info);

            if (info.BuildingName != null)
            {
                SplitBuildingNumberFromBuildingName(info);
            }

            return(info);
        }