Example #1
0
        public async static Task <Consumable> LoadLCISet(string id)
        {
            var task = new Task <Consumable>(() =>
            {
                var m = new XmlSerializer(typeof(TEcoSpold));


                FileInfo file = new FileInfo(Path.Combine(DataDir, id + ".spold"));
                {
                    TEcoSpold ecoSpold = null;
                    try
                    {
                        using (var f = file.OpenRead())
                        {
                            ecoSpold = (TEcoSpold)m.Deserialize(f);
                            f.Close();
                            var activity      = ecoSpold.Items.FirstOrDefault();
                            var referenceFlow = activity.flowData.intermediateExchange.FirstOrDefault(t =>
                                                                                                      (t.Item is TIntermediateExchangeOutputGroup
                                    ? (TIntermediateExchangeOutputGroup)t.Item
                                    : TIntermediateExchangeOutputGroup.Item2)
                                                                                                      == TIntermediateExchangeOutputGroup.Item0);
                            if (referenceFlow == null)
                            {
                                return(null);
                            }
                            decimal convertvalue;
                            var consum = new Consumable()
                            {
                                Name       = referenceFlow.name.First().ToString(),
                                ecospoldId = activity.activityDescription.activity.id,
                                PerUnit    = GetUnit(referenceFlow.unitId, out convertvalue)
                            };

                            var lciset       = new LciSet();
                            lciset.Emissions = new List <Emission>();
                            foreach (var flow in activity.flowData.elementaryExchange)
                            {
                                var e = new Emission();

                                e.SIUnit       = GetUnit(flow.unitId, out convertvalue);
                                e.Value        = (decimal)flow.amount * convertvalue;
                                e.EmissionName = flow.name.ToString();

                                lciset.Emissions.Add(e);
                            }
                            consum.LciSet = lciset;
                            return(consum);
                        }
                    }
                    catch
                    {
                    }
                }
                return(null);
            });

            task.Start();
            return(await task);
        }
Example #2
0
        public static Dictionary <string, string> LoadNewLCIFiles(Stream[] fileStreams)
        {
            lock (running)
            {
                BindingObj.FilesToBeProcessed = fileStreams.Count();

                foreach (var fileInfo in fileStreams)
                {
                    TEcoSpold spold = null;
                    try
                    {
                        var m = new XmlSerializer(typeof(TEcoSpold));
                        spold = (TEcoSpold)m.Deserialize(fileInfo);
                    }
                    catch
                    {
                    }
                    if (spold != null)
                    {
                        var ecoitem = spold.Items.FirstOrDefault();
                        {
                            var referenceFlow = ecoitem.flowData.intermediateExchange.FirstOrDefault(t =>
                                                                                                     (t.Item is TIntermediateExchangeOutputGroup
                                       ? (TIntermediateExchangeOutputGroup)t.Item
                                       : TIntermediateExchangeOutputGroup.Item2)
                                                                                                     == TIntermediateExchangeOutputGroup.Item0);
                            if (referenceFlow != null)
                            {
                                var name = referenceFlow.name.FirstOrDefault().ToString();

                                try
                                {
                                    if (_activityNames.ContainsKey(name))
                                    {
                                        _activityNames[name] = ecoitem.activityDescription.activity.id;
                                    }
                                    else
                                    {
                                        _activityNames.Add(name, ecoitem.activityDescription.activity.id);
                                    }

                                    //Copy to data file
                                    TActivityDataset ecoitem1 = ecoitem;
                                    taskFactory.StartNew(() =>
                                    {
                                        FileInfo file = new FileInfo(Path.Combine(
                                                                         DataDir,
                                                                         ecoitem1.activityDescription.activity
                                                                         .id + ".spold"));
                                        using (var filestream = file.Open(FileMode.Create))
                                        {
                                            var m = new XmlSerializer(typeof(TEcoSpold));
                                            m.Serialize(filestream, spold);
                                            filestream.Close();
                                        }
                                    });
                                }
                                catch { }
                            }
                            BindingObj.FilesProcessed++;
                        }
                    }
                }

                return(_activityNames);
            }
        }
Example #3
0
        public async static void LoadLCINames()
        {
            var m     = new XmlSerializer(typeof(TEcoSpold));
            var dir   = new DirectoryInfo(DataDir);
            var tasks = new List <Task <Pair <string, string> > >();

            BindingObj.FilesToBeProcessed = dir.EnumerateFiles().Count();
            foreach (var fileInfo in dir.EnumerateFiles())
            {
                var info = fileInfo;
                var task = new Task <Pair <string, string> >(() =>
                {
                    TEcoSpold ecospold = null;
                    try
                    {
                        using (var f = info.OpenRead())
                        {
                            ecospold = (TEcoSpold)m.Deserialize(f);
                            f.Close();
                        }

                        if (ecospold != null)
                        {
                            var activity = ecospold.Items.FirstOrDefault();
                            if (activity != null)
                            {
                                var referenceFlow = activity.flowData.intermediateExchange.FirstOrDefault(t =>
                                                                                                          (t.Item is TIntermediateExchangeOutputGroup
                                        ? (TIntermediateExchangeOutputGroup)t.Item
                                        : TIntermediateExchangeOutputGroup.Item2)
                                                                                                          == TIntermediateExchangeOutputGroup.Item0);
                                if (referenceFlow != null)
                                {
                                    string name = referenceFlow.name.FirstOrDefault().ToString();
                                    BindingObj.FilesProcessed++;
                                    if (name != null)
                                    {
                                        return(new Pair <string, string>(name.ToString(),
                                                                         activity.activityDescription.activity.id));
                                    }
                                }
                            }
                        }
                    }
                    catch
                    {
                        return(null);
                    }
                    return(null);
                });
                task.Start();
                tasks.Add(task);
            }
            ;
            _activityNames = new Dictionary <string, string>();
            var results = await Task.WhenAll(tasks);

            foreach (var result in results.Where(t => t != null))
            {
                if (!_activityNames.ContainsKey(result.Key))
                {
                    _activityNames.Add(result.Key, result.Value);
                }
            }
        }