Ejemplo n.º 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ParseFiler"/> class.
        /// </summary>
        /// <param name="cache">The cache.</param>
        /// <param name="taskUpdateHandler">The task update handler.</param>
        /// <param name="idleQueue">The idle queue.</param>
        /// <param name="parserAgent">The parser agent.</param>
        public ParseFiler(FdoCache cache, Action <TaskReport> taskUpdateHandler, IdleQueue idleQueue, ICmAgent parserAgent)
        {
            Debug.Assert(cache != null);
            Debug.Assert(taskUpdateHandler != null);
            Debug.Assert(idleQueue != null);
            Debug.Assert(parserAgent != null);

            m_cache             = cache;
            m_taskUpdateHandler = taskUpdateHandler;
            m_idleQueue         = idleQueue;
            m_parserAgent       = parserAgent;
            m_resultQueue       = new Queue <ParseResult>();
            m_syncRoot          = new object();

            var servLoc = cache.ServiceLocator;

            m_wordformRepository       = servLoc.GetInstance <IWfiWordformRepository>();
            m_analysisFactory          = servLoc.GetInstance <IWfiAnalysisFactory>();
            m_mbFactory                = servLoc.GetInstance <IWfiMorphBundleFactory>();
            m_baseAnnotationRepository = servLoc.GetInstance <ICmBaseAnnotationRepository>();
            m_baseAnnotationFactory    = servLoc.GetInstance <ICmBaseAnnotationFactory>();
            m_moFormRepository         = servLoc.GetInstance <IMoFormRepository>();
            m_msaRepository            = servLoc.GetInstance <IMoMorphSynAnalysisRepository>();
            m_userAgent                = m_cache.LanguageProject.DefaultUserAgent;

            m_analysesWithOldEvaluation = new HashSet <IWfiAnalysis>(
                m_cache.ServiceLocator.GetInstance <IWfiAnalysisRepository>().AllInstances().Where(
                    analysis => analysis.GetAgentOpinion(m_parserAgent) != Opinions.noopinion));
        }
Ejemplo n.º 2
0
        /// -----------------------------------------------------------------------------------
        /// <summary>
        /// Initializes a new instance of the <see cref="ParserScheduler"/> class.
        /// </summary>
        /// -----------------------------------------------------------------------------------
        public ParserScheduler(FdoCache cache, IdleQueue idleQueue)
        {
            if (cache == null)
            {
                throw new ArgumentNullException("cache");
            }

            Trace.WriteLineIf(m_tracingSwitch.TraceInfo, "ParserScheduler(): CurrentThreadId = " + Win32.GetCurrentThreadId());

            m_cache = cache;

            switch (m_cache.LanguageProject.MorphologicalDataOA.ActiveParser)
            {
            case "XAmple":
                m_parserWorker = new XAmpleParserWorker(cache, HandleTaskUpdate, idleQueue);
                break;

            case "HC":
                m_parserWorker = new HCParserWorker(cache, HandleTaskUpdate, idleQueue);
                break;

            default:
                throw new InvalidOperationException("The language project is set to use an unrecognized parser.");
            }
            m_parserWorker.ParseFiler.WordformUpdated += ParseFiler_WordformUpdated;

            m_thread = new ConsumerThread <ParserPriority, ParserWork>(Work)
            {
                IsBackground = true
            };
            ReloadGrammarAndLexicon();
            m_thread.Start();
        }
Ejemplo n.º 3
0
        private void ReadXml()
        {
            var content = ReadContent();

            if (String.IsNullOrWhiteSpace(content))
            {
                return;
            }

            try
            {
                var xml = XDocument.Parse(content).Root;
                if (xml != null)
                {
                    SessionId          = (string)xml.Element("SessionId");
                    SteamLogin         = (string)xml.Element("SteamLogin");
                    SteamLoginSecure   = (string)xml.Element("SteamLoginSecure");
                    SteamProfileUrl    = (string)xml.Element("SteamProfileUrl");
                    SteamParental      = (string)xml.Element("SteamParental");
                    SteamRememberLogin = (string)xml.Element("SteamRememberLogin");
                    MachineAuth        = (string)xml.Element("MachineAuth");

                    IgnoreClient = ReadBool(xml.Element("IgnoreClient"));

                    SteamAvatarUrl      = (string)xml.Element("SteamAvatarUrl");
                    SteamBackgroundUrl  = (string)xml.Element("SteamBackgroundUrl");
                    SteamUserName       = (string)xml.Element("SteamUserName");
                    SteamLevel          = (string)xml.Element("SteamLevel");
                    CustomBackgroundUrl = (string)xml.Element("CustomBackgroundUrl");
                    SteamBadgeTitle     = (string)xml.Element("SteamBadgeTitle");
                    SteamBadgeUrl       = (string)xml.Element("SteamBadgeUrl");

                    BadgeFilter               = (string)xml.Element("BadgeFilter");
                    ShowcaseFilter            = (string)xml.Element("ShowcaseFilter");
                    IdleMode                  = ReadInt(xml.Element("IdleMode"));
                    MaxIdleProcessCount       = ReadByte(xml.Element("MaxIdleProcessCount"));
                    PeriodicSwitchRepeatCount = ReadByte(xml.Element("PeriodicSwitchRepeatCount"));
                    TrialPeriod               = ReadDouble(xml.Element("TrialPeriod"));
                    SwitchMinutes             = ReadByte(xml.Element("SwitchMinutes"));
                    SwitchSeconds             = ReadByte(xml.Element("SwitchSeconds"));

                    AllowShowcaseSync = ReadBool(xml.Element("AllowShowcaseSync"));
                    ShowInTaskbar     = ReadBool(xml.Element("ShowInTaskbar"), true);

                    IdleQueue.AddRange(GetStringList(xml.Element("IdleQueue")));
                    Blacklist.AddRange(GetStringList(xml.Element("Blacklist")));
                    ShowcaseBookmarks.AddRange(GetStringList(xml.Element("ShowcaseBookmarks")));
                    Games.AddRange(GetStringList(xml.Element("Games")));
                    AppBrushes.AddRange(GetStringList(xml.Element("AppBrushes")));
                }

                Logger.Info("Settings storage initialized");
            }
            catch (Exception ex)
            {
                Logger.Exception(ex, "Settings storage");
            }
        }
Ejemplo n.º 4
0
        /// -----------------------------------------------------------------------------------
        /// <summary>
        /// Initializes a new instance of the <see cref="ParserScheduler"/> class.
        /// </summary>
        /// -----------------------------------------------------------------------------------
        public ParserScheduler(FdoCache cache, IdleQueue idleQueue, string dataDir)
        {
            m_parserWorker = new ParserWorker(cache, HandleTaskUpdate, idleQueue, dataDir);
            m_parserWorker.ParseFiler.WordformUpdated += ParseFiler_WordformUpdated;

            m_thread = new ConsumerThread <ParserPriority, ParserWork>(Work);
            ReloadGrammarAndLexicon();
            m_thread.Start();
        }
Ejemplo n.º 5
0
 private async void CancelClick(object sender, RoutedEventArgs e)
 {
     await Task.Run(() =>
     {
         if (IdleQueue.IsWorking())
         {
             return;
         }
         IdleQueue.Cancel();
     });
 }
Ejemplo n.º 6
0
 public HCParserWorker(FdoCache cache, Action <TaskReport> taskUpdateHandler, IdleQueue idleQueue)
     : base(cache, taskUpdateHandler, idleQueue,
            cache.ServiceLocator.GetInstance <ICmAgentRepository>().GetObject(CmAgentTags.kguidAgentHermitCrabParser))
 {
     m_outputDirectory = Path.GetTempPath();
     m_patr            = new PatrParser
     {
         CommentChar = '|',
         CodePage    = Encoding.UTF8.CodePage
     };
     m_loader = new XmlLoader
     {
         XmlResolver = new XmlFwResolver(),
         QuitOnError = false
     };
 }
Ejemplo n.º 7
0
        public override void FixtureTeardown()
        {
            m_vernacularWS = null;
            m_filer        = null;
            m_idleQueue.Dispose();
            m_idleQueue               = null;
            m_entryFactory            = null;
            m_senseFactory            = null;
            m_stemAlloFactory         = null;
            m_afxAlloFactory          = null;
            m_stemMsaFactory          = null;
            m_inflAffMsaFactory       = null;
            m_lexEntryRefFactory      = null;
            m_lexEntryInflTypeFactory = null;

            base.FixtureTeardown();
        }
Ejemplo n.º 8
0
 public override void FixtureSetup()
 {
     base.FixtureSetup();
     m_vernacularWS = Cache.ServiceLocator.WritingSystems.DefaultVernacularWritingSystem;
     m_idleQueue    = new IdleQueue {
         IsPaused = true
     };
     m_filer                   = new ParseFiler(Cache, task => {}, m_idleQueue, Cache.LanguageProject.DefaultParserAgent);
     m_entryFactory            = Cache.ServiceLocator.GetInstance <ILexEntryFactory>();
     m_senseFactory            = Cache.ServiceLocator.GetInstance <ILexSenseFactory>();
     m_stemAlloFactory         = Cache.ServiceLocator.GetInstance <IMoStemAllomorphFactory>();
     m_afxAlloFactory          = Cache.ServiceLocator.GetInstance <IMoAffixAllomorphFactory>();
     m_stemMsaFactory          = Cache.ServiceLocator.GetInstance <IMoStemMsaFactory>();
     m_inflAffMsaFactory       = Cache.ServiceLocator.GetInstance <IMoInflAffMsaFactory>();
     m_lexEntryRefFactory      = Cache.ServiceLocator.GetInstance <ILexEntryRefFactory>();
     m_lexEntryInflTypeFactory = Cache.ServiceLocator.GetInstance <ILexEntryInflTypeFactory>();
 }
Ejemplo n.º 9
0
		/// -----------------------------------------------------------------------------------
		/// <summary>
		/// Initializes a new instance of the <see cref="ParserWorker"/> class.
		/// </summary>
		/// -----------------------------------------------------------------------------------
		public ParserWorker(FdoCache cache, Action<TaskReport> taskUpdateHandler, IdleQueue idleQueue, string dataDir)
		{
			m_cache = cache;
			m_taskUpdateHandler = taskUpdateHandler;
			ICmAgent agent;
			switch (m_cache.LanguageProject.MorphologicalDataOA.ActiveParser)
			{
				case "XAmple":
					m_parser = new XAmpleParser(cache, dataDir);
					agent = cache.ServiceLocator.GetInstance<ICmAgentRepository>().GetObject(CmAgentTags.kguidAgentXAmpleParser);
					break;
				case "HC":
					m_parser = new HCParser(cache, dataDir);
					agent = cache.ServiceLocator.GetInstance<ICmAgentRepository>().GetObject(CmAgentTags.kguidAgentHermitCrabParser);
					break;
				default:
					throw new InvalidOperationException("The language project is set to use an unrecognized parser.");
			}
			m_parseFiler = new ParseFiler(cache, taskUpdateHandler, idleQueue, agent);
		}
Ejemplo n.º 10
0
        private void WriteXml()
        {
            var xe = new XElement("Settings",
                                  new XElement("SessionId", SessionId),
                                  new XElement("SteamLogin", SteamLogin),
                                  new XElement("SteamLoginSecure", SteamLoginSecure),
                                  new XElement("SteamProfileUrl", SteamProfileUrl),
                                  new XElement("SteamParental", SteamParental),
                                  new XElement("SteamRememberLogin", SteamRememberLogin),
                                  new XElement("MachineAuth", MachineAuth),
                                  new XElement("IgnoreClient", IgnoreClient),
                                  new XElement("SteamAvatarUrl", SteamAvatarUrl),
                                  new XElement("SteamBackgroundUrl", SteamBackgroundUrl),
                                  new XElement("SteamUserName", SteamUserName),
                                  new XElement("SteamLevel", SteamLevel),
                                  new XElement("CustomBackgroundUrl", CustomBackgroundUrl),
                                  new XElement("SteamBadgeUrl", SteamBadgeUrl),
                                  new XElement("SteamBadgeTitle", SteamBadgeTitle),
                                  new XElement("BadgeFilter", BadgeFilter),
                                  new XElement("ShowcaseFilter", ShowcaseFilter),
                                  new XElement("IdleMode", IdleMode),
                                  new XElement("MaxIdleProcessCount", MaxIdleProcessCount),
                                  new XElement("PeriodicSwitchRepeatCount", PeriodicSwitchRepeatCount),
                                  new XElement("TrialPeriod", TrialPeriod),
                                  new XElement("SwitchMinutes", SwitchMinutes),
                                  new XElement("SwitchSeconds", SwitchSeconds),
                                  new XElement("AllowShowcaseSync", AllowShowcaseSync),
                                  new XElement("ShowInTaskbar", ShowInTaskbar),
                                  new XElement("ShowBackground", ShowBackground),
                                  new XElement("Dimensions", Dimensions),
                                  new XElement("PricesCatalogDate", PricesCatalogDate),
                                  new XElement("IdleQueue", String.Join(",", IdleQueue.Cast <string>())),
                                  new XElement("Blacklist", String.Join(",", Blacklist.Cast <string>())),
                                  new XElement("ShowcaseBookmarks", String.Join(",", ShowcaseBookmarks.Cast <string>())),
                                  new XElement("Games", String.Join(",", Games.Cast <string>())),
                                  new XElement("AppBrushes", String.Join(",", AppBrushes.Cast <string>()))
                                  );

            WriteContent(xe.ToString());
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ParseFiler"/> class.
        /// </summary>
        /// <param name="cache">The cache.</param>
        /// <param name="taskUpdateHandler">The task update handler.</param>
        /// <param name="idleQueue">The idle queue.</param>
        /// <param name="parserAgent">The parser agent.</param>
        public ParseFiler(LcmCache cache, Action <TaskReport> taskUpdateHandler, IdleQueue idleQueue, ICmAgent parserAgent)
        {
            Debug.Assert(cache != null);
            Debug.Assert(taskUpdateHandler != null);
            Debug.Assert(idleQueue != null);
            Debug.Assert(parserAgent != null);

            m_cache             = cache;
            m_taskUpdateHandler = taskUpdateHandler;
            m_idleQueue         = idleQueue;
            m_parserAgent       = parserAgent;
            m_workQueue         = new Queue <WordformUpdateWork>();
            m_syncRoot          = new object();

            ILcmServiceLocator servLoc = cache.ServiceLocator;

            m_analysisFactory          = servLoc.GetInstance <IWfiAnalysisFactory>();
            m_mbFactory                = servLoc.GetInstance <IWfiMorphBundleFactory>();
            m_baseAnnotationRepository = servLoc.GetInstance <ICmBaseAnnotationRepository>();
            m_baseAnnotationFactory    = servLoc.GetInstance <ICmBaseAnnotationFactory>();
            m_userAgent                = m_cache.LanguageProject.DefaultUserAgent;
        }
Ejemplo n.º 12
0
        /// -----------------------------------------------------------------------------------
        /// <summary>
        /// Initializes a new instance of the <see cref="ParserWorker"/> class.
        /// </summary>
        /// -----------------------------------------------------------------------------------
        public ParserWorker(FdoCache cache, Action <TaskReport> taskUpdateHandler, IdleQueue idleQueue, string dataDir)
        {
            m_cache             = cache;
            m_taskUpdateHandler = taskUpdateHandler;
            ICmAgent agent;

            switch (m_cache.LanguageProject.MorphologicalDataOA.ActiveParser)
            {
            case "XAmple":
                m_parser = new XAmpleParser(cache, dataDir);
                agent    = cache.ServiceLocator.GetInstance <ICmAgentRepository>().GetObject(CmAgentTags.kguidAgentXAmpleParser);
                break;

            case "HC":
                m_parser = new HCParser(cache);
                agent    = cache.ServiceLocator.GetInstance <ICmAgentRepository>().GetObject(CmAgentTags.kguidAgentHermitCrabParser);
                break;

            default:
                throw new InvalidOperationException("The language project is set to use an unrecognized parser.");
            }
            m_parseFiler = new ParseFiler(cache, taskUpdateHandler, idleQueue, agent);
        }
Ejemplo n.º 13
0
 /// -----------------------------------------------------------------------------------
 /// <summary>
 /// Initializes a new instance of the <see cref="ParserWorker"/> class.
 /// </summary>
 /// -----------------------------------------------------------------------------------
 protected ParserWorker(FdoCache cache, Action <TaskReport> taskUpdateHandler, IdleQueue idleQueue, ICmAgent agent)
 {
     m_cache             = cache;
     m_taskUpdateHandler = taskUpdateHandler;
     m_parseFiler        = new ParseFiler(cache, taskUpdateHandler, idleQueue, agent);
     m_projectName       = cache.ProjectId.Name;
     m_retriever         = new M3ParserModelRetriever(m_cache, m_taskUpdateHandler);
     Trace.WriteLineIf(m_tracingSwitch.TraceInfo, "ParserWorker(): CurrentThreadId = " + Win32.GetCurrentThreadId());
 }
Ejemplo n.º 14
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ParserConnection"/> class.
 /// This will attempt to connect to an existing parser or start a new one if necessary.
 /// </summary>
 public ParserConnection(LcmCache cache, IdleQueue idleQueue)
 {
     m_activity  = "";
     m_scheduler = new ParserScheduler(cache, idleQueue, Path.Combine(FwDirectoryFinder.CodeDirectory, FwDirectoryFinder.ksFlexFolderName));
     m_scheduler.ParserUpdateVerbose += ParserUpdateHandlerForPolling;
 }
Ejemplo n.º 15
0
		/// -----------------------------------------------------------------------------------
		/// <summary>
		/// Initializes a new instance of the <see cref="ParserScheduler"/> class.
		/// </summary>
		/// -----------------------------------------------------------------------------------
		public ParserScheduler(FdoCache cache, IdleQueue idleQueue, string dataDir)
		{
			m_parserWorker = new ParserWorker(cache, HandleTaskUpdate, idleQueue, dataDir);
			m_parserWorker.ParseFiler.WordformUpdated += ParseFiler_WordformUpdated;

			m_thread = new ConsumerThread<ParserPriority, ParserWork>(Work) {IsBackground = true};
			ReloadGrammarAndLexicon();
			m_thread.Start();
		}
Ejemplo n.º 16
0
		public override void FixtureTeardown()
		{
			m_vernacularWS = null;
			m_filer = null;
			m_idleQueue.Dispose();
			m_idleQueue = null;
			m_entryFactory = null;
			m_senseFactory = null;
			m_stemAlloFactory = null;
			m_afxAlloFactory = null;
			m_stemMsaFactory = null;
			m_inflAffMsaFactory = null;
			m_lexEntryRefFactory = null;
			m_lexEntryInflTypeFactory = null;

			base.FixtureTeardown();
		}
Ejemplo n.º 17
0
		public override void FixtureSetup()
		{
			base.FixtureSetup();
			m_vernacularWS = Cache.ServiceLocator.WritingSystems.DefaultVernacularWritingSystem;
			m_idleQueue = new IdleQueue {IsPaused = true};
			m_filer = new ParseFiler(Cache, task => {}, m_idleQueue, Cache.LanguageProject.DefaultParserAgent);
			m_entryFactory = Cache.ServiceLocator.GetInstance<ILexEntryFactory>();
			m_senseFactory = Cache.ServiceLocator.GetInstance<ILexSenseFactory>();
			m_stemAlloFactory = Cache.ServiceLocator.GetInstance<IMoStemAllomorphFactory>();
			m_afxAlloFactory = Cache.ServiceLocator.GetInstance<IMoAffixAllomorphFactory>();
			m_stemMsaFactory = Cache.ServiceLocator.GetInstance<IMoStemMsaFactory>();
			m_inflAffMsaFactory = Cache.ServiceLocator.GetInstance<IMoInflAffMsaFactory>();
			m_lexEntryRefFactory = Cache.ServiceLocator.GetInstance<ILexEntryRefFactory>();
			m_lexEntryInflTypeFactory = Cache.ServiceLocator.GetInstance<ILexEntryInflTypeFactory>();
		}
Ejemplo n.º 18
0
		/// <summary>
		/// Initializes a new instance of the <see cref="ParserConnection"/> class.
		/// This will attempt to connect to an existing parser or start a new one if necessary.
		/// </summary>
		public ParserConnection(FdoCache cache, IdleQueue idleQueue)
		{
			m_activity = "";
			m_scheduler = new ParserScheduler(cache, idleQueue, Path.Combine(FwDirectoryFinder.CodeDirectory, FwDirectoryFinder.ksFlexFolderName));
			m_scheduler.ParserUpdateVerbose += ParserUpdateHandlerForPolling;
		}
Ejemplo n.º 19
0
 public XAmpleParserWorker(FdoCache cache, Action <TaskReport> taskUpdateHandler, IdleQueue idleQueue)
     : base(cache, taskUpdateHandler, idleQueue,
            cache.ServiceLocator.GetInstance <ICmAgentRepository>().GetObject(CmAgentTags.kguidAgentXAmpleParser))
 {
     m_xample = new XAmpleWrapper();
     m_xample.Init(DirectoryFinder.FWCodeDirectory);
 }
Ejemplo n.º 20
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ParserConnection"/> class.
 /// This will attempt to connect to an existing parser or start a new one if necessary.
 /// </summary>
 public ParserConnection(FdoCache cache, IdleQueue idleQueue)
 {
     m_activity  = "";
     m_scheduler = new ParserScheduler(cache, idleQueue);
     m_scheduler.ParserUpdateVerbose += ParserUpdateHandlerForPolling;
 }
Ejemplo n.º 21
0
 public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
 {
     IdleQueue.QueueWorker(Fw);
     return(Result.Succeeded);
 }
Ejemplo n.º 22
0
		/// <summary>
		/// Initializes a new instance of the <see cref="ParseFiler"/> class.
		/// </summary>
		/// <param name="cache">The cache.</param>
		/// <param name="taskUpdateHandler">The task update handler.</param>
		/// <param name="idleQueue">The idle queue.</param>
		/// <param name="parserAgent">The parser agent.</param>
		public ParseFiler(FdoCache cache, Action<TaskReport> taskUpdateHandler, IdleQueue idleQueue, ICmAgent parserAgent)
		{
			Debug.Assert(cache != null);
			Debug.Assert(taskUpdateHandler != null);
			Debug.Assert(idleQueue != null);
			Debug.Assert(parserAgent != null);

			m_cache = cache;
			m_taskUpdateHandler = taskUpdateHandler;
			m_idleQueue = idleQueue;
			m_parserAgent = parserAgent;
			m_workQueue = new Queue<WordformUpdateWork>();
			m_syncRoot = new object();

			IFdoServiceLocator servLoc = cache.ServiceLocator;
			m_analysisFactory = servLoc.GetInstance<IWfiAnalysisFactory>();
			m_mbFactory = servLoc.GetInstance<IWfiMorphBundleFactory>();
			m_baseAnnotationRepository = servLoc.GetInstance<ICmBaseAnnotationRepository>();
			m_baseAnnotationFactory = servLoc.GetInstance<ICmBaseAnnotationFactory>();
			m_userAgent = m_cache.LanguageProject.DefaultUserAgent;
		}