protected Tuple<Dictionary<VariableDesc, Dictionary<int, ValueDesc>>, Exception> readValues(statdataEntities ctx, IEnumerable<VariableDesc> oVars, IEnumerable<int> oIndexes) { Dictionary<VariableDesc, Dictionary<int, ValueDesc>> oDictRet = null; Exception err = null; if ((oVars == null) || (oIndexes == null)) { return new Tuple<Dictionary<VariableDesc, Dictionary<int, ValueDesc>>, Exception>(null, new ArgumentNullException()); } try { oDictRet = new Dictionary<VariableDesc, Dictionary<int, ValueDesc>>(); foreach (var oVar in oVars) { DbVariable pVar = findVariable(ctx, oVar); if (pVar == null) { return new Tuple<Dictionary<VariableDesc, Dictionary<int, ValueDesc>>, Exception>(null, new ArgumentException()); } var curDict = new Dictionary<int, ValueDesc>(); foreach (var ind in oIndexes) { if (ind >= 0) { var qq = from x in pVar.Values where x.Index == ind select x; if (qq.Count() > 0) { var v = qq.First(); var vv = new ValueDesc(); convertValue(v, vv); curDict[ind] = vv; } }// ind }// ind oDictRet[oVar] = curDict; }// oVar } catch (Exception ex) { err = ex; } return new Tuple<Dictionary<VariableDesc, Dictionary<int, ValueDesc>>, Exception>(oDictRet, err); }
protected bool writeValues(statdataEntities ctx, IEnumerable<ValueDesc> oVals) { bool bRet = false; foreach (var val in oVals) { if (val != null) { int nId = val.Id; int index = val.Index; int nVarId = val.VariableId; String sval = StatHelpers.ConvertValue(val.DataStringValue); DbValue pVal = null; if (nId != 0) { var q = from x in ctx.DbValues where x.Id == nId select x; if (q.Count() > 0) { pVal = q.First(); pVal.Value = sval; bRet = true; } } if (pVal == null) { var q = from x in ctx.DbValues where (x.VariableId == nVarId) && (x.Index == index) select x; if (q.Count() > 0) { pVal = q.First(); pVal.Value = sval; bRet = true; } } if (pVal == null) { pVal = new DbValue(); pVal.Id = nextId(ctx, TAB_VALEUR); pVal.VariableId = nVarId; pVal.Index = index; pVal.Value = sval; ctx.DbValues.Add(pVal); bRet = true; } }// val }// val return bRet; }
protected Tuple<Dictionary<string, List<ValueDesc>>, Exception> readCategValues(statdataEntities ctx, VariableDesc oCategVar, VariableDesc oDataVar) { Exception err = null; Dictionary<String, List<ValueDesc>> xRet = null; if ((oCategVar == null) || (oDataVar == null)) { return new Tuple<Dictionary<string, List<ValueDesc>>, Exception>(null, new ArgumentNullException()); } try { DbVariable pCategVar = findVariable(ctx, oCategVar); DbVariable pDataVar = findVariable(ctx, oDataVar); if ((pCategVar == null) || (pDataVar == null)) { return new Tuple<Dictionary<string, List<ValueDesc>>, Exception>(null, new ArgumentException()); } xRet = new Dictionary<string, List<ValueDesc>>(); var qcateg = from x in ctx.DbValues where x.VariableId == pCategVar.Id select x; foreach (var vcateg in qcateg) { int index = vcateg.Index; String scateg = StatHelpers.ConvertValue(vcateg.Value); if ((index >= 0) && (!String.IsNullOrEmpty(scateg))) { var qdata = from x in ctx.DbValues where (x.VariableId == pDataVar.Id) && (x.Index == index) select x; foreach (var vdata in qdata) { String sdata = StatHelpers.ConvertValue(vdata.Value); if (!String.IsNullOrEmpty(sdata)) { ValueDesc vv = new ValueDesc(); convertValue(vdata, vv); if (!xRet.ContainsKey(scateg)) { List<ValueDesc> ll = new List<ValueDesc>(); ll.Add(vv); xRet[scateg] = ll; } else { (xRet[scateg]).Add(vv); } }// sdata }// vdata }// vcateg }// vcateg } catch (Exception ex) { err = ex; } return new Tuple<Dictionary<string, List<ValueDesc>>, Exception>(xRet, err); }
protected Tuple<Dictionary<string, Dictionary<VariableDesc, List<ValueDesc>>>, Exception> readCategValues(statdataEntities ctx, VariableDesc oCategVar, IEnumerable<VariableDesc> oDataVars) { if ((oCategVar == null) || (oDataVars == null)) { return new Tuple<Dictionary<string, Dictionary<VariableDesc, List<ValueDesc>>>, Exception>(null, new ArgumentNullException()); } List<VariableDesc> oList = new List<VariableDesc>(); oList.Add(oCategVar); oList.AddRange(oDataVars); var xx = getIndexes(ctx, oList); if (xx == null) { return new Tuple<Dictionary<string, Dictionary<VariableDesc, List<ValueDesc>>>, Exception>(null, new ArgumentException()); } var oIndexes = xx.Item1; if ((oIndexes == null) || (xx.Item2 != null)) { return new Tuple<Dictionary<string, Dictionary<VariableDesc, List<ValueDesc>>>, Exception>(null, xx.Item2); } Dictionary<string, Dictionary<VariableDesc, List<ValueDesc>>> oRet = new Dictionary<string, Dictionary<VariableDesc, List<ValueDesc>>>(); DbVariable pCategVar = findVariable(ctx, oCategVar); if (pCategVar == null) { return new Tuple<Dictionary<string, Dictionary<VariableDesc, List<ValueDesc>>>, Exception>(null, new ArgumentException()); } var qcateg = pCategVar.Values; foreach (var ind in oIndexes) { var q = from x in qcateg where x.Index == ind select x; if (q.Count() > 0) { DbValue vcateg = q.First(); String scateg = StatHelpers.ConvertValue(vcateg.Value); if (!String.IsNullOrEmpty(scateg)) { if (!oRet.ContainsKey(scateg)) { oRet[scateg] = new Dictionary<VariableDesc, List<ValueDesc>>(); } var dict = oRet[scateg]; foreach (var vdata in oDataVars) { if (!dict.ContainsKey(vdata)) { dict[vdata] = new List<ValueDesc>(); } List<ValueDesc> xlist = dict[vdata]; var qy = from x in ctx.DbValues where (x.VariableId == vdata.Id) && (x.Index == ind) select x; if (qy.Count() > 0) { var v = qy.First(); String s = StatHelpers.ConvertValue(v.Value); if (!String.IsNullOrEmpty(s)) { ValueDesc vz = new ValueDesc(); convertValue(v, vz); xlist.Add(vz); } }// qy }// vdata }// scateg }// qCount }// ind if (oRet.Count < 1) { return new Tuple<Dictionary<string, Dictionary<VariableDesc, List<ValueDesc>>>, Exception>(null, null); } return new Tuple<Dictionary<string, Dictionary<VariableDesc, List<ValueDesc>>>, Exception>(oRet, null); }
protected int nextId(statdataEntities ctx, String name) { int nRet = 0; string sname = name.Trim().ToLower(); var q = from x in ctx.DbKeys where x.Nom.Trim().ToLower() == sname select x; if (q.Count() > 0) { DbKey p = q.First(); nRet = p.Valeur; p.Valeur = nRet + 1; } else { DbKey p = new DbKey(); p.Nom = sname; p.Valeur = 2; ctx.DbKeys.Add(p); ctx.SaveChanges(); nRet = 1; } return nRet; }
protected int[] nextIds(statdataEntities ctx, String name, int count) { int nRet = 0; string sname = name.Trim().ToLower(); var q = from x in ctx.DbKeys where x.Nom.Trim().ToLower() == sname select x; if (q.Count() > 0) { DbKey p = q.First(); nRet = p.Valeur; p.Valeur = nRet + count; } else { DbKey p = new DbKey(); p.Nom = sname; p.Valeur = count + 1; ctx.DbKeys.Add(p); ctx.SaveChanges(); nRet = 1; } int[] pRet = new int[count]; for (int i = 0; i < count; ++i) { pRet[i] = nRet + i; } return pRet; }
protected DbDataSet maintainsDataSet(statdataEntities ctx, StatDataSet oSet) { if (oSet == null) { return null; } String sname = oSet.Name.Trim(); if (String.IsNullOrEmpty(sname)) { return null; } DbDataSet pRet = findDataSet(ctx, oSet); if (pRet != null) { pRet.Name = oSet.Name; pRet.Description = oSet.Description; } else { pRet = new DbDataSet(); pRet.Id = nextId(ctx, TAB_DATASET); pRet.LastIndex = 0; pRet.Name = sname; pRet.Description = oSet.Description; ctx.DbDataSets.Add(pRet); ctx.SaveChanges(); } return pRet; }
protected DbVariable maintainsVariable(statdataEntities ctx, VariableDesc oVar) { DbVariable pRet = null; if (oVar != null) { String sname = oVar.Name.Trim(); int nId = oVar.DataSetId; String stype = oVar.DataType.Trim(); if (String.IsNullOrEmpty(sname) || (nId == 0) || String.IsNullOrEmpty(stype)) { return null; } pRet = findVariable(ctx, oVar); if (pRet != null) { pRet.Name = sname; pRet.VarType = stype; pRet.IsCateg = oVar.IsCategVar; pRet.IsId = oVar.IsIdVar; pRet.IsName = oVar.IsNameVar; pRet.IsImageVar = oVar.IsImageVar; pRet.IsInfoVar = oVar.IsInfoVar; pRet.Description = oVar.Description; } else { DbDataSet pSet = null; { var qq = from x in ctx.DbDataSets where x.Id == nId select x; if (qq.Count() < 1) { return null; } pSet = qq.First(); } pRet = new DbVariable(); pRet.Id = nextId(ctx, TAB_VARIABLE); pRet.DataSet = pSet; pRet.Name = sname; pRet.VarType = stype; pRet.IsCateg = oVar.IsCategVar; pRet.IsId = oVar.IsIdVar; pRet.IsName = oVar.IsNameVar; pRet.IsImageVar = oVar.IsImageVar; pRet.IsInfoVar = oVar.IsInfoVar; pRet.Description = oVar.Description; ctx.DbVariables.Add(pRet); } } return pRet; }
protected Tuple<VariableInfo, Exception> getVariableInfo(statdataEntities ctx, VariableDesc oVar) { Exception err = null; VariableInfo info = null; if (oVar == null) { return new Tuple<VariableInfo, Exception>(info, new ArgumentNullException()); } DbVariable pVar = findVariable(ctx, oVar); if (pVar == null) { return new Tuple<VariableInfo, Exception>(info, err); } info = new VariableInfo(); String stype = pVar.VarType.Trim().ToLower(); info.VariableId = pVar.Id; info.VariableName = pVar.Name; info.DataSetId = pVar.DataSetId; info.DataSetName = pVar.DataSet.Name; info.DataType = stype; info.IsCategVar = pVar.IsCateg; if ((stype == "bool") || (stype == "string")) { info.IsCategVar = true; } { var q1 = pVar.Values; int nMissing = 0; int nCount = 0; foreach (var p in q1) { String sval = p.Value; if (!String.IsNullOrEmpty(sval)) { sval = StatHelpers.ConvertValue(sval); } if (String.IsNullOrEmpty(sval)) { ++nMissing; } ++nCount; }// p info.MissingValuesCount = nMissing; info.TotalValuesCount = nCount; } if (info.IsCategVar) { Dictionary<String, int> dict = new Dictionary<string, int>(); var q2 = from x in pVar.Values select x.Value; foreach (var p in q2) { String sval = StatHelpers.ConvertValue(p); if (!String.IsNullOrEmpty(sval)) { if (!dict.ContainsKey(sval)) { dict[sval] = 1; } else { dict[sval] = dict[sval] + 1; } } }// p CategValueDescs vv = new CategValueDescs(); var keys = dict.Keys; foreach (var s in keys) { CategValueDesc c = new CategValueDesc(); c.StringValue = s; c.Count = dict[s]; c.VariableId = info.VariableId; vv.Add(c); } info.CategValues = vv; info.DistinctValues = keys.ToList(); } else { var q3 = pVar.Values; int nCount = 0; List<double> dList = new List<double>(); foreach (var p in q3) { String sval = StatHelpers.ConvertValue(p.Value); if (!String.IsNullOrEmpty(sval)) { double xcur = 0; if (double.TryParse(sval, out xcur)) { dList.Add(xcur); }// ok } }// p nCount = dList.Count(); if (nCount > 0) { DescriptiveStatistics st = new DescriptiveStatistics(dList); info.MinValue = st.Minimum; info.MaxValue = st.Maximum; info.MeanValue = myconvert(st.Mean); info.Deviation = myconvert(st.StandardDeviation); info.Skewness = myconvert(st.Skewness); info.Flatness = myconvert(st.Kurtosis); dList.Sort(); var oAr = dList.ToArray(); info.Quantile05 = myconvert(SortedArrayStatistics.Quantile(oAr, 0.05)); info.Quantile10 = myconvert(SortedArrayStatistics.Quantile(oAr, 0.10)); info.Quantile25 = myconvert(SortedArrayStatistics.Quantile(oAr, 0.25)); info.Median = myconvert(SortedArrayStatistics.Quantile(oAr, 0.5)); info.Quantile75 = myconvert(SortedArrayStatistics.Quantile(oAr, 0.75)); info.Quantile90 = myconvert(SortedArrayStatistics.Quantile(oAr, 0.90)); info.Quantile95 = myconvert(SortedArrayStatistics.Quantile(oAr, 0.10)); } } info.IsModified = false; // return new Tuple<VariableInfo, Exception>(info, err); }
protected Tuple<IEnumerable<int>, Exception> getIndexes(statdataEntities ctx, IEnumerable<VariableDesc> oVars) { if (oVars == null) { return new Tuple<IEnumerable<int>, Exception>(null, new ArgumentNullException()); } List<int> oRet = null; Exception err = null; try { HashSet<int> oSet = null; foreach (var oVar in oVars) { DbVariable pVar = findVariable(ctx, oVar); if (pVar == null) { return new Tuple<IEnumerable<int>, Exception>(null, new ArgumentException()); }// pVar var q = from x in pVar.Values where (x.Index >= 0) select x.Index; HashSet<int> oCur = new HashSet<int>(); foreach (var ind in q) { oCur.Add(ind); }// q if (oSet == null) { oSet = oCur; } else { HashSet<int> oDel = new HashSet<int>(); foreach (var ind in oSet) { if (!oCur.Contains(ind)) { oDel.Add(ind); } }// ind foreach (var ind in oDel) { oSet.Remove(ind); } if (oSet.Count < 1) { break; } }// bFirst }// oVar oRet = (oSet != null) ? oSet.ToList() : new List<int>(); } catch (Exception ex) { err = ex; } return new Tuple<IEnumerable<int>, Exception>(oRet, err); }
protected DbVariable findVariable(statdataEntities ctx, VariableDesc oVar) { DbVariable pRet = null; if (oVar != null) { if (oVar.Id != 0) { var q = from x in ctx.DbVariables where x.Id == oVar.Id select x; if (q.Count() > 0) { return q.First(); } } String sname = oVar.Name.Trim().ToLower(); int nId = oVar.DataSetId; if ((nId != 0) && (!String.IsNullOrEmpty(sname))) { var q = from x in ctx.DbVariables where (x.DataSetId == nId) && x.Name.Trim().ToLower() == sname select x; if (q.Count() > 0) { return q.First(); } } }// oSet return pRet; }
protected DbPhoto findPhoto(statdataEntities ctx, PhotoDesc oPhoto) { DbPhoto pRet = null; if (oPhoto == null) { return pRet; } if (oPhoto.Id != 0) { var q = from x in ctx.DbPhotoes where x.Id == oPhoto.Id select x; if (q.Count() > 0) { return q.First(); } } String s = oPhoto.Name; if (!String.IsNullOrEmpty(s)) { String ss = s.ToLower(); var qq = from x in ctx.DbPhotoes where x.Name.Trim().ToLower() == ss select x; if (qq.Count() > 0) { return qq.First(); } } return pRet; }
protected DbDataSet findDataSet(statdataEntities ctx, StatDataSet oSet) { DbDataSet pRet = null; if (oSet != null) { if (oSet.Id != 0) { var q = from x in ctx.DbDataSets where x.Id == oSet.Id select x; if (q.Count() > 0) { return q.First(); } } String sname = oSet.Name.Trim().ToLower(); if (!String.IsNullOrEmpty(sname)) { var q = from x in ctx.DbDataSets where x.Name.Trim().ToLower() == sname select x; if (q.Count() > 0) { return q.First(); } } }// oSet return pRet; }