public Tuple<IndivDescs, Exception> GetDataSetIndivs(StatDataSet oSet) { if (oSet == null) { return new Tuple<IndivDescs, Exception>(null, new ArgumentNullException()); } IndivDescs oRet = null; Exception err = null; try { using (var ctx = getContext()) { DbDataSet pSet = findDataSet(ctx, oSet); if (pSet == null) { return new Tuple<IndivDescs, Exception>(oRet, err); } DbVariable pIdVar = null; DbVariable pNameVar = null; DbVariable pImageVar = null; var q = from x in pSet.Variables select x; foreach (var v in q) { if (v.IsId) { pIdVar = v; } if (v.IsName) { pNameVar = v; } if (v.IsImageVar) { pImageVar = v; } }// v bool bImageInt = false; if (pImageVar != null) { String s = pImageVar.VarType.Trim().ToLower(); if ((s != "string") && (s != "bool")) { bImageInt = true; } } List<IndivDesc> oList = new List<IndivDesc>(); var indexes = (from x in ctx.DbValues where x.Variable.DataSetId == pSet.Id select x.Index).Distinct(); foreach (var ind in indexes) { IndivDesc pp = new IndivDesc(); pp.IndivIndex = ind; if (pIdVar != null) { var qx = from x in ctx.DbValues where (x.VariableId == pIdVar.Id) && (x.Index == ind) select x; if (qx.Count() > 0) { pp.IdString = qx.First().Value; } }// Id if (pNameVar != null) { var qx = from x in ctx.DbValues where (x.VariableId == pNameVar.Id) && (x.Index == ind) select x; if (qx.Count() > 0) { pp.Name = qx.First().Value; } }// name if (pImageVar != null) { var qx = from x in ctx.DbValues where (x.VariableId == pImageVar.Id) && (x.Index == ind) select x; if (qx.Count() > 0) { var px = qx.First(); String sx = StatHelpers.ConvertValue(px.Value); if (!String.IsNullOrEmpty(sx)) { if (bImageInt) { double dval = 0.0; if (double.TryParse(sx, out dval)) { int ival = (int)dval; if (ival != 0) { var qz = from x in ctx.DbPhotoes where x.Id == ival select x; if (qz.Count() > 0) { var pz = qz.First(); pp.PhotoId = pz.Id; pp.PhotoData = pz.DataBytes; } }// ival } } else { var qz = from x in ctx.DbPhotoes where x.Name.Trim().ToLower() == sx.ToLower() select x; if (qz.Count() > 0) { var pz = qz.First(); pp.PhotoId = pz.Id; pp.PhotoData = pz.DataBytes; } }// ival }// sx } }// photo ValueDescs vv = new ValueDescs(); var qq = from x in ctx.DbValues where (x.Variable.DataSetId == pSet.Id) && (x.Index == ind) select x; foreach (var v in qq) { ValueDesc fx = new ValueDesc(); convertValue(v, fx); vv.Add(fx); }// v pp.Values = vv; oList.Add(pp); }// ind if (oList.Count > 1) { oList.Sort(); } oRet = new IndivDescs(oList); }// ctx }// try catch (Exception ex) { err = ex; } return new Tuple<IndivDescs, Exception>(oRet, err); }
public Tuple<IndivDescs, VariableDescs, Exception> FetchAllDataSetData(StatDataSet oSet) { IndivDescs indivs = null; VariableDescs vars = null; Exception err = null; try { using (var ctx = getContext()) { DbDataSet pSet = findDataSet(ctx, oSet); if (pSet == null) { return new Tuple<IndivDescs, VariableDescs, Exception>(indivs, vars, err); } DbVariable pIdVar = null; DbVariable pNameVar = null; DbVariable pImageVar = null; var q = from x in pSet.Variables orderby x.Name select x; foreach (var v in q) { if (v.IsId) { pIdVar = v; } if (v.IsName) { pNameVar = v; } if (v.IsImageVar) { pImageVar = v; } }// v bool bImageInt = false; if (pImageVar != null) { String s = pImageVar.VarType.Trim().ToLower(); if ((s != "string") && (s != "bool")) { bImageInt = true; } } List<VariableDesc> oRet = new List<VariableDesc>(); HashSet<int> oSetIndex = new HashSet<int>(); List<IndivDesc> listIndivs = new List<IndivDesc>(); Dictionary<int, ValueDescs> vals = new Dictionary<int, ValueDescs>(); foreach (var p in q) { VariableDesc pp = new VariableDesc(); convertVariable(p, pp); var col = p.Values; List<ValueDesc> pList = new List<ValueDesc>(); foreach (var v in col) { int index = v.Index; if (index >= 0) { ValueDesc vv = new ValueDesc(); convertValue(v, vv); pList.Add(vv); if (!vals.ContainsKey(index)) { vals[index] = new ValueDescs(); } (vals[index]).Add(vv); if (!oSetIndex.Contains(index)) { oSetIndex.Add(index); var ind = new IndivDesc(); listIndivs.Add(ind); ind.IndivIndex = index; if (pIdVar != null) { var qx = from x in pIdVar.Values where x.Index == index select x; if (qx.Count() > 0) { ind.IdString = qx.First().Value; } }// Id if (pNameVar != null) { var qx = from x in pNameVar.Values where x.Index == index select x; if (qx.Count() > 0) { ind.Name = qx.First().Value; } }// name if (pImageVar != null) { var qx = from x in pImageVar.Values where x.Index == index select x; if (qx.Count() > 0) { var px = qx.First(); String sx = StatHelpers.ConvertValue(px.Value); if (!String.IsNullOrEmpty(sx)) { if (bImageInt) { double dval = 0.0; if (double.TryParse(sx, out dval)) { int ival = (int)dval; if (ival != 0) { var qz = from x in ctx.DbPhotoes where x.Id == ival select x; if (qz.Count() > 0) { var pz = qz.First(); ind.PhotoId = pz.Id; ind.PhotoData = pz.DataBytes; } }// ival } } else { var qz = from x in ctx.DbPhotoes where x.Name.Trim().ToLower() == sx.ToLower() select x; if (qz.Count() > 0) { var pz = qz.First(); ind.PhotoId = pz.Id; ind.PhotoData = pz.DataBytes; } }// ival }// sx } }// photo }// add value }// v }// v var xx = getVariableInfo(ctx, pp); if (xx.Item2 != null) { return new Tuple<IndivDescs, VariableDescs, Exception>(indivs, vars, err); } pp.Info = xx.Item1; pp.Values = new ValueDescs(pList); oRet.Add(pp); }// p foreach (var ind in listIndivs) { int index = ind.IndivIndex; if (vals.ContainsKey(index)) { ind.Values = vals[index]; } }// ind if (listIndivs.Count > 1) { listIndivs.Sort(); } if (oRet.Count > 1) { oRet.Sort(); } indivs = new IndivDescs(listIndivs); vars = new VariableDescs(oRet); }// ctx }// try catch (Exception ex) { err = ex; } return new Tuple<IndivDescs, VariableDescs, Exception>(indivs, vars, err); }
public Dictionary<VariableDesc, ValueDescs> GetCommonValues(IEnumerable<VariableDesc> oVars) { Dictionary<VariableDesc, ValueDescs> oRet = new Dictionary<VariableDesc, ValueDescs>(); if (oVars != null) { var indexes = GetCommonIndexes(oVars); if (indexes == null) { return oRet; } foreach (var v in oVars) { if (v != null) { ValueDescs src = v.Values; List<ValueDesc> vals = new List<ValueDesc>(); foreach (var ind in indexes) { var q = from x in src where x.Index == ind select x; if (q.Count() > 0) { vals.Add(q.First()); } }// ind if (vals.Count < 1) { continue; } oRet[v] = new ValueDescs(vals); }// v }// v }// oVars return oRet; }
public Dictionary<String, ValueDescs> ComputeVariableCategValues(VariableDesc oCateg, VariableDesc oVar) { Dictionary<String, ValueDescs> oRet = new Dictionary<string, ValueDescs>(); ValueDescs categVals = oCateg.Values; ValueDescs dataVals = oVar.Values; if (categVals.Count < 1) { oRet[DEFAULT_SERIE_NAME] = dataVals; } else { foreach (var vcateg in categVals) { String skey = StatHelpers.ConvertValue(vcateg.DataStringValue); if (!String.IsNullOrEmpty(skey)) { var q = from x in dataVals where x.Index == vcateg.Index select x; if (q.Count() > 0) { var vdata = q.First(); String sval = StatHelpers.ConvertValue(vdata.DataStringValue); if (!String.IsNullOrEmpty(sval)) { if (!oRet.ContainsKey(skey)) { oRet[skey] = new ValueDescs(); } oRet[skey].Add(vdata); }// ok } }// sKey }// vcateg } return oRet; }
private Task<Tuple<StatDataSet, Exception>> readDataSet(String filename, sds.DataSet input, CancellationToken cancellationToken, IProgress<int> progress) { return Task.Run<Tuple<StatDataSet, Exception>>(() => { StatDataSet oSet = null; Exception err = null; try { FileInfo info = new FileInfo(filename); oSet = new StatDataSet(); oSet.Name = info.Name; var col = input.Variables; int nTotal = col.Count; int nCur = 0; foreach (var v in col) { if (progress != null) { progress.Report(nCur++); } if (v.Dimensions.Count != 1) { continue; } VariableDesc vv = new VariableDesc(); ValueDescs vals = new ValueDescs(); vv.Name = v.Name; Type t = v.TypeOfData; if (t == typeof(String)) { vv.DataType = "string"; vv.IsCategVar = true; String[] data = input.GetData<String[]>(v.ID); if ((data != null) && (data.Length > 0)) { for (int i = 0; i < data.Length; ++i) { ValueDesc vx = new ValueDesc(); vx.Index = i; vx.DataStringValue = data[i]; vals.Add(vx); }// i }// data } else if (t == typeof(double)) { vv.DataType = "double"; vv.IsCategVar = false; double[] data = input.GetData<double[]>(v.ID); if ((data != null) && (data.Length > 0)) { for (int i = 0; i < data.Length; ++i) { ValueDesc vx = new ValueDesc(); vx.Index = i; String s = Convert.ToString(myconvert(data[i])); vx.DataStringValue = s; vals.Add(vx); }// i }// data } else if (t == typeof(float)) { vv.DataType = "float"; vv.IsCategVar = false; float[] data = input.GetData<float[]>(v.ID); if ((data != null) && (data.Length > 0)) { for (int i = 0; i < data.Length; ++i) { ValueDesc vx = new ValueDesc(); vx.Index = i; String s = Convert.ToString(myconvert(data[i])); vx.DataStringValue = s; vals.Add(vx); }// i }// data } else if (t == typeof(int)) { vv.DataType = "int"; vv.IsCategVar = false; int[] data = input.GetData<int[]>(v.ID); if ((data != null) && (data.Length > 0)) { for (int i = 0; i < data.Length; ++i) { ValueDesc vx = new ValueDesc(); vx.Index = i; String s = Convert.ToString(data[i]); vx.DataStringValue = s; vals.Add(vx); }// i }// data } else if (t == typeof(short)) { vv.DataType = "short"; vv.IsCategVar = false; short[] data = input.GetData<short[]>(v.ID); if ((data != null) && (data.Length > 0)) { for (int i = 0; i < data.Length; ++i) { ValueDesc vx = new ValueDesc(); vx.Index = i; String s = Convert.ToString(data[i]); vx.DataStringValue = s; vals.Add(vx); }// i }// data } else if (t == typeof(bool)) { vv.DataType = "bool"; vv.IsCategVar = true; bool[] data = input.GetData<bool[]>(v.ID); if ((data != null) && (data.Length > 0)) { for (int i = 0; i < data.Length; ++i) { ValueDesc vx = new ValueDesc(); vx.Index = i; String s = Convert.ToString(data[i]); vx.DataStringValue = s; vals.Add(vx); }// i }// data } vv.Values = vals; oSet.Variables.Add(vv); }// v } catch (Exception ex) { err = ex; } return new Tuple<StatDataSet, Exception>(oSet, err); }, cancellationToken); }// readDataSet