示例#1
0
        public void Start()
        {
            try
            {
                XmlConfigurator.Configure();
                Log.Info("Program started");

                Thread.Sleep(1000);

                var data = new GtfsData(Log);
                data.NewFeedMessage += Data_NewFeedMessage;

                var feedMessageThread = new Thread(data.GetData);
                feedMessageThread.Start();
            }
            catch (Exception e)
            {
                Log.Error(e.Message);
                Log.Error(e.InnerException);
                Log.Error(e.StackTrace);

                Thread.Sleep(1000);
                Environment.Exit(1);
            }
        }
示例#2
0
        public void Start()
        {
            try
            {
                XmlConfigurator.Configure();
                Log.Info("Program started");

                ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
                Log.Info($"Enabled Protocols: {ServicePointManager.SecurityProtocol}");

                Thread.Sleep(1000);

                var data = new GtfsData(Log);
                data.NewFeedMessage += Data_NewFeedMessage;

                var feedMessageThread = new Thread(data.GetData);
                feedMessageThread.Start();
            }
            catch (Exception e)
            {
                Log.Error(e.Message);
                Log.Error(e.InnerException);
                Log.Error(e.StackTrace);

                Thread.Sleep(1000);
                Environment.Exit(1);
            }
        }
        internal void SaveAlerts(List <AlertData> alerts, List <AlertActivePeriodData> activePeriods, List <AlertInformedEntityData> informedEntities)
        {
            var activePeriodsDataTable = new gtfsrt_alert_active_period_denormalizedDataTable {
                TableName = "dbo.gtfsrt_alert_active_period_denormalized"
            };
            var alertsDataTable = new gtfsrt_alert_denormalizedDataTable {
                TableName = "dbo.gtfsrt_alert_denormalized"
            };
            var informedEntitiesDataTable = new gtfsrt_alert_informed_entity_denormalizedDataTable {
                TableName = "dbo.gtfsrt_alert_informed_entity_denormalized"
            };

            foreach (var alert in alerts)
            {
                var newRow = alertsDataTable.Newgtfsrt_alert_denormalizedRow();

                newRow.gtfs_realtime_version = alert.GtfsRealtimeVersion;
                newRow.incrementality        = alert.Incrementality;
                newRow.header_timestamp      = (int)alert.HeaderTimestamp;
                newRow.alert_id             = alert.AlertId;
                newRow.cause                = alert.Cause;
                newRow.effect               = alert.Effect;
                newRow.header_text          = alert.HeaderText;
                newRow.header_language      = alert.HeaderLanguage;
                newRow.description_text     = alert.DescriptionText;
                newRow.description_language = alert.DescriptionLanguage;
                newRow.url = alert.Url;

                alertsDataTable.Rows.Add(newRow);
            }

            foreach (var activePeriod in activePeriods)
            {
                var newRow = activePeriodsDataTable.Newgtfsrt_alert_active_period_denormalizedRow();

                newRow.header_timestamp    = (int)activePeriod.HeaderTimestamp;
                newRow.active_period_end   = (int)activePeriod.ActivePeriodEnd;
                newRow.active_period_start = (int)activePeriod.ActivePeriodStart;
                newRow.alert_id            = activePeriod.AlertId;

                activePeriodsDataTable.Rows.Add(newRow);
            }

            foreach (var informedEntity in informedEntities)
            {
                var newRow = informedEntitiesDataTable.Newgtfsrt_alert_informed_entity_denormalizedRow();

                newRow.header_timestamp = (int)informedEntity.HeaderTimestamp;
                newRow.alert_id         = informedEntity.AlertId;
                newRow.agency_id        = informedEntity.AgencyId;
                if (!string.IsNullOrEmpty(informedEntity.RouteId))
                {
                    newRow.route_id   = informedEntity.RouteId;
                    newRow.route_type = informedEntity.RouteType;
                }
                if (!string.IsNullOrEmpty(informedEntity.TripId))
                {
                    newRow.trip_id = informedEntity.TripId;
                }
                if (!string.IsNullOrEmpty(informedEntity.StopId))
                {
                    newRow.stop_id = informedEntity.StopId;
                }

                informedEntitiesDataTable.Rows.Add(newRow);
            }

            using (var connection = new SqlConnection(SqlConnectionString))
            {
                connection.Open();

                using (var transaction = connection.BeginTransaction())
                {
                    using (var sqlBulkCopy = new SqlBulkCopy(connection, SqlBulkCopyOptions.KeepIdentity, transaction))
                    {
                        GtfsData.BulkInsert(alertsDataTable, sqlBulkCopy);
                        GtfsData.BulkInsert(informedEntitiesDataTable, sqlBulkCopy);
                        GtfsData.BulkInsert(activePeriodsDataTable, sqlBulkCopy);

                        transaction.Commit();
                    }
                }
            }
        }