コード例 #1
0
        public TagProps getTagProps(int id)
        {
            var    sel1     = context.Properties.AsNoTracking().Where(c => c.ObjectId == id && c.PropId == 0).FirstOrDefault();
            var    sel2     = context.Objects.Find(id);
            var    tagProps = new TagProps();
            string JSONprop = sel1.Value;
            var    props    = json.Deserialize(JSONprop, tagProps.GetType());

            tagProps      = (TagProps)props;
            tagProps.Id   = id;
            tagProps.Name = sel2.Name;
            return(tagProps);
        }
コード例 #2
0
ファイル: JSTree.cs プロジェクト: trouble4you/WebSphere
        public void pasteNode(int copyNode, int newNode)
        {
            Objects rootCopy = copyObjects.Where(r => r.Id == copyNode).FirstOrDefault();
            var rootCopyChilds = copyObjects.Where(r => r.ParentId == copyNode).ToList();
            int childrenCount = rootCopyChilds.Count();
            for (int i = 0; i < childrenCount; i++)
            {
                int currentIdd = ++baseId;
                copyObjects.Remove(rootCopy);//типа оптимизирую
                //проверка чтобы избежать бесконечной вставки набора копируемых узлов.
                if (rootCopyChilds[i].ParentId == nodePaste)
                    return;

                Objects newPasteNode = new Objects()
                {
                    Id = currentIdd,
                    ParentId = newNode,
                    Type = rootCopyChilds[i].Type,
                    Name = rootCopyChilds[i].Name
                };
                pasteObjects.Add(newPasteNode);
                Property rootPropsCopy = propertyList.Where(p => p.ObjectId == rootCopyChilds[i].Id).FirstOrDefault();
                propertyList.Remove(rootPropsCopy);//типа оптимизирую
                string newPropJson = "";
                //если у узла есть свойства
                if (rootPropsCopy.Value != "")
                {
                    //поправим значение OpcID и Connection в строке свойств 
                    newPropJson = rootPropsCopy.Value;

                    if (rootCopyChilds[i].Type == 2)
                    {
                        tagPropsForCopy = new TagProps();
                        tagPropsForCopy = (TagProps)json.Deserialize(rootPropsCopy.Value, tagPropsForCopy.GetType());
                        string newConnStr = tagPropsForCopy.Connection;
                        string newConnStrRepl = newConnStr.Replace(oldControllerName, newControllerName);
                        tagPropsForCopy.Opc = OPCIDglobal;
                        tagPropsForCopy.Connection = newConnStrRepl;
                        newPropJson = json.Serialize(tagPropsForCopy);
                    }
                }
                //вставка строки со свойствами в таблицу свойств
                Property objProp = new Property
                {
                    ObjectId = currentIdd,
                    PropId = 0,
                    Value = newPropJson
                };
                pastePropertyList.Add(objProp);

                int nextParentId = 0;
                if (i == 0)//если это первый потомок, то просто наращиваем на 1 Id
                    nextParentId = newNode + 1;
                else // если же последующие, то присваиваем макс Id для родителя
                    nextParentId = pasteObjects.Last().Id;
                pasteNode(rootCopyChilds[i].Id, nextParentId);
            }
        }
コード例 #3
0
ファイル: JSTree.cs プロジェクト: trouble4you/WebSphere
        public string pasteNodeRoot(int idPasteParentElem, int idCopyParentElem, string newContName)
        {
            pasteObjects = new List<Objects>();
            pastePropertyList = new List<Property>();
            nodePaste = idPasteParentElem;
            copyObjects = context.Objects.Where(o => o.Id >= idCopyParentElem).AsNoTracking().ToList();//попытка хоть немного уменьшить количество объектов по которым идет перебор
            propertyList = context.Properties.Where(p => p.PropId == 0 && p.ObjectId >= idCopyParentElem).AsNoTracking().ToList();
            var rootCopy = copyObjects.Find(m => m.Id == idCopyParentElem);//корневой узел
            oldControllerName = rootCopy.Name;
            newControllerName = newContName;//название,которое ввел пользователь
            string Name = rootCopy.Name;//если узел конечный, то название оставим
            if (rootCopy.Type == 5 && newContName != "")//если же нет, то заменим на пользовательское
            {
                Name = newContName;
            }

            Property rootPropsCopy = propertyList.Find(p => p.ObjectId == idCopyParentElem);

            Objects newNode = new Objects()
            {
                Name = Name,
                Type = rootCopy.Type,
                ParentId = idPasteParentElem
            };

            context.Objects.Add(newNode);
            context.SaveChanges();
            baseId = newNode.Id;//От него будут отсчитываться последующие Id
            string newPropJson = "";
            if (rootPropsCopy.Value != "")
            {
                newPropJson = rootPropsCopy.Value;

                string newConnSrtId = getConnectionProp(idPasteParentElem, out OPCIDglobal).Trim('/');
                if (rootCopy.Type == 2)
                {

                    tagPropsForCopy = new TagProps();
                    tagPropsForCopy = (TagProps)json.Deserialize(rootPropsCopy.Value, tagPropsForCopy.GetType());
                    tagPropsForCopy.Opc = OPCIDglobal;
                    tagPropsForCopy.Connection = newConnSrtId;
                    newPropJson = json.Serialize(tagPropsForCopy);
                }

            }

            Property objProp = new Property
            {
                ObjectId = newNode.Id,
                PropId = 0,
                Value = newPropJson
            };
            context.Properties.Add(objProp);
            context.SaveChanges();
            //Stopwatch sw = new Stopwatch();
            //sw.Start();
            pasteNode(idCopyParentElem, newNode.Id);
            int countPasteNodes = pasteObjects.Count();
            context.Configuration.AutoDetectChangesEnabled = false;
            context.BulkInsert(pasteObjects);

            context.SaveChanges();
            context.BulkInsert(pastePropertyList);
            context.SaveChanges();

            //sw.Stop();

            return CreateJsTreeHelp(newNode.Id);
        }