/// <summary> /// Assemblyes stop's values string. /// </summary> /// <param name="fields">Exported fields.</param> /// <param name="data">Data keeper.</param> /// <param name="scheduleId">Schedule ID.</param> /// <param name="obj">Stop to exporting.</param> /// <param name="tracker">Cancel tracker (can be null).</param> /// <returns>Stop's values string.</returns> private string _AssemblyStopString(ICollection <string> fields, DataKeeper data, Guid scheduleId, DataObject obj, ICancelTracker tracker) { bool isSeparatorNeed = false; var sb = new StringBuilder(); foreach (string field in fields) { _CheckCancelState(tracker); if (isSeparatorNeed) { sb.Append(_separator); } DataWrapper value = data.GetStopFieldValue(field, scheduleId, obj); sb.Append(_FormatFieldValue(value)); isSeparatorNeed = true; } return(sb.ToString()); }
/// <summary> /// Writes stops. /// </summary> /// <param name="schedules">Schedules to export.</param> /// <param name="routes">Routes to export.</param> /// <param name="fields">Fields to export.</param> /// <param name="data">Data keeper.</param> /// <param name="imageExporter">Map image exporter.</param> /// <param name="table">Table to data writing.</param> /// <param name="tracker">Cancel tracker (can be null).</param> private void _WriteStops(ICollection<Schedule> schedules, ICollection<Route> routes, ICollection<string> fields, DataKeeper data, MapImageExporter imageExporter, DataTable table, ICancelTracker tracker) { foreach (Schedule schedule in schedules) { _CheckCancelState(tracker); // stops Guid scheduleId = schedule.Id; foreach (Route route in schedule.Routes) { _CheckCancelState(tracker); if ((null != routes) && !routes.Contains(route)) continue; // NOTE: skeep not selected IDataObjectCollection<Stop> stops = route.Stops; for (int index = 0; index < stops.Count; ++index) { _CheckCancelState(tracker); // write stop Stop stop = stops[index]; DataRow dr = table.NewRow(); foreach (string field in fields) { if (field == "StopVicinityMap") { // NOTE: special routine Debug.Assert(null != imageExporter); _CheckCancelState(tracker); Image image = imageExporter.GetStopImage(route, stop, STOP_MAP_RADIUS, STOP_MAP_IMAGE_SIZE_X, STOP_MAP_IMAGE_SIZE_Y, IMAGE_DPI); dr[field] = _ConvertImageToBlob(image); if (null != image) { image.Dispose(); image = null; } } else if (field == "Directions") { // NOTE: special routine System.Text.UnicodeEncoding encoding = new System.Text.UnicodeEncoding(); dr[field] = encoding.GetBytes(_GetDirectionsText(stop.Directions)); } else { dr[field] = _FormatFieldValue(data.GetStopFieldValue(field, scheduleId, stop)); } } table.Rows.Add(dr); } } _CheckCancelState(tracker); // unassigned orders IDataObjectCollection<Order> orders = schedule.UnassignedOrders; if (null != orders) { foreach (Order order in orders) { _CheckCancelState(tracker); DataRow dr = table.NewRow(); foreach (string field in fields) { DataWrapper wrapper = data.GetStopFieldValue(field, scheduleId, order); dr[field] = _FormatFieldValue(wrapper); } table.Rows.Add(dr); } } } }
/// <summary> /// Assemblyes stop's values string. /// </summary> /// <param name="fields">Exported fields.</param> /// <param name="data">Data keeper.</param> /// <param name="scheduleId">Schedule ID.</param> /// <param name="obj">Stop to exporting.</param> /// <param name="tracker">Cancel tracker (can be null).</param> /// <returns>Stop's values string.</returns> private string _AssemblyStopString(ICollection<string> fields, DataKeeper data, Guid scheduleId, DataObject obj, ICancelTracker tracker) { bool isSeparatorNeed = false; var sb = new StringBuilder(); foreach (string field in fields) { _CheckCancelState(tracker); if (isSeparatorNeed) sb.Append(_separator); DataWrapper value = data.GetStopFieldValue(field, scheduleId, obj); sb.Append(_FormatFieldValue(value)); isSeparatorNeed = true; } return sb.ToString(); }
/// <summary> /// Writes stops. /// </summary> /// <param name="schedules">Schedules to export.</param> /// <param name="routes">Routes to export.</param> /// <param name="fields">Fields to export.</param> /// <param name="data">Data keeper.</param> /// <param name="imageExporter">Map image exporter.</param> /// <param name="table">Table to data writing.</param> /// <param name="tracker">Cancel tracker (can be null).</param> private void _WriteStops(ICollection <Schedule> schedules, ICollection <Route> routes, ICollection <string> fields, DataKeeper data, MapImageExporter imageExporter, DataTable table, ICancelTracker tracker) { foreach (Schedule schedule in schedules) { _CheckCancelState(tracker); // stops Guid scheduleId = schedule.Id; foreach (Route route in schedule.Routes) { _CheckCancelState(tracker); if ((null != routes) && !routes.Contains(route)) { continue; // NOTE: skeep not selected } IDataObjectCollection <Stop> stops = route.Stops; for (int index = 0; index < stops.Count; ++index) { _CheckCancelState(tracker); // write stop Stop stop = stops[index]; DataRow dr = table.NewRow(); foreach (string field in fields) { if (field == "StopVicinityMap") { // NOTE: special routine Debug.Assert(null != imageExporter); _CheckCancelState(tracker); Image image = imageExporter.GetStopImage(route, stop, STOP_MAP_RADIUS, STOP_MAP_IMAGE_SIZE_X, STOP_MAP_IMAGE_SIZE_Y, IMAGE_DPI); dr[field] = _ConvertImageToBlob(image); if (null != image) { image.Dispose(); image = null; } } else if (field == "Directions") { // NOTE: special routine System.Text.UnicodeEncoding encoding = new System.Text.UnicodeEncoding(); dr[field] = encoding.GetBytes(_GetDirectionsText(stop.Directions)); } else { dr[field] = _FormatFieldValue(data.GetStopFieldValue(field, scheduleId, stop)); } } table.Rows.Add(dr); } } _CheckCancelState(tracker); // unassigned orders IDataObjectCollection <Order> orders = schedule.UnassignedOrders; if (null != orders) { foreach (Order order in orders) { _CheckCancelState(tracker); DataRow dr = table.NewRow(); foreach (string field in fields) { DataWrapper wrapper = data.GetStopFieldValue(field, scheduleId, order); dr[field] = _FormatFieldValue(wrapper); } table.Rows.Add(dr); } } } }