Example #1
0
        static bool GetAndPostAdherence(AdherenceType type)
        {
            bool   needsStaticData          = false;
            string realtimeConnectionString = "Data Source=10.63.3.6;Initial Catalog=TMDailyLog;Connection Timeout=15;Integrated Security=false;User ID=CfA;Password=CfA2012";

            using (SqlConnection connection = new SqlConnection(realtimeConnectionString))
            {
                try
                {
                    connection.Open();
                    String adherenceData = GetAdherenceData(connection, type);
                    needsStaticData = PostAdherenceData(adherenceData);
                }
                catch (SqlException e)
                {
                    Console.WriteLine(e.Message);
                }
            }

            return(needsStaticData);
        }
Example #2
0
        static string GetAdherenceData(SqlConnection connection, AdherenceType type)
        {
            //string queryString = "SELECT TOP 10 *  FROM dbo.TIME_POINT_CROSSING;";
            //string queryString = "SELECT T.ROUTE_ID, T.TRIP_ID, (T.ACT_ARRIVAL_TIME - T.SCHEDULED_TIME) AS Adherence, " +
            //string queryString = "SELECT T.ROUTE_ID, T.TRIP_ID, (T.ACT_DEPARTURE_TIME - T.SCHEDULED_TIME) AS Adherence, " +
            //"T.GEO_NODE_ID, T.TIME_POINT_ID FROM dbo.TIME_POINT_CROSSING AS T " +
            //    "JOIN (SELECT TREF.TRIP_ID, MAX(TREF.ACT_ARRIVAL_TIME) AS MAX_ACT_ARRIVAL_TIME FROM dbo.TIME_POINT_CROSSING AS TREF " +
            //    "WHERE TREF.CALENDAR_ID=@today GROUP BY TREF.TRIP_ID) AS AT " +
            //    "ON (T.TRIP_ID = AT.TRIP_ID AND T.ACT_ARRIVAL_TIME = AT.MAX_ACT_ARRIVAL_TIME) " +
            //    "WHERE T.CALENDAR_ID=@today AND T.TRIP_ID IS NOT NULL;";

            string queryString;

            if (type == AdherenceType.Short)
            {
                queryString = "SELECT TOP 200 L.LOGGED_MESSAGE_SHORT_ID, L.ADHERENCE, W.WORK_PIECE_ID, L.MESSAGE_TIMESTAMP " +
                "FROM TMDailyLog.dbo.LOGGED_MESSAGE_SHORT AS L " +
                "JOIN TMMain.dbo.VEHICLE AS V " +
                "ON L.SOURCE_HOST=V.RNET_ADDRESS " +
                "JOIN (SELECT * FROM TMDailyLog.dbo.DAILY_WORK_PIECE AS DWP " +
                "WHERE DWP.CALENDAR_ID=@today " +
                "AND DWP.SCHEDULED_LOGON_TIME < @seconds " +
                "AND DWP.SCHEDULED_LOGOFF_TIME > @seconds) AS W " +
                "ON W.CURRENT_VEHICLE_ID=V.VEHICLE_ID " +
                "WHERE L.LOGGED_MESSAGE_SHORT_ID>@lastId " +
                "AND L.CALENDAR_ID=@today " +
                "ORDER BY L.LOGGED_MESSAGE_SHORT_ID DESC;";
            }
            else
            {
                queryString = "SELECT TOP 200 L.TRANSMITTED_MESSAGE_ID, L.ADHERENCE, W.WORK_PIECE_ID, L.MESSAGE_TIMESTAMP " +
                "FROM TMDailyLog.dbo.LOGGED_MESSAGE AS L " +
                "JOIN TMMain.dbo.VEHICLE AS V " +
                "ON L.SOURCE_HOST=V.RNET_ADDRESS " +
                "JOIN (SELECT * FROM TMDailyLog.dbo.DAILY_WORK_PIECE AS DWP " +
                "WHERE DWP.CALENDAR_ID=@today " +
                "AND DWP.SCHEDULED_LOGON_TIME < @seconds " +
                "AND DWP.SCHEDULED_LOGOFF_TIME > @seconds) AS W " +
                "ON W.CURRENT_VEHICLE_ID=V.VEHICLE_ID " +
                "WHERE L.TRANSMITTED_MESSAGE_ID>@lastId " +
                "AND L.CALENDAR_ID=@today " +
                "AND L.ADHERENCE IS NOT NULL " +
                "ORDER BY L.TRANSMITTED_MESSAGE_ID DESC;";
            }

            SqlCommand command = new SqlCommand(queryString, connection);

            // TODO: make sure we operate properly in Detroit time, considering
            // daylight savings.
            DateTime today = DateTime.Today;
            // The calendar ID should have the form 120120612
            int todayNum = 100000000 + (today.Year * 10000) + (today.Month * 100) + today.Day;
            command.Parameters.Add(new SqlParameter("@today", todayNum));

            // TODO: make sure we operate properly in Detroit time, considering
            // daylight savings and "transit time", which would count 1am as
            // part of the previous day.
            var now = DateTime.UtcNow.AddHours(-4);
            var seconds = (now.Hour * 3600) + (now.Minute * 60) + now.Second;
            command.Parameters.Add(new SqlParameter("@seconds", seconds));

            if (type == AdherenceType.Short)
            {
                command.Parameters.Add(new SqlParameter("@lastId", lastShortId));
            }
            else
            {
                command.Parameters.Add(new SqlParameter("@lastId", lastRegularId));
            }

            SqlDataReader reader = command.ExecuteReader();

            string data = String.Empty;

            var readId = false;
            try
            {
                StringBuilder sb = new StringBuilder();
                while (reader.Read())
                {
                    if (!readId)
                    {
                        int? id = reader[0] as int?;
                        if (id.HasValue)
                        {
                            if (type == AdherenceType.Short)
                            {
                                lastShortId = id.Value;
                            }
                            else
                            {
                                lastRegularId = id.Value;
                            }
                        }
                        readId = true;
                    }
                    sb.Append(String.Format("{0},{1},{2},{3}\n", reader[0], reader[1], reader[2], reader[3]));
                    Console.WriteLine(String.Format("{0}, {1}, {2}, {3}", reader[0], reader[1], reader[2], reader[3]));
                }
                data = sb.ToString();
            }
            finally
            {
                reader.Close();
            }

            return data;
        }
Example #3
0
        static string GetAdherenceData(SqlConnection connection, AdherenceType type)
        {
            //string queryString = "SELECT TOP 10 *  FROM dbo.TIME_POINT_CROSSING;";
            //string queryString = "SELECT T.ROUTE_ID, T.TRIP_ID, (T.ACT_ARRIVAL_TIME - T.SCHEDULED_TIME) AS Adherence, " +
            //string queryString = "SELECT T.ROUTE_ID, T.TRIP_ID, (T.ACT_DEPARTURE_TIME - T.SCHEDULED_TIME) AS Adherence, " +
            //"T.GEO_NODE_ID, T.TIME_POINT_ID FROM dbo.TIME_POINT_CROSSING AS T " +
            //    "JOIN (SELECT TREF.TRIP_ID, MAX(TREF.ACT_ARRIVAL_TIME) AS MAX_ACT_ARRIVAL_TIME FROM dbo.TIME_POINT_CROSSING AS TREF " +
            //    "WHERE TREF.CALENDAR_ID=@today GROUP BY TREF.TRIP_ID) AS AT " +
            //    "ON (T.TRIP_ID = AT.TRIP_ID AND T.ACT_ARRIVAL_TIME = AT.MAX_ACT_ARRIVAL_TIME) " +
            //    "WHERE T.CALENDAR_ID=@today AND T.TRIP_ID IS NOT NULL;";

            string queryString;

            if (type == AdherenceType.Short)
            {
                queryString = "SELECT TOP 200 L.LOGGED_MESSAGE_SHORT_ID, L.ADHERENCE, W.WORK_PIECE_ID, L.MESSAGE_TIMESTAMP " +
                              "FROM TMDailyLog.dbo.LOGGED_MESSAGE_SHORT AS L " +
                              "JOIN TMMain.dbo.VEHICLE AS V " +
                              "ON L.SOURCE_HOST=V.RNET_ADDRESS " +
                              "JOIN (SELECT * FROM TMDailyLog.dbo.DAILY_WORK_PIECE AS DWP " +
                              "WHERE DWP.CALENDAR_ID=@today " +
                              "AND DWP.SCHEDULED_LOGON_TIME < @seconds " +
                              "AND DWP.SCHEDULED_LOGOFF_TIME > @seconds) AS W " +
                              "ON W.CURRENT_VEHICLE_ID=V.VEHICLE_ID " +
                              "WHERE L.LOGGED_MESSAGE_SHORT_ID>@lastId " +
                              "AND L.CALENDAR_ID=@today " +
                              "ORDER BY L.LOGGED_MESSAGE_SHORT_ID DESC;";
            }
            else
            {
                queryString = "SELECT TOP 200 L.TRANSMITTED_MESSAGE_ID, L.ADHERENCE, W.WORK_PIECE_ID, L.MESSAGE_TIMESTAMP " +
                              "FROM TMDailyLog.dbo.LOGGED_MESSAGE AS L " +
                              "JOIN TMMain.dbo.VEHICLE AS V " +
                              "ON L.SOURCE_HOST=V.RNET_ADDRESS " +
                              "JOIN (SELECT * FROM TMDailyLog.dbo.DAILY_WORK_PIECE AS DWP " +
                              "WHERE DWP.CALENDAR_ID=@today " +
                              "AND DWP.SCHEDULED_LOGON_TIME < @seconds " +
                              "AND DWP.SCHEDULED_LOGOFF_TIME > @seconds) AS W " +
                              "ON W.CURRENT_VEHICLE_ID=V.VEHICLE_ID " +
                              "WHERE L.TRANSMITTED_MESSAGE_ID>@lastId " +
                              "AND L.CALENDAR_ID=@today " +
                              "AND L.ADHERENCE IS NOT NULL " +
                              "ORDER BY L.TRANSMITTED_MESSAGE_ID DESC;";
            }

            SqlCommand command = new SqlCommand(queryString, connection);

            // TODO: make sure we operate properly in Detroit time, considering
            // daylight savings.
            DateTime today = DateTime.Today;
            // The calendar ID should have the form 120120612
            int todayNum = 100000000 + (today.Year * 10000) + (today.Month * 100) + today.Day;

            command.Parameters.Add(new SqlParameter("@today", todayNum));

            // TODO: make sure we operate properly in Detroit time, considering
            // daylight savings and "transit time", which would count 1am as
            // part of the previous day.
            var now     = DateTime.UtcNow.AddHours(-4);
            var seconds = (now.Hour * 3600) + (now.Minute * 60) + now.Second;

            command.Parameters.Add(new SqlParameter("@seconds", seconds));

            if (type == AdherenceType.Short)
            {
                command.Parameters.Add(new SqlParameter("@lastId", lastShortId));
            }
            else
            {
                command.Parameters.Add(new SqlParameter("@lastId", lastRegularId));
            }

            SqlDataReader reader = command.ExecuteReader();

            string data = String.Empty;

            var readId = false;

            try
            {
                StringBuilder sb = new StringBuilder();
                while (reader.Read())
                {
                    if (!readId)
                    {
                        int?id = reader[0] as int?;
                        if (id.HasValue)
                        {
                            if (type == AdherenceType.Short)
                            {
                                lastShortId = id.Value;
                            }
                            else
                            {
                                lastRegularId = id.Value;
                            }
                        }
                        readId = true;
                    }
                    sb.Append(String.Format("{0},{1},{2},{3}\n", reader[0], reader[1], reader[2], reader[3]));
                    Console.WriteLine(String.Format("{0}, {1}, {2}, {3}", reader[0], reader[1], reader[2], reader[3]));
                }
                data = sb.ToString();
            }
            finally
            {
                reader.Close();
            }

            return(data);
        }
Example #4
0
        static bool GetAndPostAdherence(AdherenceType type)
        {
            bool needsStaticData = false;
            string realtimeConnectionString = "Data Source=10.63.3.6;Initial Catalog=TMDailyLog;Connection Timeout=15;Integrated Security=false;User ID=CfA;Password=CfA2012";
            using (SqlConnection connection = new SqlConnection(realtimeConnectionString))
            {
                try
                {
                    connection.Open();
                    String adherenceData = GetAdherenceData(connection, type);
                    needsStaticData = PostAdherenceData(adherenceData);
                }
                catch (SqlException e)
                {
                    Console.WriteLine(e.Message);
                }
            }

            return needsStaticData;
        }