/// <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); }
/// <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); }