예제 #1
0
        private List <UserTagReport> ReadTotalReportedUserTagsFromDatabase()
        {
            var ruts = new List <UserTagReport>();

            query    = "SELECT [usergroup] ,[uid] ,[user_section] ,[real_section] ,[user_tag] ,[real_tag] ,[user_trust] ,[day] ,[weekday] ,[hour] ,[randcol] ,[randusercol]  FROM [DissertationSimDB].[dbo].[" + Constants.UserUpdatesTable + "] where usergroup = " + experimentGroup + " order by usergroup,day,hour,user_section";
            dbResult = db.ExecuteQuery(query);
            for (int i = 0; i < dbResult["usergroup"].Count; i++)
            {
                var rut = new UserTagReport();
                rut.UserGroup         = experimentGroup;
                rut.Day               = int.Parse(dbResult["day"][i]);
                rut.Weekday           = int.Parse(dbResult["weekday"][i]);
                rut.Hour              = int.Parse(dbResult["hour"][i]);
                rut.Section           = int.Parse(dbResult["user_section"][i]);
                rut.RealSection       = int.Parse(dbResult["real_section"][i]);
                rut.Tag               = int.Parse(dbResult["user_tag"][i]);
                rut.RealTag           = int.Parse(dbResult["real_tag"][i]);
                rut.UserID            = int.Parse(dbResult["uid"][i]);
                rut.UserTrust         = int.Parse(dbResult["user_trust"][i]);
                rut.RandomColumnValue = double.Parse(dbResult["randcol"][i]);
                rut.RandomUserValue   = double.Parse(dbResult["randusercol"][i]);
                ruts.Add(rut);
            }
            return(ruts);
        }
예제 #2
0
        private void init()
        {
            // you must first configure SQL Server, create a database called 'DissertationSimDB' and run the DissertationSimDB.sql
            // on it to make the tables and insert all the data

            int[] experimentIDsBase = new int[] { 10, 11, 20, 21, 23, 31, 32 };
            int   n = experimentIDsBase.Length;

            SqlServerConnector db = new SqlServerConnector();
            string             query;

            query = "select count(distinct usergroup) as NumberOfGroups from " + Constants.UserUpdatesTable;

            var result  = db.ExecuteQuery(query);
            int nGroups = int.Parse(result["NumberOfGroups"][0]);

            //nGroups = 1;
            int[] experimentIDs = new int[nGroups * n];
            for (int i = 0; i < n; i++)
            {
                for (int g = 0; g < nGroups; g++)
                {
                    experimentIDs[i + n * g] = 100 * g + experimentIDsBase[i];
                }
            }

            //experimentIDs = new int[] { 10, 11, 20, 21, 23, 31, 32 };

            _experimentExecutor = new ExperimentExecutor(experimentIDs);
        }
예제 #3
0
        public void TransferDataFromKparkServerToLocalMsSql()
        {
            var    serverDb = new MySqlConnector();
            var    localDb  = new Dissertation.SqlServerConnector();
            string query;

            localDb.ExecuteNonQuery("truncate table realUserUpdates");

            //query = "SELECT * FROM entries WHERE uid not in (1,44)";
            query = "SELECT entries.uid,entries.sid,entries.datetime,sectionnumber,occupancy FROM entries JOIN sections2 on entries.sid=sections2.sid JOIN parkings on parkings.pid=sections2.pid WHERE uid not in (1,44) and datetime>'2014-9-17'"; //  and parkings.pid = 21 and floor=1
            var RealDataEntries = serverDb.ExecuteSelect(query);

            // get section real tags
            query = "SELECT dbo.cardata.id, dbo.cardata.occupancy, dbo.cardata.day, dbo.cardata.weekday, dbo.cardata.hour, dbo.sectionProbabilities.section_id, dbo.sectionProbabilities.hour_id, dbo.sectionProbabilities.prob FROM dbo.cardata INNER JOIN dbo.sectionProbabilities ON dbo.cardata.id = dbo.sectionProbabilities.hour_id";
            var result2 = localDb.ExecuteQuery(query);

            Dictionary <string, int> HourSectionTagHash = HashHourSections(result2);

            Random   random = new Random();
            string   uid, sectionNumber, tag, day, hour, weekday, realtag;
            DateTime timeOfTag;
            TimeSpan span;

            localDb.ExecuteNonQuery("truncate table realUserUpdates");
            localDb.ExecuteNonQuery("truncate table realExperiments");
            for (int i = 0; i < RealDataEntries["uid"].Count; i++)
            {
                timeOfTag = DateTime.Parse(RealDataEntries["datetime"][i]);
                span      = timeOfTag - DateTime.Parse("9/15/2014"); // first Monday before the experiment started (day 0 is monday)
                span      = span.Add(new TimeSpan(2, 0, 0));         // colorado time difference

                day           = span.Days.ToString();
                weekday       = determinWeekDay(timeOfTag.DayOfWeek.ToString()).ToString();
                hour          = span.Hours.ToString();
                sectionNumber = RealDataEntries["sectionnumber"][i];
                realtag       = HourSectionTagHash[day + "_" + weekday + "_" + hour + "_" + sectionNumber].ToString();

                query = string.Format("INSERT INTO [dbo].[realUserUpdates] ([usergroup] ,[uid] ,[user_section] ,[real_section] ,[user_tag] ,[real_tag] ,[user_trust] ,[day] ,[weekday] ,[hour] ,[randcol] ,[randusercol], [date_received]) VALUES ({0} ,{1} ,{2} ,{3} ,{4} ,{5} ,{6} ,{7} ,{8} ,{9} ,{10} ,{11}, '{12}')",
                                      0, RealDataEntries["uid"][i], sectionNumber, RealDataEntries["sectionnumber"][i], RealDataEntries["occupancy"][i], realtag, 50, day, weekday, hour, random.NextDouble(), random.NextDouble(), RealDataEntries["datetime"][i]);
                localDb.ExecuteNonQuery(query);
            }
        }