Пример #1
0
        /// <summary>
        /// Converts network attributes to route attribute parameters.
        /// </summary>
        /// <param name="attrs">Network attributes.</param>
        /// <param name="settings">Solver settings.</param>
        /// <returns>Route attribute parameters.</returns>
        private static RouteAttrParameters _ConvertAttrParameters(
            ICollection <NetworkAttribute> attrs,
            SolverSettings settings)
        {
            Debug.Assert(attrs != null);
            Debug.Assert(settings != null);

            var list = new List <RouteAttrParameter>();

            foreach (NetworkAttribute attr in attrs)
            {
                foreach (NetworkAttributeParameter param in attr.Parameters)
                {
                    object value = null;
                    if (settings.GetNetworkAttributeParameterValue(attr.Name, param.Name, out value))
                    {
                        // skip null value overrides, let the service to use defaults
                        if (value != null)
                        {
                            var p = new RouteAttrParameter();
                            p.AttrName  = attr.Name;
                            p.ParamName = param.Name;
                            p.Value     = value;
                            list.Add(p);
                        }
                    }
                }
            }

            var res = new RouteAttrParameters();

            res.Parameters = list.ToArray();

            return(res);
        }
Пример #2
0
        /// <summary>
        /// Converts attribute parameters to text.
        /// </summary>
        /// <returns>Attribute parameters string.</returns>
        private string _FormatAttrParameters()
        {
            string result = null;

            RouteAttrParameters parameters = _ConvertAttrParameters(
                _context.NetworkDescription.NetworkAttributes,
                _context.SolverSettings);

            if (parameters.Parameters.Length > 0)
            {
                string value = JsonSerializeHelper.Serialize(parameters);

                Match match = Regex.Match(value, "\\[.+\\]");
                if (!match.Success || string.IsNullOrEmpty(match.Value))
                {
                    throw new RouteException(Properties.Messages.Error_AttrParametersFormat); // exception
                }
                result = match.Value;
            }

            return(result);
        }