//Вычисление значения public void Generate(SubRows row) { while (_condition.Generate(row).Boolean) { _prog.Generate(row); } }
//Выполнение действий по ряду исходной таблицы public void Generate(SubRows row) { foreach (var part in _voidParts) { part.Generate(row); } }
//Генерация по одной строке таблицы public override void Generate(SubRows row) { SubParamsRec.AddNew(); GenerateBase(row, SubParamsRec); SubParamsRec.Put("OwnerId", _projectOwnerId); SubParamsRec.Update(); }
//Выбрать ряды для генерации public IEnumerable <SubRows> SelectRows(TablsList dataTabls, SubRows parentRow) { IEnumerable <SubRows> rows = dataTabls.Tabls[_tablName].SubList; rows = _condition == null ? rows : rows.Where(row => _condition.Generate(row).Boolean); return(ChildNode == null ? rows : ChildNode.SelectRows(rows)); }
public GenRow(ModuleGenerator generator, //Ссылка на генератор TablsList dataTabls, //Исходные таблицы для генерации GenTemplateTable table, DaoRec rec, //Рекортсет и поля таблицы GenTemplateTable subTable, DaoRec subRec) //Рекордсет и и поля подтаблицы : base(generator, table, rec) { Id = rec.GetInt(table.IdField); var dataTabl = Rule == null ? null : ((NodeRTabl)Rule).Check(dataTabls, null); foreach (var key in Fields.Keys) { Keeper.SetFieldName(key); Fields[key].Check(dataTabl); } if (subRec != null && !subRec.EOF) { Keeper.SetFieldName(""); bool subErr = false; while (subRec.GetInt(subTable.ParentIdField) == Id) { var row = new GenSubRow(generator, dataTabls, dataTabl, subTable, subRec); if (row.Keeper.Errors.Count != 0 && !subErr) { Keeper.AddError("Ошибки в рядах подтаблицы", (IToken)null); subErr = true; } SubRows.Add(row); if (!subRec.MoveNext()) { break; } } } rec.Put(table.ErrField, Keeper.ErrMess); }
//Выбрать ряды для генерации, главный узел выражения подтаблицы public IEnumerable <SubRows> SelectRows(TablsList dataTabls, SubRows parentRow) { IEnumerable <SubRows> rows = Condition == null ? parentRow.SubList : parentRow.SubList.Where(row => Condition.Generate(row).Boolean); return(ChildNode == null ? rows : ChildNode.SelectRows(rows)); }
//Генерация по всему условию public void GenerateParams(SubRows row, //строка таблицы, по которой генерируется RecDao recs, //рекордсет подпараметров int projectOwnerId) //Id владельца в проекте { SubParamsRec = recs; _projectOwnerId = projectOwnerId; _condition.Generate(this, row); }
//Сформировать текст для записи в поле public override string GetText(SubRows row) { if (row == null || row.Parent == null) { return("Надтаблица не задана "); } return(_expr.GetText(row.Parent)); }
//Вычисление значения public void Generate(SubRows row) { for (int i = 0; i < _variants.Count; i++) { if (i == _conditions.Count || _conditions[i].Generate(row).Boolean) { _variants[i].Generate(row); } } }
//Сгенерировать значения полей по ряду таблицы internal void GenerateFields(SubRows row, DaoRec rec) { foreach (var field in Fields.Keys) { if (rec.ContainsField(field)) { rec.PutMean(field, Fields[field].Generate(row)); } } }
//Вычисление значения public IReadMean Generate(SubRows row) { IReadMean mean = null; while (_condition.Generate(row).Boolean) { mean = _prog.Generate(row); } return(mean ?? _elseProg.Generate(row)); }
//Сформировать текст для записи в поле public override string GetText(SubRows row) { var sb = new StringBuilder(""); foreach (var n in _children) { sb.Append(n.GetText(row)); } return(sb.ToString()); }
//Вычисление значения public IReadMean Generate(SubRows row) { for (int i = 0; i < _variants.Count - 1; i++) { if (_conditions[i].Generate(row).Boolean) { return(_variants[i].Generate(row)); } } return(_variants.Last().Generate(row)); }
//Вычисление значения по ряду исходной таблицы public void Generate(SubRows row) { IEnumerable <SubRows> rows = row.SubList; if (_condition != null) { rows = rows.Where(r => _condition.Generate(r).Boolean); } foreach (var r in rows) { _prog.Generate(r); } }
//Генерация по одной строке таблицы public override void Generate(SubRows row) { _paramsRec.AddNew(); GenerateBase(row, _paramsRec); _paramsRec.Put("Task", _task.GetText(row)); _paramsRec.Put("CalcParamType", _calcParamType.GetText(row)); _paramsRec.Put("DefaultValue", _defaultValue.GetText(row)); int id = _paramsRec.GetInt("CalcParamId"); _paramsRec.Update(); foreach (var sp in SubParams) { sp.GenerateParams(row, SubParamsRec, id); } }
//Генерация по строке таблицы internal override void Generate(GenParamBase par, SubRows row) { foreach (TablRow r in row.Subs) { if (Cond == null || Cond.CalculateBool(r)) { if (Children == null) { par.Generate(r); } else { Children.Generate(par, r); } } } }
//Сформировать текст для записи в поле public override string GetText(SubRows row) { if (row == null) { return("Недопустимое обращение к подтаблице "); } string s = ""; for (int i = 0; i < row.Subs.Count; i++) { var r = row.Subs[i]; s += _expr.GetText(r); if (i != row.Subs.Count - 1) { s += _separator.GetText(r); } } return(s); }
//Вычисление значения по ряду исходной таблицы public IReadMean Generate(SubRows row) { IEnumerable <SubRows> rows = row.SubList; if (_condition != null) { rows = rows.Where(r => _condition.Generate(r).Boolean); } string s = ""; foreach (var r in rows) { if (s != "" && _separator != null) { s += _separator.Generate(r).String; } s += _expr.Generate(r).String; } return(new StringMean(s)); }
//Генерация по строке таблицы row в рекоррдсет rec, базовая для параметров и подпараметров protected void GenerateBase(SubRows row, IRecordSet rec) { rec.Put("Code", _code.GetText(row)); rec.Put("Name", _name.GetText(row)); rec.Put("Units", _units.GetText(row)); rec.Put("Inputs", _inputs.GetText(row)); rec.Put("UserExpr1", _userExpr1.GetText(row)); rec.Put("UserExpr2", _userExpr2.GetText(row)); rec.Put("InterpolationType", _interpolationType.GetText(row)); rec.Put("SuperProcessType", _superProcessType.GetText(row)); rec.Put("Comment", _comment.GetText(row)); var s = _min.GetText(row); rec.Put("Min", s.IsEmpty() ? (double?)null : s.ToDouble()); s = _max.GetText(row); rec.Put("Max", s.IsEmpty() ? (double?)null : s.ToDouble()); rec.Put("Tag", _tag.GetText(row)); rec.Put("ReceiverCode", _receiverCode.GetText(row)); rec.Put("CodeSignal", _codeSignal.GetText(row)); }
//Генерация значения public IReadMean Generate(SubRows row) { if (Nodes.Length == 1) { return(((IExprNode)Nodes[0]).Generate(row)); } string s = ""; foreach (var child in Nodes) { if (child is IExprNode) { s += ((IExprNode)child).Generate(row).String; } else { ((IVoidNode)child).Generate(row); } } return(new StringMean(s)); }
//Итоговый список групп public IEnumerable <SubRows> GetGroups() { if (_rows != null) { var g = new SubRows(); foreach (var tablRow in Rows) { g.AddRow(tablRow, false); } return(new [] { g }); } var glist = new List <SubRows>(); foreach (var grDic in Dic.Dic.Values) { var groups = grDic.GetGroups(); foreach (var rowGroup in groups) { rowGroup.Means.Add(grDic.FieldName, grDic.FieldMean); glist.Add(rowGroup); } } return(glist); }
//Сформировать текст для записи в поле public override string GetText(SubRows row) { if (row == null) { return("Недопустимое обращение к подтаблице "); } string s = ""; bool isFirst = true; for (int i = 0; i < row.Subs.Count; i++) { var r = row.Subs[i]; if (_cond.CalculateBool(r)) { if (!isFirst) { s += _separator.GetText(r); } s += _expr.GetText(r); isFirst = false; } } return(s); }
//Вычисление значения public IReadMean Generate(SubRows row) { return(row[_field]); }
public abstract void Generate(SubRows row);
//Запись в строку public override string GetText(SubRows row) { return(GetMean((TablRow)row).String); }
//Выбрать ряды по условию генерации подтаблицы private SubRows[] SelectSubRowsS(GenKeeper keeper, TablsList tabls, ITablStruct tstruct, SubRows rows, string formula) { keeper.Errors.Clear(); var parsing = new SubRuleParsing(keeper, "поле", formula); if (parsing.ResultTree == null) { return(null); } var node = (SubNodeR)parsing.ResultTree; node.Check(tabls, tstruct); return(node.SelectRows(tabls, rows).ToArray()); }
//Сформировать текст для записи в поле public abstract string GetText(SubRows row);
//Обработка при генерации public void Generate(SubRows row) { _var.Mean = _nodeMean.Generate(row); }
//Вычисленное значение public IReadMean Generate(SubRows row) { return(_fun.Calculate(_args.Select(a => a.Generate(row)).ToArray(), _resultType)); }
private TablRow[] SelectSubRows(GenKeeper keeper, TablsList tabls, ITablStruct tstruct, SubRows rows, string formula) { return(SelectSubRowsS(keeper, tabls, tstruct, rows, formula).Cast <TablRow>().ToArray()); }