Exemplo n.º 1
0
 public override List <GrammarModel> GetAll()
 {
     using (var db = new JazeDatabaseContext())
     {
         return(db.Grammars.ToList().Select(o => GrammarModel.Create(o)).ToList());
     }
 }
Exemplo n.º 2
0
 public override void LoadFull(GrammarModel model)
 {
     if (!model.IsLoadFull)
     {
         using (var db = new JazeDatabaseContext())
         {
             model.Detail = JsonConvert.DeserializeObject <GrammarDetail[]>(model.DetailText);
             foreach (var detail in model.Detail)
             {
                 if (detail.ExampleIds != null)
                 {
                     detail.Examples = new List <ExampleModel>();
                     foreach (var exampleId in detail.ExampleIds)
                     {
                         var example = db.JaViExamples.Find(exampleId);
                         if (example != null)
                         {
                             detail.Examples.Add(ExampleModel.Create(example));
                         }
                     }
                 }
             }
             model.IsLoadFull = true;
         }
     }
 }
Exemplo n.º 3
0
 public override List <JaenModel> SearchEndWith(string key)
 {
     using (var db = new JazeDatabaseContext())
     {
         return(db.JaEns.Where(o => o.Word.EndsWith(key) || o.Kana.EndsWith(key)).ToList().Select(entity => JaenModel.Create(entity)).ToList());
     }
 }
Exemplo n.º 4
0
 public override List <VijaModel> GetAll()
 {
     using (var db = new JazeDatabaseContext())
     {
         return(db.Vijas.ToList().Select(entity => VijaModel.Create(entity)).ToList());
     }
 }
Exemplo n.º 5
0
        static KanjiPartService()
        {
            using (var db = new JazeDatabaseContext())
            {
                _maxPartId  = db.Parts.Max(entity => entity.Id);
                _maxKanjiId = db.Kanjis.Max(entity => entity.Id);
                _parts      = new PartModel[_maxPartId + 1];
                _kanjis     = new KanjiModel[_maxKanjiId + 1];
                _kanjiParts = new bool[_maxKanjiId + 1, _maxPartId + 1];

                var parts = db.Parts.ToList().Select(PartModel.Create);

                foreach (var part in parts)
                {
                    _parts[part.Id] = part;
                }

                var kanjis = db.Kanjis.ToList().Select(KanjiModel.Create);
                foreach (var kanji in kanjis)
                {
                    _kanjis[kanji.Id] = kanji;
                }

                foreach (var kanjiPart in db.KanjiParts)
                {
                    _kanjiParts[kanjiPart.KanjiId, kanjiPart.PartId] = true;
                }
            }
        }
Exemplo n.º 6
0
 public override List <JaviModel> GetAll()
 {
     using (var db = new JazeDatabaseContext())
     {
         return(db.JaVis.ToList().Select(o => JaviModel.Create(o)).ToList());
     }
 }
Exemplo n.º 7
0
 public override List <KanjiModel> SearchContain(string key)
 {
     using (var db = new JazeDatabaseContext())
     {
         return(db.Kanjis.Where(kanji => kanji.HanViet.Contains(key)).ToList().Select(entity => KanjiModel.Create(entity)).ToList());
     }
 }
Exemplo n.º 8
0
 public override List <VijaModel> SearchContain(string key)
 {
     using (var db = new JazeDatabaseContext())
     {
         return(db.Vijas.Where(o => o.Word.Contains(key)).ToList().Select(entity => VijaModel.Create(entity)).ToList());
     }
 }
Exemplo n.º 9
0
 public override void LoadFull(VijaModel model)
 {
     if (!model.IsLoadFull)
     {
         using (var db = new JazeDatabaseContext())
         {
             model.Means = JsonConvert.DeserializeObject <List <WordMean> >(model.MeanText);
             foreach (var mean in model.Means)
             {
                 if (mean.ExampleIds != null)
                 {
                     mean.Examples = new List <ExampleModel>();
                     foreach (var exampleId in mean.ExampleIds)
                     {
                         var example = db.JaViExamples.Find(exampleId);
                         if (example != null)
                         {
                             mean.Examples.Add(ExampleModel.Create(example));
                         }
                     }
                 }
             }
             model.IsLoadFull = true;
         }
     }
 }
Exemplo n.º 10
0
 public override List <GrammarModel> SearchExact(string key)
 {
     using (var db = new JazeDatabaseContext())
     {
         return(db.Grammars.Where(o => o.Struct == key || o.Meaning == key).ToList().Select(o => GrammarModel.Create(o))
                .ToList());
     }
 }
Exemplo n.º 11
0
 public override List <HanVietModel> SearchStartWith(string key)
 {
     using (var db = new JazeDatabaseContext())
     {
         return(db.HanViets.Where(hv => hv.Word.StartsWith(key) || hv.Reading.StartsWith(key))
                .ToList().Select(hv => HanVietModel.Create(hv)).ToList());
     }
 }
Exemplo n.º 12
0
 public override void LoadFull(HanVietModel model)
 {
     using (var db = new JazeDatabaseContext())
     {
         model.Content    = db.HanViets.Find(model.Id)?.Content;
         model.IsLoadFull = true;
     }
 }
Exemplo n.º 13
0
 private List <KanjiModel> LoadKanji(List <char> arr)
 {
     using (var db = new JazeDatabaseContext())
     {
         return(arr.Select(c => "" + c).Select(s => db.Kanjis.FirstOrDefault(kanji => kanji.Word == s))
                .Select(KanjiModel.Create).ToList());
     }
 }
Exemplo n.º 14
0
 public override List <GrammarModel> SearchContain(string key)
 {
     using (var db = new JazeDatabaseContext())
     {
         var hirakey = StringUtil.ConvertRomaji2Hiragana(key);
         return(db.Grammars.Where(o => o.Struct.Contains(hirakey) || o.Meaning.Contains(key)).ToList().Select(o => GrammarModel.Create(o))
                .ToList());
     }
 }
Exemplo n.º 15
0
 public override List <HanVietModel> GetAll()
 {
     using (var db = new JazeDatabaseContext())
     {
         //return db.HanViets.ToList().Select(hv => HanVietModel.Create(hv)).ToList();
         return(db.HanViets.Select(hv => new HanVietModel {
             Id = hv.Id, Word = hv.Word, Reading = hv.Reading
         }).ToList());
     }
 }
Exemplo n.º 16
0
        //public static IEnumerable<HanViet> Search(SearchArgs searchArgs)
        //{
        //    var key = searchArgs.SearchKey;

        //    if (string.IsNullOrWhiteSpace(key))
        //    {
        //        //return GetAll();
        //        return null;
        //    }

        //    switch (searchArgs.Option)
        //    {
        //        case SearchOption.Exact:
        //            return SearchExact(key);
        //        case SearchOption.StartWith:
        //            return SearchStartWith(key);
        //        case SearchOption.EndWith:
        //            return SearchEndWith(key);
        //        case SearchOption.Contain:
        //            return SearchContain(key);
        //        default:
        //            throw new ArgumentOutOfRangeException();
        //    }
        //}

        //private static IEnumerable<HanViet> SearchContain(string key)
        //{
        //    var context = JazeDatabaseContext.Context;
        //    return context.HanViets.Where(hv => hv.Word.Contains(key) || hv.Reading.Contains(key)).ToArray();
        //}

        //private static IEnumerable<HanViet> SearchEndWith(string key)
        //{
        //    var context = JazeDatabaseContext.Context;
        //    return context.HanViets.Where(hv => hv.Word.EndsWith(key) || hv.Reading.EndsWith(key)).ToArray();
        //}

        //private static IEnumerable<HanViet> SearchStartWith(string key)
        //{
        //    var context = JazeDatabaseContext.Context;
        //    return context.HanViets.Where(hv => hv.Word.StartsWith(key) || hv.Reading.StartsWith(key)).ToArray();
        //}

        //private static IEnumerable<HanViet> SearchExact(string key)
        //{
        //    var context = JazeDatabaseContext.Context;
        //    //at stat
        //    var keyStart = key + ", ";
        //    //at middle
        //    var keyMiddle = ", " + key + ",";
        //    //at end
        //    var keyEnd = ", " + key;
        //    return context.HanViets.Where(hv => hv.Word == key || hv.Reading == key || hv.Reading.StartsWith(keyStart) || hv.Reading.Contains(keyMiddle) || hv.Reading.EndsWith(keyEnd)).ToArray();
        //}

        //private static IEnumerable<HanViet> GetAll()
        //{
        //    var context = JazeDatabaseContext.Context;
        //    return context.HanViets.ToArray();
        //}
        public override HanVietModel Get(int id)
        {
            using (var db = new JazeDatabaseContext())
            {
                var entity = db.HanViets.Find(id);
                if (entity != null)
                {
                    return(HanVietModel.Create(entity));
                }

                return(null);
            }
        }
Exemplo n.º 17
0
 public override List <HanVietModel> SearchExact(string key)
 {
     using (var db = new JazeDatabaseContext())
     {
         //at stat
         var keyStart = key + ", ";
         //at middle
         var keyMiddle = ", " + key + ",";
         //at end
         var keyEnd = ", " + key;
         return(db.HanViets.Where(hv => hv.Word == key || hv.Reading == key || hv.Reading.StartsWith(keyStart) || hv.Reading.Contains(keyMiddle) || hv.Reading.EndsWith(keyEnd))
                .ToList().Select(hv => HanVietModel.Create(hv)).ToList());
     }
 }
Exemplo n.º 18
0
 public override List <JaviModel> SearchContain(string key)
 {
     using (var db = new JazeDatabaseContext())
     {
         if (StringUtil.IsContainKanji(key))
         {
             return(db.JaVis.Where(o => o.Word.Contains(key)).ToList().Select(o => JaviModel.Create(o)).ToList());
         }
         else
         {
             return(db.JaVis.Where(o => o.Word.Contains(key) || o.Kana.Contains(key)).ToList().Select(o => JaviModel.Create(o)).ToList());
         }
     }
 }
Exemplo n.º 19
0
 public override List <JaenModel> SearchExact(string key)
 {
     using (var db = new JazeDatabaseContext())
     {
         //at stat
         var keyStart = key + " ";
         //at middle
         var keyMiddle = " " + key + " ";
         //at end
         var keyEnd = " " + key;
         return(db.JaEns.Where(o => o.Word == key || o.Kana == key || o.Kana.StartsWith(keyStart) || o.Kana.Contains(keyMiddle) || o.Kana.EndsWith(keyEnd))
                .ToList().Select(entity => JaenModel.Create(entity)).ToList());
     }
 }
Exemplo n.º 20
0
 public override void LoadFull(JaviModel model)
 {
     if (!model.IsLoadFull)
     {
         using (var db = new JazeDatabaseContext())
         {
             model.Means = JsonConvert.DeserializeObject <List <WordMean> >(model.MeanText);
             foreach (var mean in model.Means)
             {
                 if (mean.ExampleIds != null)
                 {
                     mean.Examples = new List <ExampleModel>();
                     foreach (var exampleId in mean.ExampleIds)
                     {
                         var example = db.JaViExamples.Find(exampleId);
                         if (example != null)
                         {
                             mean.Examples.Add(ExampleModel.Create(example));
                         }
                     }
                 }
             }
             //fetch kanji in word
             model.Kanjis = new List <KanjiModel>();
             var kanjis = StringUtil.FilterCharsInString(model.Word, CharSet.Kanji);
             foreach (var c in kanjis)
             {
                 var kanji       = c.ToString();
                 var kanjiEntity = db.Kanjis.FirstOrDefault(e => e.Word == kanji);
                 if (kanjiEntity != null)
                 {
                     model.Kanjis.Add(KanjiModel.Create(kanjiEntity));
                 }
                 else
                 {
                     model.Kanjis.Add(new KanjiModel {
                         Word = kanji
                     });
                 }
             }
             model.IsLoadFull = true;
         }
     }
 }
Exemplo n.º 21
0
 public override List <KanjiModel> SearchExact(string key)
 {
     using (var db = new JazeDatabaseContext())
     {
         if (StringUtil.IsVietnameseWord(key))
         {
             //at stat
             var keyStart = key + ",";
             //at middle
             var keyMiddle = "," + key + ",";
             //at end
             var keyEnd = "," + key;
             return(db.Kanjis.Where(kanji => kanji.HanViet == key || kanji.HanViet.StartsWith(keyStart) || kanji.HanViet.Contains(keyMiddle) || kanji.HanViet.EndsWith(keyEnd)).ToList().Select(entity => KanjiModel.Create(entity)).ToList());
         }
         else
         {
             return(db.Kanjis.Where(kanji => kanji.Word == key).ToList().Select(entity => KanjiModel.Create(entity)).ToList());
         }
     }
 }
Exemplo n.º 22
0
        public override void LoadFull(KanjiModel model)
        {
            if (!model.IsLoadFull)
            {
                using (var db = new JazeDatabaseContext())
                {
                    var kanjiEntity = db.Kanjis.Find(model.Id);
                    if (kanjiEntity != null)
                    {
                        model.Copy(kanjiEntity);
                        model.Radical    = RadicalModel.Create(kanjiEntity.Radical);
                        model.Parts      = kanjiEntity.KanjiParts.Select(entity => entity.Part).ToList().Select(PartModel.Create).ToList();
                        model.JaviModels = new List <JaviModel>();
                        var kuns = model.Kunyomi.Replace(" ", "").Split('、');
                        foreach (var kun in kuns)
                        {
                            if (kun.Contains('-'))
                            {
                                continue;
                            }

                            string kana = kun.Replace(".", "");
                            var    arr  = kun.Split('.');
                            var    word = model.Word;
                            if (arr.Length == 2)
                            {
                                word = model.Word + arr[1];
                            }
                            var javi = db.JaVis.FirstOrDefault(entity => entity.Word == word && entity.Kana == kana);
                            if (javi != null)
                            {
                                var javiModel = JaviModel.Create(javi);
                                javiModel.Means = JsonConvert.DeserializeObject <List <WordMean> >(javiModel.MeanText);
                                model.JaviModels.Add(javiModel);
                            }
                        }
                    }
                    model.IsLoadFull = true;
                }
            }
        }
Exemplo n.º 23
0
        private List <JaviModel> SearchHanViet(SearchArgs searchArgs)
        {
            if (_isLoadingCache)
            {
                return(new List <JaviModel>());
            }
            var key         = searchArgs.SearchKey;
            var arr         = key.Split(' ');
            var kanjiOfWord = arr.Length;
            var result      = new List <JaviModel>();

            using (var db = new JazeDatabaseContext())
            {
                foreach (var simpleJavi in _javiHanVietCaches)
                {
                    if (simpleJavi.HanViet.Count == kanjiOfWord)
                    {
                        bool flag = true;
                        for (int i = 0; i < kanjiOfWord; i++)
                        {
                            if (simpleJavi.HanViet2[i].All(hv => hv != arr[i]))
                            {
                                flag = false;
                                break;
                            }
                        }
                        if (flag)
                        {
                            var javi = db.JaVis.Find(simpleJavi.DbId);
                            if (javi != null)
                            {
                                result.Add(JaviModel.Create(javi));
                            }
                        }
                    }
                }
                return(result);
            }
        }
Exemplo n.º 24
0
        private static void LoadCaches()
        {
            _isLoadingCache    = true;
            _javiHanVietCaches = new List <JaviHanVietCache>();
            string cacheFolder = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Caches");
            var    cachePath   = System.IO.Path.Combine(cacheFolder, HanvietCacheFile);

            System.IO.Directory.CreateDirectory(cacheFolder);
            if (System.IO.File.Exists(cachePath))
            {
                //read from created cache file
                foreach (var line in System.IO.File.ReadAllLines(cachePath))
                {
                    if (!string.IsNullOrWhiteSpace(line))
                    {
                        try
                        {
                            var arr        = line.Split('\t');
                            var simpleJavi = new JaviHanVietCache();
                            simpleJavi.DbId    = int.Parse(arr[0]);
                            simpleJavi.HanViet = new List <string>();
                            for (int i = 1; i < arr.Length; i++)
                            {
                                simpleJavi.HanViet.Add(arr[i]);
                            }
                            _javiHanVietCaches.Add(simpleJavi);
                        }
                        catch (Exception)
                        {
                            // ignored
                        }
                    }
                }
            }
            else
            {
                //read from database
                using (var db = new JazeDatabaseContext())
                {
                    var hvDic = db.Kanjis.ToDictionary(kanji => kanji.Word, kanji => kanji.HanViet);
                    var javis = db.JaVis.Select(javi => new { javi.Id, javi.Word }).ToList();
                    foreach (var javi in javis)
                    {
                        var simpleJavi = new JaviHanVietCache();
                        simpleJavi.DbId    = javi.Id;
                        simpleJavi.HanViet = new List <string>();
                        foreach (var c in javi.Word.ToCharArray())
                        {
                            var key = c.ToString();
                            if (hvDic.ContainsKey(key))
                            {
                                simpleJavi.HanViet.Add(hvDic[key]);
                            }
                        }
                        _javiHanVietCaches.Add(simpleJavi);
                    }
                    //save to cache file
                    var writer = System.IO.File.AppendText(cachePath);
                    foreach (var simpleJavi in _javiHanVietCaches)
                    {
                        if (simpleJavi.HanViet.Count > 0)
                        {
                            writer.Write("{0}\t", simpleJavi.DbId);
                            var hvCount = simpleJavi.HanViet.Count;
                            for (int i = 0; i < hvCount - 1; i++)
                            {
                                writer.Write("{0}\t", simpleJavi.HanViet[i]);
                            }
                            writer.WriteLine("{0}", simpleJavi.HanViet[hvCount - 1]);
                        }
                    }
                    writer.Close();
                }
            }
            foreach (var simpleJavi in _javiHanVietCaches)
            {
                simpleJavi.HanViet2 = new List <List <string> >();
                foreach (var s in simpleJavi.HanViet)
                {
                    simpleJavi.HanViet2.Add(s.Split(',').ToList());
                }
            }
            _isLoadingCache = false;
        }