Ejemplo n.º 1
0
        /// <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());
        }
Ejemplo n.º 2
0
        /// <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);
                    }
                }
            }
        }
Ejemplo n.º 3
0
        /// <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();
        }
Ejemplo n.º 4
0
        /// <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);
                    }
                }
            }
        }