Exemplo n.º 1
0
 //Вычисление значения
 public void Generate(SubRows row)
 {
     while (_condition.Generate(row).Boolean)
     {
         _prog.Generate(row);
     }
 }
Exemplo n.º 2
0
 //Выполнение действий по ряду исходной таблицы
 public void Generate(SubRows row)
 {
     foreach (var part in _voidParts)
     {
         part.Generate(row);
     }
 }
Exemplo n.º 3
0
 //Генерация по одной строке таблицы
 public override void Generate(SubRows row)
 {
     SubParamsRec.AddNew();
     GenerateBase(row, SubParamsRec);
     SubParamsRec.Put("OwnerId", _projectOwnerId);
     SubParamsRec.Update();
 }
Exemplo n.º 4
0
        //Выбрать ряды для генерации
        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));
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        //Выбрать ряды для генерации, главный узел выражения подтаблицы
        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));
        }
Exemplo n.º 7
0
 //Генерация по всему условию
 public void GenerateParams(SubRows row,        //строка таблицы, по которой генерируется
                            RecDao recs,        //рекордсет подпараметров
                            int projectOwnerId) //Id владельца в проекте
 {
     SubParamsRec    = recs;
     _projectOwnerId = projectOwnerId;
     _condition.Generate(this, row);
 }
Exemplo n.º 8
0
 //Сформировать текст для записи в поле
 public override string GetText(SubRows row)
 {
     if (row == null || row.Parent == null)
     {
         return("Надтаблица не задана ");
     }
     return(_expr.GetText(row.Parent));
 }
Exemplo n.º 9
0
 //Вычисление значения
 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);
         }
     }
 }
Exemplo n.º 10
0
 //Сгенерировать значения полей по ряду таблицы
 internal void GenerateFields(SubRows row, DaoRec rec)
 {
     foreach (var field in Fields.Keys)
     {
         if (rec.ContainsField(field))
         {
             rec.PutMean(field, Fields[field].Generate(row));
         }
     }
 }
Exemplo n.º 11
0
        //Вычисление значения
        public IReadMean Generate(SubRows row)
        {
            IReadMean mean = null;

            while (_condition.Generate(row).Boolean)
            {
                mean = _prog.Generate(row);
            }
            return(mean ?? _elseProg.Generate(row));
        }
Exemplo n.º 12
0
        //Сформировать текст для записи в поле
        public override string GetText(SubRows row)
        {
            var sb = new StringBuilder("");

            foreach (var n in _children)
            {
                sb.Append(n.GetText(row));
            }
            return(sb.ToString());
        }
Exemplo n.º 13
0
 //Вычисление значения
 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));
 }
Exemplo n.º 14
0
        //Вычисление значения по ряду исходной таблицы
        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);
            }
        }
Exemplo n.º 15
0
        //Генерация по одной строке таблицы
        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);
            }
        }
Exemplo n.º 16
0
 //Генерация по строке таблицы
 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);
             }
         }
     }
 }
Exemplo n.º 17
0
        //Сформировать текст для записи в поле
        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);
        }
Exemplo n.º 18
0
        //Вычисление значения по ряду исходной таблицы
        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));
        }
Exemplo n.º 19
0
        //Генерация по строке таблицы 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));
        }
Exemplo n.º 20
0
        //Генерация значения
        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));
        }
Exemplo n.º 21
0
        //Итоговый список групп
        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);
        }
Exemplo n.º 22
0
        //Сформировать текст для записи в поле
        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);
        }
Exemplo n.º 23
0
 //Вычисление значения
 public IReadMean Generate(SubRows row)
 {
     return(row[_field]);
 }
Exemplo n.º 24
0
 public abstract void Generate(SubRows row);
Exemplo n.º 25
0
 //Запись в строку
 public override string GetText(SubRows row)
 {
     return(GetMean((TablRow)row).String);
 }
Exemplo n.º 26
0
        //Выбрать ряды по условию генерации подтаблицы
        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());
        }
Exemplo n.º 27
0
 //Сформировать текст для записи в поле
 public abstract string GetText(SubRows row);
Exemplo n.º 28
0
 //Обработка при генерации
 public void Generate(SubRows row)
 {
     _var.Mean = _nodeMean.Generate(row);
 }
Exemplo n.º 29
0
 //Вычисленное значение
 public IReadMean Generate(SubRows row)
 {
     return(_fun.Calculate(_args.Select(a => a.Generate(row)).ToArray(), _resultType));
 }
Exemplo n.º 30
0
 private TablRow[] SelectSubRows(GenKeeper keeper, TablsList tabls, ITablStruct tstruct, SubRows rows, string formula)
 {
     return(SelectSubRowsS(keeper, tabls, tstruct, rows, formula).Cast <TablRow>().ToArray());
 }