Example #1
0
        /// <summary>
        /// Initializes the context and loads necessary data into memory through the configured database adapter.
        /// This must be done before the context is usable.
        /// </summary>
        public virtual void Initialize()
        {
            if (Adapter == null)
            {
                throw new InvalidConfigurationException("DBContext requires a configured database adapter.  Please check your configuration.");
            }

            // Initiaze NHibernate session
            Adapter.Initialize(this);

            new Thread(delegate()
            {
                using (InitLock.WriteLock())
                {
                    // Initialize ingredient parser
                    ingParser           = new IngredientParser();
                    var ingredientIndex = Adapter.LoadIngredientsForIndex();
                    ingParser.CreateIndex(ingredientIndex);

                    // Initialize modeler
                    modeler = new ModelerProxy(this);
                    modeler.LoadSnapshot();

                    // Initialize natural language parsing
                    IngredientSynonyms.InitIndex(Adapter.IngredientLoader);
                    UnitSynonyms.InitIndex(Adapter.UnitLoader);
                    FormSynonyms.InitIndex(Adapter.FormLoader);
                    PrepNotes.InitIndex(Adapter.PrepLoader);
                    Anomalies.InitIndex(Adapter.AnomalyLoader);
                    NumericVocab.InitIndex();

                    parser = new Parser();
                    LoadTemplates();
                }
            }).Start();

            Thread.Sleep(500); // Provides time for initialize thread to start and acquire InitLock
        }
Example #2
0
        public void Setup()
        {
            //Initialize all the maps
            Trace.Write("Initializing NLP Grammar maps... ");

            IngredientSynonyms.InitIndex(new TestIngredientLoader());
            UnitSynonyms.InitIndex(new TestUnitLoader());
            FormSynonyms.InitIndex(new TestFormLoader());
            PrepNotes.InitIndex(new TestPrepLoader());
            NumericVocab.InitIndex();

            //Load parse templates
            parser = new Parser();
            Trace.Write("Loading parse templates... ");

            parser.LoadTemplates(
                "[ING]: [AMT] [UNIT]",                  //cheddar cheese: 5 cups
                "[AMT] [UNIT] [FORM] [ING]",            //5 cups melted cheddar cheese
                "[AMT] [UNIT] [ING]",                   //5 cups cheddar cheese
                "[AMT] [UNIT] of [ING]",                //5 cups of cheddar cheese
                "[AMT] [UNIT] of [FORM] [ING]",         //two cups of shredded cheddar cheese
                "[AMT] [ING]",                          //5 eggs
                "[ING]: [AMT]",                         //eggs: 5
                "[FORM] [ING]: [AMT]",                  //shredded cheddar cheese: 1 cup
                "[FORM] [ING]: [AMT] [UNIT]",           //shredded cheddar cheese: 1 cup

                "[ING]: [AMT] [UNIT], [PREP]",          //cheddar cheese: 5 cups
                "[AMT] [UNIT] [FORM] [ING], [PREP]",    //5 cups melted cheddar cheese
                "[AMT] [UNIT] [ING], [PREP]",           //5 cups cheddar cheese
                "[AMT] [UNIT] of [ING], [PREP]",        //5 cups of cheddar cheese
                "[AMT] [UNIT] of [FORM] [ING], [PREP]", //two cups of shredded cheddar cheese
                "[AMT] [ING], [PREP]",                  //5 eggs
                "[ING]: [AMT], [PREP]",                 //eggs: 5
                "[FORM] [ING]: [AMT], [PREP]",          //shredded cheddar cheese: 1 cup
                "[FORM] [ING]: [AMT] [UNIT], [PREP]"    //shredded cheddar cheese: 1 cup
                );
        }