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