Exemplo n.º 1
0
        public void Complex()
        {
            var dic = new DicS <int>(1000);

            dic.Clear();
            Assert.AreEqual(0, dic.Count);
            dic.Add("First", 1);
            dic.Add("Second", 2);
            Assert.AreEqual(2, dic.Count);
            Assert.AreEqual(1, dic["first"]);
            Assert.AreEqual(1, dic.Get("FIRST"));
            Assert.AreEqual(2, dic["Second"]);
            var dicAdd = new DicS <int>();

            dicAdd.Add("second", 22);
            dicAdd.Add("third", 33);
            dic.AddDic(dicAdd);
            Assert.AreEqual(3, dic.Count);
            Assert.IsTrue(dic.ContainsKey("THIRD"));
            Assert.IsTrue(dic.ContainsKey("Second"));
            Assert.AreEqual(56, dic.Values.Sum());
            dic.AddDic(dicAdd);
            Assert.AreEqual(3, dic.Count);
            Assert.AreEqual(1, dic["first"]);
            Assert.AreEqual(22, dic["second"]);
            Assert.AreEqual(33, dic["third"]);
            dic.Remove((k, v) => v == 33 || k.ToLower() == "second");
            Assert.AreEqual(1, dic.Count);
            Assert.IsTrue(dic.ContainsKey("First"));
            Assert.IsFalse(dic.ContainsKey("Second"));
        }
Exemplo n.º 2
0
        public void StringFromCollections()
        {
            var dic = new DicS <string>();

            Assert.AreEqual("", dic.ToPropertyString());
            dic.Add("Prop1", "a");
            dic.Add("Prop2", "b");
            dic.Add("Prop3", "c");
            Assert.AreEqual("PROP1=a;PROP2=b;PROP3=c;", dic.ToPropertyString());
            var dict = new Dictionary <string, string>();

            Assert.AreEqual("", dict.ToPropertyString());
            dict.Add("Prop1", "a");
            dict.Add("Prop2", "b");
            dict.Add("Prop3", "c");
            Assert.AreEqual("Prop1=a;Prop2=b;Prop3=c;", dict.ToPropertyString());
            var list = new List <string>();

            Assert.AreEqual("", list.ToPropertyString());
            list.Add("Prop1");
            list.Add("Prop2");
            list.Add("Prop3");
            Assert.AreEqual("Prop1;Prop2;Prop3;", list.ToPropertyString());
            var set = new HashSet <string>();

            Assert.AreEqual("", set.ToPropertyString());
            set.Add("Prop1");
            Assert.AreEqual("Prop1;", set.ToPropertyString());
        }
Exemplo n.º 3
0
        //Загрузка свойств из словаря
        protected override void ReadInf(DicS <string> dic)
        {
            bool   e = dic["IdentType"].ToUpper() != "WINDOWS";
            string server = dic["SQLServer"], db = dic["Database"];

            SqlProps = new SqlProps(server, db, e, dic["Login"], dic["Password"]);
        }
Exemplo n.º 4
0
 protected internal override string CheckSettings(DicS <string> infDic)
 {
     if (infDic["CloneDir"].IsEmpty())
     {
         return("Не указан каталог клона");
     }
     return("");
 }
Exemplo n.º 5
0
 //Проверка настроек
 protected override string CheckSettings(DicS <string> inf)
 {
     if (!inf.ContainsKey("SQLServer"))
     {
         return("Не указано имя архивного сервера");
     }
     return("");
 }
Exemplo n.º 6
0
 public RowGroupStruct(TablStruct tablStruct, IEnumerable <string> fields)
 {
     TablStruct = tablStruct;
     Fields     = new DicS <DataType>();
     foreach (var field in fields)
     {
         Fields.Add(field, tablStruct.Fields[field]);
     }
 }
Exemplo n.º 7
0
 protected internal ProviderSignal(ProviderConnect connect, string code, DataType dataType, string contextOut, DicS <string> inf)
 {
     Connect    = connect;
     Code       = code;
     DataType   = dataType;
     ContextOut = contextOut;
     Inf        = inf;
     Inf.DefVal = "";
 }
Exemplo n.º 8
0
        //Чтение значений из таблиц, usedSignals - набор кодов используемых сигналов
        public void PrepareSignals(DicS <DataType> usedSignals)
        {
            if (!IsConnected && !Check())
            {
                return;
            }
            Logger.AddEvent("Чтение списка имитируемых сигналов");
            _signals.Clear();
            _signalsId.Clear();
            try
            {
                using (var rec = new ReaderAdo(ImitDataFile, "SELECT * FROM SignalsBehavior WHERE ImitFlag=True ORDER BY ImitId"))
                    while (rec.Read())
                    {
                        var sig = new ImitSignal(rec, this);
                        if (usedSignals.ContainsKey(sig.Code))
                        {
                            sig.SetDataType(usedSignals[sig.Code]);
                            _signals.Add(sig.Code, sig);
                            _signalsId.Add(sig.ImitId, sig);
                        }
                    }
            }
            catch (Exception ex)
            {
                Logger.AddError("Ошибка чтения списков имитированных сигналов", ex);
            }

            Logger.AddEvent("Чтение списка имитируемых значений, " + _signalsId.Count + " сигналов");
            try
            {
                using (var rec = new ReaderAdo(ImitDataFile, "SELECT SignalsValues.ImitId AS ImitId, SignalsValues.Time, SignalsValues.RelativeTime, SignalsValues.Value, SignalsValues.Nd FROM SignalsValues INNER JOIN SignalsBehavior ON SignalsBehavior.ImitId = SignalsValues.ImitId " +
                                               "WHERE SignalsBehavior.ImitFlag=True ORDER BY SignalsValues.ImitId, SignalsValues.RelativeTime"))
                {
                    rec.Read();
                    while (!rec.EOF)
                    {
                        int id = rec.GetInt("ImitId");
                        if (_signalsId.ContainsKey(id))
                        {
                            _signalsId[id].ReadMoments(rec);
                        }
                        else
                        {
                            while (!rec.EOF && rec.GetInt("ImitId") == id)
                            {
                                rec.Read();
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.AddError("Ошибка чтения списков имитируемых значений", ex);
            }
        }
Exemplo n.º 9
0
        //Чтение списка функций из SprFunctions и SprFunctionsTypes
        protected void ReadFunctions()
        {
            FunsDic = new DicS <Fun>();
            const string stSql = "SELECT Functions.Name, Functions.Synonym, Functions.Code, Functions.CodeType, FunctionsOverloads.* " +
                                 "FROM Functions INNER JOIN FunctionsOverloads ON Functions.Id = FunctionsOverloads.FunctionId WHERE Functions.NotLoad = False ORDER BY Functions.Name;";

            using (var rec = new ReaderAdo(General.GeneralDir + "General.accdb", stSql))
                while (rec.Read())
                {
                    new Fun(rec, this);
                }
        }
Exemplo n.º 10
0
        //Запись значений по параметру и подпараметрам в линейную ведомость, columns - список колонок таблицы LinVed
        public void ToLinVed(RecDao rec, DicS <VedColumn> columns)
        {
            if (_param.RunParam.CalcValue == null || _param.RunParam.CalcValue.SingleValue == null)
            {
                return;
            }
            var par  = _param.RunParam.CalcValue.SingleValue.ToMomList();
            var subs = new List <VedMomList>();

            foreach (var col in columns.Values)
            {
                if (SubParams.ContainsKey(col.Code))
                {
                    subs.Add(new VedMomList(col.Code, SubParams[col.Code]));
                }
            }
            foreach (var mom in par)
            {
                rec.AddNew();
                rec.Put("IdParam", _id);
                rec.Put("TimeValue", mom.Time);
                rec.Put("TimeString", mom.Time.ToStringWithMs());
                if (mom.DataType.LessOrEquals(DataType.Real))
                {
                    if (columns.ContainsKey("ValueReal"))
                    {
                        rec.Put("ValueReal", mom.Real);
                    }
                }
                else if (columns.ContainsKey("ValueString"))
                {
                    rec.Put("ValueString", mom.String);
                }
                if (rec.ContainsField("Nd"))
                {
                    rec.Put("Nd", mom.Nd);
                }
                if (rec.ContainsField("ErrorString"))
                {
                    rec.Put("ErrorString", mom.Error.Text);
                }
                foreach (var sub in subs)
                {
                    WriteValue(sub.ChangeMoment(mom.Time), rec, sub.Code);
                }
                //foreach (var col in _vedSaver.ColumnsParams.Values)
                //    if (col.LinVedView != VedView.None)
                //        WriteProp(col, rec);
                rec.Update();
            }
        }
Exemplo n.º 11
0
 //Вызов окна настройки
 public string Setup()
 {
     if (MenuCommands == null)
     {
         MenuCommands = new DicS <Dictionary <string, IMenuCommand> >();
         AddMenuCommands();
     }
     IsSetup = true;
     new ProviderSetupForm {
         SetupType = SetupType, Provider = (IProvider)this
     }.ShowDialog();
     while (IsSetup)
     {
         Thread.Sleep(500);
     }
     return(ProviderInf);
 }
Exemplo n.º 12
0
        public void Simple()
        {
            var dic = new DicS <string>();

            Assert.AreEqual(0, dic.Count);
            dic.Add("a", "sa");
            dic.Add("B", "sB");
            Assert.IsTrue(dic.ContainsKey("a"));
            Assert.IsTrue(dic.ContainsKey("b"));
            Assert.AreEqual("sa", dic["a"]);
            Assert.AreEqual("sB", dic["B"]);
            Assert.AreEqual("sa", dic.Get("A"));
            Assert.AreEqual("sB", dic.Get("b", "h"));
            Assert.IsNull(dic["c"]);
            Assert.AreEqual("h", dic.Get("c", "h"));
            Assert.AreEqual(2, dic.Count);
            dic.Add("b", "gghsdauh");
            Assert.AreEqual(2, dic.Count);
            Assert.AreEqual("sB", dic["B"]);
            dic["b"] = "gg";
            Assert.AreEqual(2, dic.Count);
            Assert.AreEqual("gg", dic["B"]);
            dic.Add("c", "SC");
            Assert.IsTrue(dic.ContainsKey("C"));
            Assert.AreEqual(3, dic.Count);
            dic.Add("b", "ssb", true);
            Assert.IsTrue(dic.ContainsKey("b"));
            Assert.IsTrue(dic.ContainsKey("c"));
            Assert.AreEqual("ssb", dic["b"]);
            Assert.IsTrue(dic.Keys.Contains("B"));
            Assert.IsTrue(dic.Values.Contains("ssb"));
            dic.Remove("C");
            Assert.AreEqual(2, dic.Count);
            Assert.IsFalse(dic.ContainsKey("c"));
            Assert.IsNull(dic["c"]);
            Assert.AreEqual("def", dic.Get("C", "def"));
            Assert.IsFalse(dic.Remove("C"));
            Assert.IsFalse(dic.ContainsKey("c"));
            Assert.AreEqual("def", dic.Get("C", "def"));
            Assert.IsFalse(dic.ContainsKey(null));
            dic.Clear();
            Assert.AreEqual(0, dic.Count);
            Assert.IsNull(dic["a"]);
            Assert.IsFalse(dic.ContainsKey("c"));
            Assert.IsFalse(dic.ContainsKey("a"));
        }
Exemplo n.º 13
0
        //Получение списка проектов и режимов расчета
        public DicS <ReportProjectSetup> GetProjects()
        {
            var res = new DicS <ReportProjectSetup>();
            int i   = 2;

            try
            {
                while (!SysIsEmpty(i, 4))
                {
                    var pr = new ReportProjectSetup(SysValue(i, 4), SysValue(i, 5));
                    res.Add(pr.CodeFinal, pr);
                    i++;
                }
            }
            catch {}
            return(res);
        }
Exemplo n.º 14
0
 //Создание клона архива
 public void MakeClone(DateTime beginRead, DateTime endRead, string cloneFile = "", string cloneProps = "")
 {
     try
     {
         using (var db = new DaoDb(cloneFile))
         {
             using (var sys = new SysTabl(db))
                 CloneInf = (sys.Value("CloneInf") ?? "").ToPropertyDicS();
             using (CloneRec = new RecDao(db, "SELECT * FROM MomentsValues"))
                 using (CloneErrorRec = new RecDao(db, "SELECT * FROM ErrorsList"))
                     GetValues(beginRead, endRead);
         }
     }
     catch (Exception ex)
     {
         Logger.AddError("Ошибка при создании клона", ex);
     }
     CloneRec = null;
 }
Exemplo n.º 15
0
        //Задать максимальный уровень
        //И сразу загрузить список полей из таблицы в Fields
        public void AddLevel(int level)
        {
            var tname = TablName(level);
            var dicn  = new DicI <TablField>();
            var dic   = new DicS <TablField>();
            var t     = _db.Database.TableDefs[tname];
            int i     = 0;

            foreach (Field f in t.Fields)
            {
                if (f.Name != "Id" && f.Name != "ParentId" && f.Name != "Num" && f.Name != "Code")
                {
                    var tf = new TablField(f.Name, i, f.Type.ToDataType());
                    dic.Add(f.Name, tf);
                    dicn.Add(i++, tf);
                }
            }
            Fields.Add(level, dic);
            FieldsNums.Add(level, dicn);
        }
Exemplo n.º 16
0
        //Проверка настроек
        protected internal override string CheckSettings(DicS <string> inf)
        {
            string err = "";

            if (inf["SQLServer"].IsEmpty())
            {
                err += "Не указано имя SQL-сервера" + Environment.NewLine;
            }
            if (inf["IndentType"].IsEmpty())
            {
                err += "Не задан тип идентификации" + Environment.NewLine;
            }
            if (inf["IndentType"] == "SqlServer" && inf["Login"].IsEmpty())
            {
                err += "Не задан логин" + Environment.NewLine;
            }
            if (inf["Database"].IsEmpty())
            {
                err += "Не задано имя базы данных" + Environment.NewLine;
            }
            return(err);
        }
Exemplo n.º 17
0
        //Формирует строку параметров, использующих данный параметр или сигнал
        internal static string UsingParamsString(DicS <CalcParam> pars)
        {
            string s = "";

            foreach (var par in pars.Values)
            {
                s += par.FullCode + "=Pr_";
                if (par.Owner == null)
                {
                    s += "Параметр";
                }
                else
                {
                    s += "Подпараметр";
                }
                if (par.Inputs.Count != 0)
                {
                    s += "-функция";
                }
                s += "|";
            }
            return(s);
        }
Exemplo n.º 18
0
 //Получение Tag точки по сигналу
 protected override string GetOpcItemTag(DicS <string> inf)
 {
     return(ServerGroup + ".point." + inf["SysNum"]);
 }
Exemplo n.º 19
0
 //Загрузка дополнительных настроек провайдера из Inf
 protected override void GetAdditionalInf(DicS <string> inf)
 {
     ServerGroup = inf.Get("ServerGroup", "");
 }
Exemplo n.º 20
0
 //Настройки провайдера
 protected override void ReadInf(DicS <string> dic)
 {
     _dataSource = dic["DataSource"];
 }
Exemplo n.º 21
0
 //Загрузка дополнительных настроек провайдера из Inf
 protected abstract void GetAdditionalInf(DicS <string> inf);
Exemplo n.º 22
0
 protected override string GetOpcItemTag(DicS <string> inf)
 {
     return("");
 }
Exemplo n.º 23
0
 protected override void GetAdditionalInf(DicS <string> inf)
 {
 }
Exemplo n.º 24
0
 //Получение Tag точки по сигналу
 protected abstract string GetOpcItemTag(DicS <string> inf);
Exemplo n.º 25
0
        //Проверка таблицы сигналов
        public string CheckSignals(bool onlyInUse = false)
        {
            StartAtom(Atom.CheckSignals);
            CountsToZero();
            var objectsId = new DicI <ObjectSignal>();
            var signals   = new DicS <Signal>();

            _objects.Clear();
            try
            {
                if (State == State.Closed)
                {
                    AddError("Копилятор уже был закрыт");
                }
                else if (State == State.Empty)
                {
                    AddError("Проект не загружен");
                }
                else
                {
                    //using (var reco = new RecDao(_projectFile, "SELECT CodeObject, NameObject, TagObject, ObjectId, CommName, ErrMess FROM Objects ORDER BY ObjectId"))
                    using (var reco = new RecDao(_objectsFile, "SELECT CodeObject, NameObject, TagObject, ObjectId, CommName, ErrMess FROM Objects ORDER BY ObjectId")) //ab\
                    {
                        Procent = 10;
                        while (reco.Read())
                        {
                            var ob = new ObjectSignal(reco, true);
                            objectsId.Add(ob.Id, ob);
                            if (!_objects.ContainsKey(ob.Code))
                            {
                                _objects.Add(ob.Code, ob);
                            }
                            else
                            {
                                ob.ErrMess += "Повтор кода объекта (" + ob.Code + "); ";
                                reco.Put("ErrMess", ob.ErrMess);
                                _objects[ob.Code].ErrMess += "Повтор кода объекта (" + ob.Code + "); ";
                            }
                        }
                        Procent = 25;
                        using (var recs = new RecDao(reco.DaoDb, "SELECT ObjectId, Signals.Default, CodeSignal, NameSignal, Units, Signals.DataType, ConstValue, Signals.SourceName, Signals.ReceiverName, Signals.Inf, Signals.FullCode AS FullCode, Signals.ErrMess" + (!onlyInUse ? "" : ", SignalsInUse.FullCode AS FullCodeInUse")
                                                     + " FROM Signals" + (!onlyInUse ? "" : " LEFT JOIN SignalsInUse ON Signals.FullCode=SignalsInUse.FullCode ")))
                        {
                            Procent = 35;
                            while (recs.Read())
                            {
                                var sig = new Signal(recs, objectsId, true);
                                if (onlyInUse)
                                {
                                    sig.InUse = !recs.GetString("FullCodeInUse").IsEmpty();
                                }
                                objectsId[sig.ObjectId].InUse |= sig.InUse;
                                if (signals.ContainsKey(sig.FullCode))
                                {
                                    sig.ErrMess += "Повтор полного кода сигнала (" + sig.FullCode + "); ";
                                }
                                else
                                {
                                    signals.Add(sig.FullCode, sig);
                                }
                                if (sig.ErrMess != "")
                                {
                                    recs.Put("ErrMess", sig.ErrMess, true);
                                    if (sig.InUse || !onlyInUse)
                                    {
                                        SignalsErrorsCount++;
                                    }
                                    objectsId[sig.ObjectId].ErrorInSignals = true;
                                }
                            }
                        }
                        Procent = 80;
                        reco.MoveFirst();
                        while (!reco.EOF)
                        {
                            var ob = objectsId[reco.GetInt("ObjectId")];
                            if (ob.DefalutsCount == 0)
                            {
                                ob.ErrMess += "Объект не содержит сигналов по умолчанию; ";
                            }
                            if (ob.DefalutsCount >= 2)
                            {
                                ob.ErrMess += "Объект содержит более одного сигнала по умолчанию; ";
                            }
                            if (ob.ErrorInSignals)
                            {
                                ob.ErrMess += "Ошибки в сигналах; ";
                            }
                            if (ob.ErrMess != "")
                            {
                                reco.Put("ErrMess", ob.ErrMess);
                                if (!onlyInUse || ob.InUse)
                                {
                                    ObjectsErrorsCount++;
                                }
                            }
                            reco.MoveNext();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return(ex.MessageError("Ошибка при проверке сигналов"));
            }
            return(FinishAtom(State.Project, State.Project, "Проект: " + _code + "; Объектов с ошибками: " + ObjectsErrorsCount + "; Сигналов с ошибками: " + SignalsErrorsCount));
        }
Exemplo n.º 26
0
 //Свойства
 protected override void ReadInf(DicS <string> dic)
 {
     Label        = dic["Label"];
     ValueForming = dic["ValueForming"] == "Time" ? ValueForming.Time : ValueForming.Uniform;
 }
Exemplo n.º 27
0
 //Проверка настроек
 protected override string CheckSettings(DicS <string> inf)
 {
     return(!inf["ArchiveDir"].IsEmpty() ? "" : "Не задан путь к каталогу архива");
 }
Exemplo n.º 28
0
 //Загрузка дополнительных настроек провайдера из Inf
 protected override void ReadAdditionalInf(DicS <string> dic)
 {
     ServerNode  = dic["ServerNode"];
     ServerGroup = dic["ServerGroup"];
 }
Exemplo n.º 29
0
 //Получение Tag точки по сигналу
 protected override string GetOpcItemTag(DicS <string> inf)
 {
     return(ServerNode + "." + ServerGroup + "." + inf["TagName"]);
 }
Exemplo n.º 30
0
 //Получение Tag точки по сигналу
 protected override string GetOpcItemTag(DicS <string> inf)
 {
     return(inf["CodeObject"]);
 }