Example #1
0
        private static bool AddImport(JObject wordJO, JObject meanJO, JObject linkJO)
        {
            var wMap = new Dictionary <int, int>();
            var mMap = new Dictionary <int, int>();
            int tmp;
            var w = new DBWord();

            foreach (var jp in wordJO)
            {
                if (words.TryGetValue(w.Letters = jp.Key.ToLower(), out tmp))
                {
                    wMap.Add(w.Id = jp.Value.ToInt(), tmp);
                }
                else
                {
                    db.Insert(w);
                    wMap.Add(jp.Value.ToInt(), w.Id);
                    words.Add(w.Letters, w.Id);
                    eles.Add(w.ToStat());
                    WrongCount += w.wrong + 1;
                }
            }
            var m = new DBMeaning();

            foreach (var jp in meanJO)
            {
                if (means.TryGetValue(m.Meaning = jp.Key, out tmp))
                {
                    mMap.Add(m.Id = jp.Value.ToInt(), tmp);
                }
                else
                {
                    db.Insert(m);
                    mMap.Add(jp.Value.ToInt(), m.Id);
                    means.Add(m.Meaning, m.Id);
                    eles.Add(m.ToStat());
                    WrongCount += m.wrong + 1;
                }
            }
            var t = new DBTranslation();

            foreach (var jp in linkJO)
            {
                t.Wid = wMap[jp.Key.ToInt()];
                foreach (var ji in jp.Value as JArray)
                {
                    t.Mid = mMap[ji.ToInt()];
                    if (!e2c.Contains(t.Wid, t.Mid))
                    {
                        e2c.Add(t.Wid, t.Mid);
                        c2e.Add(t.Mid, t.Wid);
                        db.Insert(t);
                    }
                }
            }
            updTimeAll = updTimeDetail = DateTime.Now.Ticks;
            return(true);
        }
Example #2
0
        public static void AddWord(string eng, ICollection <string> chi)
        {
            int wid, mid;

            if (!words.TryGetValue(eng, out wid))//add word
            {
                var word = new DBWord()
                {
                    Letters = eng
                };
                db.Insert(word);
                words[eng] = wid = word.Id;
                eles.Add(word.ToStat());
                WrongCount += word.wrong + 1;
            }
            foreach (var str in chi)
            {
                if (!means.TryGetValue(str, out mid))//add meaning
                {
                    var mean = new DBMeaning()
                    {
                        Meaning = str
                    };
                    db.Insert(mean);
                    means[str] = mid = mean.Id;
                    eles.Add(mean.ToStat());
                    WrongCount += mean.wrong + 1;
                }
                if (!e2c.Contains(wid, mid))
                {
                    db.Insert(new DBTranslation()
                    {
                        Wid = wid, Mid = mid
                    });
                    e2c.Add(wid, mid);
                    c2e.Add(mid, wid);
                }
            }
            updTimeAll = updTimeDetail = DateTime.Now.Ticks;
        }
Example #3
0
 public static void AddWord(string eng, ICollection<string> chi)
 {
     int wid, mid;
     if (!words.TryGetValue(eng, out wid))//add word
     {
         var word = new DBWord() { Letters = eng };
         db.Insert(word);
         words[eng] = wid = word.Id;
         eles.Add(word.ToStat());
         WrongCount += word.wrong + 1;
     }
     foreach (var str in chi)
     {
         if (!means.TryGetValue(str, out mid))//add meaning
         {
             var mean = new DBMeaning() { Meaning = str };
             db.Insert(mean);
             means[str] = mid = mean.Id;
             eles.Add(mean.ToStat());
             WrongCount += mean.wrong + 1;
         }
         if (!e2c.Contains(wid, mid))
         {
             db.Insert(new DBTranslation() { Wid = wid, Mid = mid });
             e2c.Add(wid, mid);
             c2e.Add(mid, wid);
         }
     }
     updTimeAll = updTimeDetail = DateTime.Now.Ticks;
 }
Example #4
0
 private static bool AddImport(JObject wordJO, JObject meanJO, JObject linkJO)
 {
     var wMap = new Dictionary<int, int>();
     var mMap = new Dictionary<int, int>();
     int tmp;
     var w = new DBWord();
     foreach (var jp in wordJO)
     {
         if (words.TryGetValue(w.Letters = jp.Key.ToLower(), out tmp))
             wMap.Add(w.Id = jp.Value.ToInt(), tmp);
         else
         {
             db.Insert(w);
             wMap.Add(jp.Value.ToInt(), w.Id);
             words.Add(w.Letters, w.Id);
             eles.Add(w.ToStat());
             WrongCount += w.wrong + 1;
         }
     }
     var m = new DBMeaning();
     foreach (var jp in meanJO)
     {
         if (means.TryGetValue(m.Meaning = jp.Key, out tmp))
             mMap.Add(m.Id = jp.Value.ToInt(), tmp);
         else
         {
             db.Insert(m);
             mMap.Add(jp.Value.ToInt(), m.Id);
             means.Add(m.Meaning, m.Id);
             eles.Add(m.ToStat());
             WrongCount += m.wrong + 1;
         }
     }
     var t = new DBTranslation();
     foreach (var jp in linkJO)
     {
         t.Wid = wMap[jp.Key.ToInt()];
         foreach (var ji in jp.Value as JArray)
         {
             t.Mid = mMap[ji.ToInt()];
             if (!e2c.Contains(t.Wid, t.Mid))
             {
                 e2c.Add(t.Wid, t.Mid);
                 c2e.Add(t.Mid, t.Wid);
                 db.Insert(t);
             }
         }
     }
     updTimeAll = updTimeDetail = DateTime.Now.Ticks;
     return true;
 }
Example #5
0
 private static bool ReplaceImport(JObject wordJO, JObject meanJO, JObject linkJO,
     Dictionary<int, short> wwcnt, Dictionary<int, short> mwcnt)
 {
     Clear(false);
     var wMap = new Dictionary<int, int>();
     var mMap = new Dictionary<int, int>();
     {
         var ws = new DBWord[wordJO.Count];
         var ids = new int[wordJO.Count];
         int a = 0, tid;
         short wcnt;
         foreach (var jp in wordJO)
         {
             ws[a] = new DBWord() { Letters = jp.Key.ToLower() };
             if (wwcnt.TryGetValue(tid = jp.Value.ToInt(), out wcnt))
                 ws[a].wrong = wcnt;
             ids[a++] = tid;
         }
         db.InsertAll(ws);
         a = 0;
         foreach (var w in ws)
             wMap.Add(ids[a++], w.Id);
     }
     {
         var ms = new DBMeaning[meanJO.Count];
         var ids = new int[meanJO.Count];
         int a = 0, tid;
         short wcnt;
         foreach (var jp in meanJO)
         {
             ms[a] = new DBMeaning() { Meaning = jp.Key.ToLower() };
             if (mwcnt.TryGetValue(tid = jp.Value.ToInt(), out wcnt))
                 ms[a].wrong = wcnt;
             ids[a++] = jp.Value.ToInt();
         }
         db.InsertAll(ms);
         a = 0;
         foreach (var m in ms)
             mMap.Add(ids[a++], m.Id);
     }
     {
         var ts = new List<DBTranslation>();
         foreach (var jp in linkJO)
         {
             int wid = wMap[jp.Key.ToInt()];
             foreach (var ji in jp.Value as JArray)
                 ts.Add(new DBTranslation(wid, mMap[ji.ToInt()]));
         }
         db.InsertAll(ts);
     }
     Init();
     return true;
 }
Example #6
0
        private static bool ReplaceImport(JObject wordJO, JObject meanJO, JObject linkJO,
                                          Dictionary <int, short> wwcnt, Dictionary <int, short> mwcnt)
        {
            Clear(false);
            var wMap = new Dictionary <int, int>();
            var mMap = new Dictionary <int, int>();

            {
                var   ws = new DBWord[wordJO.Count];
                var   ids = new int[wordJO.Count];
                int   a = 0, tid;
                short wcnt;
                foreach (var jp in wordJO)
                {
                    ws[a] = new DBWord()
                    {
                        Letters = jp.Key.ToLower()
                    };
                    if (wwcnt.TryGetValue(tid = jp.Value.ToInt(), out wcnt))
                    {
                        ws[a].wrong = wcnt;
                    }
                    ids[a++] = tid;
                }
                db.InsertAll(ws);
                a = 0;
                foreach (var w in ws)
                {
                    wMap.Add(ids[a++], w.Id);
                }
            }
            {
                var   ms = new DBMeaning[meanJO.Count];
                var   ids = new int[meanJO.Count];
                int   a = 0, tid;
                short wcnt;
                foreach (var jp in meanJO)
                {
                    ms[a] = new DBMeaning()
                    {
                        Meaning = jp.Key.ToLower()
                    };
                    if (mwcnt.TryGetValue(tid = jp.Value.ToInt(), out wcnt))
                    {
                        ms[a].wrong = wcnt;
                    }
                    ids[a++] = jp.Value.ToInt();
                }
                db.InsertAll(ms);
                a = 0;
                foreach (var m in ms)
                {
                    mMap.Add(ids[a++], m.Id);
                }
            }
            {
                var ts = new List <DBTranslation>();
                foreach (var jp in linkJO)
                {
                    int wid = wMap[jp.Key.ToInt()];
                    foreach (var ji in jp.Value as JArray)
                    {
                        ts.Add(new DBTranslation(wid, mMap[ji.ToInt()]));
                    }
                }
                db.InsertAll(ts);
            }
            Init();
            return(true);
        }