Example #1
0
        private void LoadJsonDataFile()
        {
            const string fileName = "Cubico.UnitData.json";

#if !NETSTANDARD1_4
            var assembly = Assembly.GetExecutingAssembly();
#else
            var assembly = typeof(Cubico.Measurement).GetTypeInfo().Assembly;
#endif

            //var assembly = Assembly.GetExecutingAssembly();
            var stream = assembly.GetManifestResourceStream(fileName);

            if (stream == null)
            {
                throw new InvalidOperationException("Cannot find unit data file " + fileName);
            }

            string json = "";
            using (var reader = new StreamReader(stream, Encoding.UTF8))
            {
                json = reader.ReadToEnd();
            }
            var settings = new JsonSerializerSettings();
            settings.MissingMemberHandling = MissingMemberHandling.Error;
            _jsonObj = JsonConvert.DeserializeObject <Cubico.UnitData.RootObject>(json, settings);
            ProcessUnitConverterData2(_jsonObj);
        }
Example #2
0
        private void ProcessUnitConverterData2(Cubico.UnitData.RootObject RootObject)
        {
            var data = RootObject.UnitConverterData;

            //Load Modifier Data
            _individualModifiers = new Dictionary <int, List <Modifier> >();
            foreach (var itm in data.UnitModifiers.UnitModifier)
            {
                var mod = new Modifier();
                mod.ID           = Convert.ToInt32(itm.ID);
                mod.Value        = Convert.ToDecimal(itm.Value);
                mod.Order        = Convert.ToInt32(itm.Order);
                mod.ModifierType = (ModifierType)Convert.ToInt32(itm.ModifierID);
                mod.UnitSourceID = Convert.ToInt32(itm.UnitSourceID);
                mod.UnitTargetID = Convert.ToInt32(itm.UnitTargetID);

                if (string.IsNullOrWhiteSpace(itm.Precision))
                {
                    mod.Precision = null;
                }
                else
                {
                    mod.Precision = Convert.ToInt32(itm.Precision);
                }


                if (_individualModifiers.ContainsKey(mod.UnitTargetID))
                {
                    var modList = _individualModifiers[mod.UnitTargetID];
                    modList.Add(mod);
                }
                else
                {
                    var modList = new List <Modifier> {
                        mod
                    };
                    _individualModifiers.Add(mod.UnitTargetID, modList);
                }
            }

            //Load Symbol Data
            _symbolLookUp = new Dictionary <int, List <Symbol> >();
            foreach (var itm in data.Symbols.UnitSymbol)
            {
                var sym = new Symbol();
                sym.Id     = Convert.ToInt32(itm.ID);
                sym.Value  = itm.Symbol;
                sym.UnitId = Convert.ToInt32(itm.UnitID);
                int value = Convert.ToInt32(itm.IsDefault);
                if (value == 1)
                {
                    sym.IsDefault = true;
                }
                else
                {
                    sym.IsDefault = false;
                }

                if (_symbolLookUp.ContainsKey(sym.UnitId))
                {
                    var symList = _symbolLookUp[sym.UnitId];
                    symList.Add(sym);
                }
                else
                {
                    var symList = new List <Symbol> {
                        sym
                    };
                    _symbolLookUp.Add(sym.UnitId, symList);
                }
            }

            _units = new Dictionary <string, Unit>();
            foreach (var itm in data.Units.Unit)
            {
                var unit = new Unit();
                unit.ID         = Convert.ToInt32(itm.ID);
                unit.Name       = itm.Name;
                unit.UnitTypeID = Convert.ToInt32(itm.UnitTypeID);

                if (_symbolLookUp.ContainsKey(unit.ID))
                {
                    unit.Symbols = _symbolLookUp[unit.ID];

                    foreach (Symbol sym in unit.Symbols)
                    {
                        sym.Unit = unit;
                    }
                }
                if (_individualModifiers.ContainsKey(unit.ID))
                {
                    unit.Modifiers = _individualModifiers[unit.ID];

                    foreach (Modifier mod in unit.Modifiers)
                    {
                        mod.ParentUnit = unit;
                    }
                }
                _units.Add(unit.Name, unit);
            }

            //Load Unit Types
            _unitTypes = new Dictionary <string, UnitType>();
            foreach (var itm in data.UnitTypes.UnitType)
            {
                var ut = new UnitType();
                ut.ID          = Convert.ToInt32(itm.ID);
                ut.Name        = itm.Name;
                ut.Description = itm.Description;

                // Make this a for loop for speed reasons or use a multikey dictionary.
                var unitData = (from unit in _units.Values
                                where unit.UnitTypeID == ut.ID
                                select unit).ToList();
                ut.Units = unitData;

                foreach (Unit unitItem in ut.Units)
                {
                    unitItem.UnitType = ut;
                }

                _unitTypes.Add(ut.Name, ut);
            }
        }
Example #3
0
        private void LoadJsonDataFile()
        {
            const string fileName = "Cubico.UnitData.json";
            var assembly = Assembly.GetExecutingAssembly();
            var stream = assembly.GetManifestResourceStream(fileName);

            if (stream == null)
            {
                throw new InvalidOperationException("Cannot find unit data file " + fileName);
            }

            string json = "";
            using (var reader = new StreamReader(stream, Encoding.UTF8))
            {
                json = reader.ReadToEnd();
            }
            var settings = new JsonSerializerSettings();
            settings.MissingMemberHandling = MissingMemberHandling.Error;
            _jsonObj = JsonConvert.DeserializeObject<Cubico.UnitData.RootObject>(json, settings);
            ProcessUnitConverterData2(_jsonObj);
        }