public static void SetCells(Taxonomy taxonomy, ValidationRuleResult result) { foreach (var p in result.Parameters) { p.Cells.Clear(); foreach (var factid in p.FactIDs) { var taxfactid = Utilities.Converters.FastParse(factid.Substring(2)); var cells = taxonomy.GetCellsOfFact(taxfactid); p.Cells.Add(cells); } } }
public string CheckCells(LogicalModel.Validation.ValidationParameter parameter) { var cellfound = false; var sb = new StringBuilder(); var sequence = parameter.BindAsSequence ? "Sequence" : ""; sb.AppendLine("parameter: " + parameter.Name + " " + sequence); var c_sb = new StringBuilder(); var log = false; foreach (var factgroup in parameter.TaxFacts) { foreach (var factid in factgroup.AsEnumerable()) { var cellslist = new List <List <String> >(); var factkey = Taxonomy.FactsManager.GetFactKey(factid); var fact = FactBase.GetFactFrom(Taxonomy.GetFactStringKey(factkey)); if (Taxonomy.HasFact(factkey)) { var cells = Taxonomy.GetCellsOfFact(factkey); if (parameter.RuleID.Contains("0602")) { cellslist.Add(cells.Select(i => i + " {" + factkey + "} ").ToList()); } else { cellslist.Add(cells); } if (cells.Count == 0) { if (log) { c_sb.AppendLine(parameter.RuleID + " fact found but no cells! " + factkey); } } } else { var s_facts = Taxonomy.FactKeysAsEnumerable().Select(i => i).AsEnumerable(); if (fact.Concept != null) { //s_facts = s_facts.Where(i => i.StartsWith(fact.Concept.Content)); //if (Taxonomy.FactsOfDimensions.ContainsKey(fact.Concept.Content)) var ix = Taxonomy.FactParts[fact.Concept.Content]; if (Taxonomy.FactsOfParts.ContainsKey(ix)) { s_facts = Taxonomy.FactsOfParts[ix].Select( i => Taxonomy.FactsManager.GetFactKey(i)); } else { s_facts = new List <int[]>(); } } foreach (var dimension in fact.Dimensions) { s_facts = s_facts.Where(i => Taxonomy.GetFactStringKey(i).Contains(dimension.DomainMemberFullName)); } // var s_factlist = s_facts.ToList(); var hasanyfact = false; foreach (var s_fact in s_facts) { hasanyfact = true; var cells = Taxonomy.GetCellsOfFact(s_fact); if (cells.Count == 0) { if (log) { c_sb.AppendLine(parameter.RuleID + " for parameter " + parameter.Name + " no cells were found! " + s_fact); } } if (parameter.RuleID.Contains("0602")) { cellslist.Add(cells.Select(i => i + " {" + factkey + "} ").ToList()); } else { cellslist.Add(cells); } } if (!hasanyfact) { if (log) { c_sb.AppendLine(parameter.RuleID + " fact for parameter " + parameter.Name + " not found! " + factkey); } } } if (cellslist.Count == 0) { } else { cellfound = true; } //sb.AppendLine(fact.GetFactKey()); foreach (var cells in cellslist) { foreach (var cell in cells) { sb.Append(cell + ", "); } sb.AppendLine(); } } } if (!cellfound) { if (log) { c_sb.AppendLine("None of the Fact Groups can be found for " + parameter.RuleID + " - " + parameter.Name); } } if (c_sb.Length > 0) { Logger.WriteLine(c_sb.ToString()); } return(sb.ToString()); }