Пример #1
0
        // ********************************************************************************
        /// <summary>
        ///
        /// </summary>
        /// <param name="items"></param>
        /// <param name="abort"></param>
        /// <returns></returns>
        /// <created>UPh,01.11.2015</created>
        /// <changed>UPh,01.11.2015</changed>
        // ********************************************************************************
        internal override void GetTermList(TermListItems items, IAbortTermQuery abort, bool bTargetLanguage)
        {
            if (_DataBase == null)
            {
                return;
            }

            if (string.IsNullOrEmpty(_LangAttribute1))
            {
                return;
            }

            try
            {
                string langattribute;
                if (bTargetLanguage)
                {
                    langattribute = _LangAttribute2;
                }
                else
                {
                    langattribute = _LangAttribute1;
                }

                string sql = string.Format("SELECT origterm,conceptid FROM {0}", "I_" + langattribute);

                using (OleDbCommand cmd = new OleDbCommand(sql, _DataBase))
                {
                    //cmd.Parameters.AddWithValue("@langtable", "I_" + _LangAttribute1);

                    using (OleDbDataReader reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            try
                            {
                                string term   = reader[0].ToString();
                                int    termID = reader.GetInt32(1);

                                items.Add(File.ID, term, termID);
                            }
                            catch (Exception)
                            {
                                continue;
                            }
                        }
                    }
                }

                // Get statuses
                foreach (TermListItem item in items)
                {
                    GetTermStatus(item, abort);
                }
            }
            catch (Exception)
            {
                items.Clear();
            }
        }
Пример #2
0
        // ********************************************************************************
        /// <summary>
        ///
        /// </summary>
        /// <param name="items"></param>
        /// <returns></returns>
        /// <created>UPh,29.10.2015</created>
        /// <changed>UPh,29.10.2015</changed>
        // ********************************************************************************
        internal override void GetTermList(TermListItems items, IAbortTermQuery abort, bool bTargetLanguage)
        {
            if (_Doc == null)
            {
                return;
            }

            if (bTargetLanguage)
            {
                return; // TODO
            }
            for (int iLangset = 0; iLangset < _Langset1.Count; iLangset++)
            {
                XmlNode langSet = _Langset1[iLangset];
                foreach (XmlNode node in langSet.SelectNodes(".//term"))
                {
                    items.Add(File.ID, node.InnerText, iLangset);
                }

                //XmlNode node = langSet.SelectSingleNode(".//term");
                //if (node == null)
                //    node = langSet.SelectSingleNode(".//ntig/termGrp/term");

                //if (node != null)
                //    items.Add(File.ID, node.InnerText, items.Count);
            }
        }
Пример #3
0
        // ********************************************************************************
        /// <summary>
        /// From worker
        /// </summary>
        /// <param name="requestid"></param>
        /// <param name="items"></param>
        /// <returns></returns>
        /// <created>UPh,31.10.2015</created>
        /// <changed>UPh,31.10.2015</changed>
        // ********************************************************************************
        internal void FireTermListResult(long requestid, TermListItems items)
        {
            if (TermListResult == null)
            {
                return;
            }

            TermListResultArgs args = new TermListResultArgs();

            args.RequestID = requestid;
            args.Items     = items;

            TermListResult(this, args);
        }
Пример #4
0
        // ********************************************************************************
        /// <summary>
        ///
        /// </summary>
        /// <param name="request"></param>
        /// <param name="result"></param>
        /// <created>UPh,20.03.2016</created>
        /// <changed>UPh,20.03.2016</changed>
        // ********************************************************************************
        internal void HandleProhibitedTerminologyRequest(TermBaseRequest request, List <TerminologyResultArgs> result = null)
        {
            bool bSync = (result != null);


            bool bTargetLanguage = (_TermbaseQuery.LCID2 > 0);


            // Build index if necessary (works on target language)
            if (_Index2.LCID != _TermbaseQuery.LCID2)
            {
                TermListItems items = RetrieveTermList(false, bTargetLanguage);
                if (!bSync && _shouldStop)
                {
                    return;
                }

                // Index from items
                _Index2.BuildIndex(bTargetLanguage ?  _TermbaseQuery.LCID2 : _TermbaseQuery.LCID1, items);
            }


            WordSegments wordSegments = new WordSegments(request.Term);

            int nWords = wordSegments.Count;

            if (nWords == 0)
            {
                return;
            }


            // Start with max term word count (3)

            for (int nTermWords = 3; nTermWords >= 1; nTermWords--)
            {
                for (int iWord0 = 0; iWord0 < nWords - nTermWords + 1; iWord0++)
                {
                    int iWord1 = iWord0 + nTermWords - 1;

                    int from = wordSegments.GetWordStart(iWord0);
                    int to   = wordSegments.GetWordEnd(iWord1);

                    foreach (IndexItem match in _Index2.Matches(request.Term, from, to - from))
                    {
                        HandleProhibitedTerminologyMatch(bTargetLanguage, request.ID, match, from, to - from, result);
                    }
                }
            }
        }
Пример #5
0
        // ********************************************************************************
        /// <summary>
        ///
        /// </summary>
        /// <param name="items"></param>
        /// <returns></returns>
        /// <created>UPh,14.11.2015</created>
        /// <changed>UPh,14.11.2015</changed>
        // ********************************************************************************
        public void BuildIndex(int lcid, TermListItems items)
        {
            LCID = lcid;
            int count = items.Count;

            _Items = new IndexItem[count];

            for (int i = 0; i < count; i++)
            {
                TermListItem termItem = items[i];

                _Items[i].Hash       = MakeGlossaryHashCode(termItem.Term);
                _Items[i].TermBaseID = termItem.TermBaseID;
                _Items[i].TermID     = termItem.TermID;
            }

            Array.Sort(_Items);
        }
Пример #6
0
        // ********************************************************************************
        /// <summary>
        /// Handle request to get term list items
        /// </summary>
        /// <returns></returns>
        /// <created>UPh,25.10.2015</created>
        /// <changed>UPh,25.10.2015</changed>
        // ********************************************************************************
        private void HandleTermListRequest(TermBaseRequest request)
        {
            TermListItems items = RetrieveTermList(false, false);

            if (items == null)
            {
                return;
            }

            if (_Paused || _shouldStop)
            {
                return;
            }

            items.Sort((a, b) => string.Compare(a.Term, b.Term, true));


            _TermbaseQuery.FireTermListResult(request.ID, items);
        }
Пример #7
0
        // ********************************************************************************
        /// <summary>
        ///
        /// </summary>
        /// <param name="term"></param>
        /// <param name="infos"></param>
        /// <returns></returns>
        /// <created>UPh,17.11.2015</created>
        /// <changed>UPh,17.11.2015</changed>
        // ********************************************************************************
        internal void HandleTermInfosRequest(string term, List <TermInfoResultArgs> result = null)
        {
            bool bSync = (result != null);

            // Build index if necessary
            if (_Index.LCID != _TermbaseQuery.LCID1)
            {
                TermListItems items = RetrieveTermList(true, false);
                if (!bSync && _shouldStop)
                {
                    return;
                }

                // Index from items
                _Index.BuildIndex(_TermbaseQuery.LCID1, items);
            }

            foreach (IndexItem match in _Index.Matches(term))
            {
                // Get TermInfo
                TermBase termbase = _TermBases.FindTermBase(match.TermBaseID);
                if (termbase == null)
                {
                    continue;
                }

                TermInfo terminfo = null;
                if (!termbase.GetTermInfo(match.TermID, out terminfo, this))
                {
                    return;
                }

                TermInfoResultArgs item = new TermInfoResultArgs();
                item.RequestID  = 0;
                item.TermBaseID = match.TermBaseID;
                item.Info       = terminfo;

                result.Add(item);
            }
        }
Пример #8
0
        // ********************************************************************************
        /// <summary>
        ///
        /// </summary>
        /// <param name="items"></param>
        /// <param name="bAbort"></param>
        /// <returns></returns>
        /// <created>UPh,25.10.2015</created>
        /// <changed>UPh,25.10.2015</changed>
        // ********************************************************************************
        internal override void GetTermList(TermListItems items, IAbortTermQuery abort, bool bTargetLanguage)
        {
            if (_Stream == null)
            {
                return;
            }

            for (int i = 0; i < _Terms.Count; i++)
            {
                var tuple = _Terms[i];

                TermListItem item = new TermListItem();
                if (bTargetLanguage)
                {
                    items.Add(File.ID, tuple.Item2, i);
                }
                else
                {
                    items.Add(File.ID, tuple.Item1, i);
                }
            }
        }
Пример #9
0
        // ********************************************************************************
        /// <summary>
        ///
        /// </summary>
        /// <param name="request"></param>
        /// <param name="result"></param>
        /// <returns></returns>
        /// <created>UPh,17.11.2015</created>
        /// <changed>UPh,17.11.2015</changed>
        // ********************************************************************************
        internal void HandleSingleTermRequest(TermBaseRequest request, List <TerminologyResultArgs> result = null)
        {
            bool bSync = (result != null);

            // Build index if necessary
            if (_Index.LCID != _TermbaseQuery.LCID1)
            {
                TermListItems items = RetrieveTermList(true, false);
                if (!bSync && _shouldStop)
                {
                    return;
                }

                // Index from items
                _Index.BuildIndex(_TermbaseQuery.LCID1, items);
            }

            foreach (IndexItem match in _Index.Matches(request.Term))
            {
                HandleTerminologyMatch(request.ID, match, 0, request.Term.Length, result);
            }
        }
Пример #10
0
        // ********************************************************************************
        /// <summary>
        /// Loops all term bases and collects terms in current language
        /// </summary>
        /// <returns></returns>
        /// <created>UPh,14.11.2015</created>
        /// <changed>UPh,14.11.2015</changed>
        // ********************************************************************************
        private TermListItems RetrieveTermList(bool bLanguagePairOnly, bool bTargetLanguage)
        {
            TermListItems items = new TermListItems();

            foreach (TermBase termbase in _TermBases)
            {
                if (_Paused || _shouldStop)
                {
                    return(null);
                }

                if (bLanguagePairOnly && !termbase.HasLanguagePair())
                {
                    continue;
                }

                TermListItems items2 = new TermListItems();
                termbase.GetTermList(items2, this, bTargetLanguage);
                items.AddRange(items2);
            }

            return(items);
        }
Пример #11
0
 internal abstract void GetTermList(TermListItems items, IAbortTermQuery abort, bool bTargetLanguage);