Ejemplo n.º 1
0
        public bool SaveData(UserClient client, List <KeyData.KeyEntry> data)
        {
            WordInsert        Data = new WordInsert();
            List <WordInsert> words = new List <WordInsert>();
            String            PKBT, CKBT;//Previous and current keyboard type

            PKBT = data[0].keyboardType;
            List <UserDBDataSetWorker.TimingRow> timingEntries = new List <UserDBDataSetWorker.TimingRow>();
            int Ptime = Ptime = 0, Ctime = 0;

            Data.word = "";
            foreach (KeyData.KeyEntry entry in data)//extract data from parameter data
            {
                UserDBDataSetWorker.TimingRow timingEntry = dataSet.Timing.NewTimingRow();
                Ctime = entry.time;
                timingEntry.Timing = Ctime - Ptime;
                CKBT = entry.keyboardType;
                if (entry.keyValue == ':' || entry.keyValue == ',' || entry.keyValue == ' ')
                {
                    if (Data.word != "")
                    {
                        Data.KeyboardType = keyToInt(CKBT);
                        Data.UserID       = GetUserClientID(client.GetName(), client.GetPass());
                        words.Add(Data);
                    }
                    Data      = new WordInsert();
                    Data.word = "";
                    Ctime     = 0;
                }
                else if (CKBT != PKBT)
                {
                    if (Data.word != "")
                    {
                        Data.KeyboardType = keyToInt(CKBT);
                        Data.UserID       = GetUserClientID(client.GetName(), client.GetPass());
                        words.Add(Data);
                    }
                    Data       = new WordInsert();
                    Data.word  = "";
                    Ctime      = 0;
                    Data.word += entry.keyValue.ToString();
                }
                else
                {
                    Data.word += (char)entry.keyValue;
                    if (timingEntry.Timing != Ctime)
                    {
                        timingEntries.Add(timingEntry);
                    }
                }
                Ptime = Ctime;
                PKBT  = CKBT;
            }
            //Get straggling data.
            Data.KeyboardType = keyToInt(data[data.Count - 1].keyboardType);
            Data.UserID       = GetUserClientID(client.GetName(), client.GetPass());
            words.Add(Data);

            foreach (WordInsert word in words)//enter words
            {
                UserDBDataSetWorkerTableAdapters.WordDataTableAdapter adapter = new UserDBDataSetWorkerTableAdapters.WordDataTableAdapter();
                int test1 = GetUserClientID(client.GetName(), client.GetPass());
                adapter.WordInsert(test1, word.word, word.KeyboardType);
                int test = GetLatestWordID();
                for (int i = 1; i < word.word.Length; i++)//enter timing for words
                {
                    UserDBDataSetWorkerTableAdapters.TimingTableAdapter timeAdapter = new UserDBDataSetWorkerTableAdapters.TimingTableAdapter();
                    timeAdapter.TimingInsert(GetLatestWordID(), timingEntries[i].Timing, i);
                }
            }
            return(true);
        }