EFDbConnect CreateDemoBase(string db_name)
        {
            string path = PathToDb(db_name);
            if (File.Exists(path))
            {
                File.Delete(path);
            }

            ILogger ILoggerMock = Mock.Of<ILogger>();
            ISQLitePlatform platf = new SQLitePlatformWin32();
            EFDbConnect EFDbConnect = new EFDbConnect(platf, path);

            EFDbContext ctx = new EFDbContext(EFDbConnect);

            LearningItem li1 = new LearningItem();
            li1.Name = "First";
            ctx.AddNewItemToDBContext(li1);
            LearningItem li2 = new LearningItem();
            li2.Name = "Second";
            ctx.AddNewItemToDBContext(li2);


            // Audio tracks
            AudioTrack at1 = new AudioTrack();
            li1.AudioTracks.Add(at1);

            AudioTrack at2 = new AudioTrack();
            li1.AudioTracks.Add(at2);

            AudioTrack at3 = new AudioTrack();
            li2.AudioTracks.Add(at3);

            // Frequency dictionary
            FrequencyDictionary fd1 = new FrequencyDictionary();
            FrequencyDictionary fd2 = new FrequencyDictionary();

            FrequencyDictionary.Item fdi1 = new FrequencyDictionary.Item();
            fd1.Items.Add(fdi1);
            FrequencyDictionary.Item fdi2 = new FrequencyDictionary.Item();
            fd1.Items.Add(fdi2);

            FrequencyDictionary.Item fdi3 = new FrequencyDictionary.Item();
            fd2.Items.Add(fdi3);
            FrequencyDictionary.Item fdi4 = new FrequencyDictionary.Item();
            fd2.Items.Add(fdi4);

            // Languages
            Language lang1 = new Language();
            lang1.FrequencyDictionary = fd1;

            Language lang2 = new Language();
            lang2.FrequencyDictionary = fd2;

            Subtitles sub1 = new Subtitles();
            li1.SubtitleCollection.Add(sub1);
            sub1.SecondaryLanguage = lang1;

            Subtitles sub2 = new Subtitles();
            li1.SubtitleCollection.Add(sub2);


            SubtitleItem si1 = new SubtitleItem();
            sub1.Items.Add(si1);
            SubtitleItem si2 = new SubtitleItem();
            sub1.Items.Add(si2);

            SubtitleItem si3 = new SubtitleItem();
            sub2.Items.Add(si3);
            SubtitleItem si4 = new SubtitleItem();
            sub2.Items.Add(si4);

            Subtitles sub3 = new Subtitles();
            li2.SubtitleCollection.Add(sub3);
            sub3.SecondaryLanguage = lang2;

            SubtitleItem si5 = new SubtitleItem();
            sub3.Items.Add(si5);


            WordOfSubtitleItem sw1 = new WordOfSubtitleItem();
            si1.WordsCollection.Add(sw1); 

            WordOfSubtitleItem sw2 = new WordOfSubtitleItem();
            si1.WordsCollection.Add(sw2); 

            WordOfSubtitleItem sw3 = new WordOfSubtitleItem();
            si5.WordsCollection.Add(sw3);



            // Dictionary
            Dictionary dic1 = new Dictionary();
            ctx.AddNewItemToDBContext(dic1);

            WordOfDictionary wd1 = new WordOfDictionary();
            dic1.Words.Add(wd1);

            TranslationOfWord tw1 = new TranslationOfWord();
            wd1.translations.Add(tw1);
            
            TranslationOfWord tw2 = new TranslationOfWord();
            wd1.translations.Add(tw2);

            WordOfDictionary wd2 = new WordOfDictionary();
            dic1.Words.Add(wd2);
            sw1.word_of_dictionary = wd1;
            sw2.word_of_dictionary = wd2;

            Dictionary dic2 = new Dictionary();
            ctx.AddNewItemToDBContext(dic2);
            WordOfDictionary wd3 = new WordOfDictionary();
            dic1.Words.Add(wd3);
            WordOfDictionary wd4 = new WordOfDictionary();
            dic1.Words.Add(wd4);
            sw3.word_of_dictionary = wd3;

            
            
            
            ctx.SaveChanges();

            return EFDbConnect;
        }
예제 #2
0
        public static FrequencyDictionary LoadRussianFrequencyDictionary()
        {

            string url = "http://dict.ruslang.ru/";
            FrequencyDictionary fd =  EFDbContext.DataBase.Table<FrequencyDictionary>().FirstOrDefault(x=>x.Url == url);
            if (fd == null)
            {
                fd.Url = url;
            }

            if (fd.Items.Any())
            {
                fd.Items.Clear();
                EFDbContext.SaveChgs();
            }

            Dictionary<string, SpeechParts> dict = new Dictionary<string, SpeechParts>();
            dict.Add("s",SpeechParts.Noun);
            dict.Add("spro",SpeechParts.Pronoun);
            dict.Add("v",SpeechParts.Verb);
            dict.Add("a",SpeechParts.Adjective);

            dict.Add("pr",null);// SpeechParts.Preposition
            dict.Add("adv",null);// SpeechParts.Adverb
            dict.Add("conj",null);// SpeechParts.Conjuction
            dict.Add("intj",null);// SpeechParts.Interjection
            dict.Add("num",null);//SpeechParts.Numeral
            dict.Add("part",null);//SpeechParts.Part
            dict.Add("s.prop",null);// SpeechParts.NounProp
            dict.Add("advpro", null);
            dict.Add("anum", null);
            dict.Add("apro", null);

            using (TextReader reader = File.OpenText("Resources/russian_freq_dict.txt"))
            {
                // header
                string line = reader.ReadLine();
                int number = 1;
                while (true)
                {
                    line = reader.ReadLine();
                    if (line == null) break;

                    string[] res = line.Split('\t');

                    FrequencyDictionary.Item item = new FrequencyDictionary.Item();
                    item.Lemma = res[0];

                    item.freq = float.Parse(res[2]);
                    if (item.freq < 40) continue;

                    item.speechpart = dict[res[1].ToLower()];
                    if (item.speechpart == null) continue;

                    item.Number = number++;    

                    fd.Items.Add(item);
                    //fd.Items.Add(item);
                }


                fd.Count = fd.Items.Count();
                EFDbContext.SaveChgs();

                return fd;

                // блок нужно переработать кривое использование id
                /*
                foreach(var grp in items.GroupBy(x => x.speechpart))
                {
                    FrequencyDictionary.RangeOfSpeechParts range = new FrequencyDictionary.RangeOfSpeechParts();
                    range.speechpart = grp.Key;
                    range.Count = grp.Count();
                    fd.Range.Add(range);

                    FrequencyDictionary.Item first = null;

                    var list2 = grp.OrderByDescending(x => x.freq);
                    foreach(var elm in list2)
                    {
                        fd.Items.Add(elm);
                        if (first == null) first = elm;
                    }
                    DataBase.SaveChanges();
                    range.StartId = first.id;
                    if (fd.StartId == 0) fd.StartId = first.id;
                }
                */

                //var lst = items.OrderBy(x => x.speechpart).Select(x=>x.speechpart);
                /*
                int id_ = 1;
                SpeechParts CurSpeechPart = null;
                foreach(var elm in lst)
                {
                    if()
                }
                */
            }
        }