示例#1
0
        //---------------------------------------
        // getEntry
        //---------------------------------------
        public QueryDictResult getEntry(string inText)
        {
            QueryDictResult result = new QueryDictResult("");

            try
            {
                using (var streamdb = Eviroment.getR_W_fromResource(localBaseFileName))
                    using (var db = new LiteDatabase(streamdb))
                    {
                        var dictionary = db.GetCollection <DictEntry>("Dictionary");
                        var dictSqlReg = new DictEntry();
                        dictionary.EnsureIndex(x => x.EntryData.sourceText);
                        var entries = dictionary.Find(x => x.EntryData.sourceText == inText);

                        if (entries.OfType <DictEntry>().Count() > 0)
                        {
                            result = entries.First().EntryData;
                        }
                    }
            }
            catch (Exception ex)
            {
                log.Debug(ex.StackTrace);
                log.Debug("Setting result to empty object");
                result = new QueryDictResult(inText);
            }
            return(result);
        }
示例#2
0
        static void display(IEngToSpaDictSrv dictSrv, IMainView view, QueryDictResult result)
        {
            try
            {
                // status banner
                view.displayText(Constants.BANNER_SEPARATOR + Constants.BRLINE);

                if (!result.IsEmpty)
                {
                    view.displayText(LocationLangSrv.getTagValue(Constants.TAG_DICT_TEXT_FOUND) + Constants.BRLINE);
                    view.addEntryToSuggestList(result.sourceText);
                }
                else
                {
                    view.displayText(string.Format(LocationLangSrv.getTagValue(Constants.TAG_DICT_TEXT_NOT_FOUND), result.sourceText) + Constants.BRLINE);
                }

                //result
                view.displayText(Constants.BANNER_SEPARATOR + Constants.BRLINE);
                view.displayText(QueryDictResultFormater.toSimpleText(result));

                // banner dict. resume
                view.displayText(Constants.BANNER_SEPARATOR + Constants.BRLINE);
                var totalEntriesText = string.Format(LocationLangSrv.getTagValue(Constants.TAG_DICT_RESUME_DATA), dictSrv.totalEntries());
                view.displayText(totalEntriesText + Constants.BRLINE);
                view.displayText(Constants.BANNER_SEPARATOR + Constants.BRLINE);
                view.displayScrollUpFirstLine();
            }
            catch (Exception ex)
            {
                log.Debug(ex.StackTrace);
            }
        }
示例#3
0
 static void displayDictResult(QueryDictResult inResult)
 {
     display(dictSrv, view, inResult);
     view.clearUserInput();
     inputUser.ClearFocus();
     view.setFocusOnResult();
 }
示例#4
0
        public QueryDictResult getTranslation(string inText)
        {
            QueryDictResult result = new QueryDictResult(inText);

            // search in local dictionary
            try
            {
                QueryDictResult localDictResult = dictDAO.getEntry(inText.ToUpper());
                if (!localDictResult.IsEmpty)
                {
                    localDictResult.sourceText = localDictResult.sourceText.ToLower();
                    Macros.userMsg(Constants.LOCAL_DICT_WORD_FOUND);
                    return(localDictResult);
                }
                else
                {
                    Macros.userMsg(Constants.LOCAL_DICT_WORD_NOT_FOUND);
                }
            }
            catch (Exception ex)
            {
                log.Debug(ex.StackTrace);
                log.Debug("Setting result to empty object");
                Macros.userMsg(Constants.LOCAL_DICT_WORD_FAIL, ex.Message);
                result = new QueryDictResult(inText);
            }

            // search in web dictionary
            try
            {
                Macros.userMsg(Constants.WEB_DICT_SEARCH);
                var webDict   = new WebDictEngToSpa();
                var webResult = new QueryDictResult(inText);
                webDict.searchText(inText, webResult);
                if (!webResult.IsEmpty)
                {
                    QueryDictResult resultToSave = webResult.getClone();
                    // normalize text
                    resultToSave.sourceText = resultToSave.sourceText.ToUpper();
                    dictDAO.saveEntry(resultToSave);
                    result = webResult;
                    return(result);
                }
            }
            catch (Exception ex)
            {
                log.Debug(ex.StackTrace);
                log.Debug("Setting result to empty object");
                Macros.userMsg(Constants.WEB_DICT_FAIL, ex.Message);
                result            = new QueryDictResult(inText);
                result.sourceText = inText;
            }
            result.sourceText = inText;
            return(result);
        }
示例#5
0
 public void saveEntry(QueryDictResult inDictData)
 {
     try
     {
         using (var streamdb = Eviroment.getR_W_fromResource(localBaseFileName))
             using (var db = new LiteDatabase(streamdb))
             {
                 var dictionary = db.GetCollection <DictEntry>("Dictionary");
                 if (!inDictData.IsEmpty && !dictionary.Exists(x => x.EntryData.sourceText == inDictData.sourceText))
                 {
                     var dictSqlReg = new DictEntry();
                     dictSqlReg.EntryData = inDictData;
                     dictionary.EnsureIndex(x => x.EntryData.sourceText);
                     dictionary.Insert(dictSqlReg);
                 }
             }
     }
     catch (Exception ex)
     {
         log.Debug(ex.StackTrace);
     }
 }
示例#6
0
        //---------------------------------------------------------------------------
        // searchText
        //---------------------------------------------------------------------------
        public void searchText(string inText, QueryDictResult inResult)
        {
            if (!this.loadConfigFlag)
            {
                inResult.resetAttrs();
                return;
            }

            // search pronunciation
            try
            {
                var textNormalice = inText.Replace(" ", "+");
                Macros.userMsg(LocationLangSrv.getTagValue(Constants.SEARCHING_PR));
                MatchSiteResult result = searchFirstOcurrence(textNormalice, dicConf.Pronunciation.Sites);
                if (result.IsMatch)
                {
                    var pattern = (PrPattern)result.Pattern;
                    var idxPr   = pattern.IdxPrGroup;
                    var prData  = idxPr > -1 ? result.Matches[0].Groups[idxPr + 1].Value : "";

                    if (pattern.CleanResult)
                    {
                        inResult.pronunciation = Regex.Replace(prData, pattern.CleanPattern, "", RegexOptions.IgnoreCase);
                    }
                }
            }
            catch (Exception ex)
            {
                log.Debug(ex.StackTrace);
                log.Debug("Setting pronunciation to empty string value");
                inResult.pronunciation = "";
            }

            // search translations
            try
            {
                Macros.userMsg(LocationLangSrv.getTagValue(Constants.SEARCHING_TR));
                MatchSiteResult result = this.searchFirstOcurrence(inText, this.dicConf.Translation.Sites);
                if (result.IsMatch)
                {
                    if (result.TextFound != inText)
                    {
                        return;
                    }
                    inResult.IsEmpty = false;
                    var pattern = (TrPattern)result.Pattern;
                    foreach (Match match in result.Matches)
                    {
                        var idxTr     = pattern.IdxTrGroup;
                        var idxTrType = pattern.IdxTrTypeGroup;

                        DictTrEntry trEntry = new DictTrEntry();
                        trEntry.translation = idxTr > -1 ? match.Groups[idxTr].Value : "";
                        trEntry.type        = idxTrType > -1 ? match.Groups[idxTrType].Value : "";

                        if (pattern.CleanTypeResult)
                        {
                            trEntry.type = Regex.Replace(trEntry.type, pattern.CleanTypePattern, "", RegexOptions.IgnoreCase);
                        }
                        inResult.translations.Add(trEntry);
                    }
                    //inResult.translations = inResult.translations.GroupBy(x => x.translation).Select(g => g.First()).ToList();
                }
            }
            catch (Exception ex)
            {
                log.Debug(ex.StackTrace);
                log.Debug("Removing last translation entry");
                if (inResult.translations.Count > 0)
                {
                    inResult.translations.RemoveAt(inResult.translations.Count - 1);
                }
            }
        }
示例#7
0
        static void searchDictHandler(string inText)
        {
            var viewLocal = view;

            lock (searchLock)
            {
                if (MainActivity.isSearching)
                {
                    return;
                }
            }

            try
            {
                lock (searchLock)
                {
                    MainActivity.isSearching = true;
                }

                view.hideKeyboard();
                view.clearStatusArea();
                view.clearDisplay();
                view.displayStatus(LocationLangSrv.getTagValue(Constants.SEARCHING_DICT_TEXT) + "[" + inText + "]" + Constants.BRLINE);
                QueryDictResult result = null;

                var searchThread = new Thread(new ThreadStart(() =>
                {
                    // start time out thread
                    var timerThread = new Thread(new ThreadStart(() =>
                    {
                        Thread.Sleep(15000);
                        if (result == null)
                        {
                            viewLocal.displayText(LocationLangSrv.getTagValue(Constants.TIME_OUT_ERROR) + Constants.BRLINE);
                            lock (searchLock)
                            {
                                MainActivity.isSearching = false;
                            }
                        }
                    }));
                    timerThread.Start();

                    viewLocal.displayText(LocationLangSrv.getTagValue(Constants.SEARCHING_INFO) + "[" + inText + "]" + Constants.BRLINE);

                    result = dictSrv.getTranslation(inText);
                    mainActivity.RunOnUiThread(() =>
                    {
                        viewLocal.clearDisplay();
                    });

                    mainActivity.RunOnUiThread(() => displayDictResult(result));

                    lock (searchLock)
                    {
                        MainActivity.isSearching = false;;
                    }
                }));
                searchThread.Start();
            }
            catch (Exception ex)
            {
                viewLocal.displayText(LocationLangSrv.getTagValue(Constants.RUNTIME_ERROR_TAG) + Constants.BRLINE);
                log.Debug(ex.StackTrace);
                lock (searchLock)
                {
                    MainActivity.isSearching = false;
                }
            }
        }