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); }
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); } }
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); } } }