Beispiel #1
0
        public IEnumerable <FormNode> LoadSynonyms()
        {
            using (var session = adapter.GetStatelessSession())
            {
                //Load synonyms
                var formSyn = session.Query <NlpFormSynonyms>()
                              .OrderBy(p => p.Name)
                              .Select(s => s.Name)
                              .Distinct()
                              .ToList();

                return(new List <FormNode>(formSyn.Select(s => new FormNode(s))));
            }
        }
Beispiel #2
0
        public IEnumerable <UnitNode> LoadSynonyms()
        {
            using (var session = adapter.GetStatelessSession())
            {
                //Load synonyms
                var unitSyn = session.Query <NlpUnitSynonyms>()
                              .OrderBy(p => p.Name)
                              .Select(p => p.Name)
                              .Distinct()
                              .ToList();

                return(new List <CustomUnitNode>(unitSyn.Select(s => new CustomUnitNode(s))));
            }
        }
Beispiel #3
0
        public IEnumerable <PrepNode> LoadSynonyms()
        {
            using (var session = adapter.GetStatelessSession())
            {
                var forms = session.QueryOver <NlpFormSynonyms>().Select(p => p.Name).List <String>();
                var preps = session.QueryOver <NlpPrepNotes>().Select(p => p.Name).List <String>();

                var ret = forms
                          .Concat(preps)
                          .Distinct()
                          .Select(p => new PrepNode(p))
                          .ToList();

                return(ret);
            }
        }
Beispiel #4
0
        public IEnumerable <AnomalousNode> LoadSynonyms()
        {
            using (var session = adapter.GetStatelessSession())
            {
                var anomalies = session.QueryOver <NlpAnomalousIngredients>()
                                .Fetch(prop => prop.Ingredient).Eager()
                                .Fetch(prop => prop.WeightForm).Eager()
                                .Fetch(prop => prop.VolumeForm).Eager()
                                .Fetch(prop => prop.UnitForm).Eager()
                                .List();

                var ret = new List <AnomalousNode>();

                foreach (var anon in anomalies)
                {
                    var name    = anon.Name;
                    var ing     = anon.Ingredient.IngredientId;
                    var ingName = anon.Ingredient.DisplayName;

                    IngredientForm weightForm = null, volumeForm = null, unitForm = null;
                    if (anon.WeightForm != null)
                    {
                        weightForm = new IngredientForm(
                            anon.WeightForm.IngredientFormId,
                            ing,
                            anon.WeightForm.UnitType,
                            anon.WeightForm.FormDisplayName,
                            anon.WeightForm.UnitName,
                            anon.WeightForm.ConvMultiplier,
                            new Amount(anon.WeightForm.FormAmount, anon.WeightForm.FormUnit));
                    }

                    if (anon.VolumeForm != null)
                    {
                        volumeForm = new IngredientForm(
                            anon.VolumeForm.IngredientFormId,
                            ing,
                            anon.VolumeForm.UnitType,
                            anon.VolumeForm.FormDisplayName,
                            anon.VolumeForm.UnitName,
                            anon.VolumeForm.ConvMultiplier,
                            new Amount(anon.VolumeForm.FormAmount, anon.VolumeForm.FormUnit));
                    }

                    if (anon.UnitForm != null)
                    {
                        unitForm = new IngredientForm(
                            anon.UnitForm.IngredientFormId,
                            ing,
                            anon.UnitForm.UnitType,
                            anon.UnitForm.FormDisplayName,
                            anon.UnitForm.UnitName,
                            anon.UnitForm.ConvMultiplier,
                            new Amount(anon.UnitForm.FormAmount, anon.UnitForm.FormUnit));
                    }

                    var pairings = new DefaultPairings()
                    {
                        Weight = weightForm, Volume = volumeForm, Unit = unitForm
                    };
                    var ingNode = new AnomalousIngredientNode(ing, ingName, UnitType.Unit, 0, pairings); //TODO: Must load conv type and unit weight
                    ret.Add(new AnomalousNode(name, ingNode));
                }

                return(ret);
            }
        }
        public IEnumerable <IngredientNode> LoadSynonyms()
        {
            using (var session = adapter.GetStatelessSession())
            {
                var nodes = new Dictionary <Guid, IngredientNode>();

                var ingsForNlp = session.QueryOver <Models.Ingredients>().List();
                var pairingMap = session.QueryOver <NlpDefaultPairings>()
                                 .Fetch(prop => prop.WeightForm).Eager()
                                 .Fetch(prop => prop.VolumeForm).Eager()
                                 .Fetch(prop => prop.UnitForm).Eager()
                                 .List()
                                 .ToDictionary(p => p.Ingredient.IngredientId);

                foreach (var ing in ingsForNlp)
                {
                    var    ingId      = ing.IngredientId;
                    var    name       = ing.DisplayName;
                    var    convType   = ing.ConversionType;
                    Weight unitWeight = ing.UnitWeight;
                    var    pairings   = new DefaultPairings();

                    NlpDefaultPairings defaultPairing;
                    if (pairingMap.TryGetValue(ingId, out defaultPairing))
                    {
                        if (defaultPairing.WeightForm != null)
                        {
                            var wfAmount = new Amount(defaultPairing.WeightForm.FormAmount, defaultPairing.WeightForm.FormUnit);
                            pairings.Weight = new IngredientForm(defaultPairing.WeightForm.IngredientFormId, ingId, Units.Ounce, null, null, defaultPairing.WeightForm.ConvMultiplier, wfAmount);
                        }

                        if (defaultPairing.VolumeForm != null)
                        {
                            var vfAmount = new Amount(defaultPairing.VolumeForm.FormAmount, defaultPairing.VolumeForm.FormUnit);
                            pairings.Volume = new IngredientForm(defaultPairing.VolumeForm.IngredientFormId, ingId, Units.Cup, null, null, defaultPairing.VolumeForm.ConvMultiplier, vfAmount);
                        }

                        if (defaultPairing.UnitForm != null)
                        {
                            var ufAmount = new Amount(defaultPairing.UnitForm.FormAmount, defaultPairing.UnitForm.FormUnit);
                            pairings.Unit = new IngredientForm(defaultPairing.UnitForm.IngredientFormId, ingId, Units.Unit, null, null, defaultPairing.UnitForm.ConvMultiplier, ufAmount);
                        }
                    }

                    if (nodes.ContainsKey(ingId))
                    {
                        Parser.Log.ErrorFormat("[NLP Loader] Duplicate ingredient key due to bad DB data: {0} ({1})", name, ingId);
                    }
                    else
                    {
                        nodes.Add(ingId, new IngredientNode(ingId, name, convType, unitWeight, pairings));
                    }
                }

                //Load synonyms
                var ingSynonyms = session.QueryOver <NlpIngredientSynonyms>().List();

                var ret = new List <IngredientNode>();
                foreach (var syn in ingSynonyms)
                {
                    var ingId    = syn.Ingredient.IngredientId;
                    var alias    = syn.Alias;
                    var prepnote = syn.Prepnote;

                    IngredientNode node;
                    if (nodes.TryGetValue(ingId, out node)) //TODO: If this fails, maybe throw an exception?
                    {
                        ret.Add(new IngredientNode(node, alias, prepnote));
                    }
                }

                ret.AddRange(nodes.Values);

                return(ret);
            }
        }