Exemple #1
0
        private GUTag ReadGUTagFromR(SQLiteDataReader r)
        {
            GUTag tag = new GUTag();

            //0. ID
            tag.Id = r.GetGuid((int)FIELD_IDX.ID);
            //1. Title
            tag.AddAlias(r.GetString((int)FIELD_IDX.Title));
            //2. Alias
            string alias = r.GetString((int)FIELD_IDX.Alias);

            string[] aliasList = alias.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
            foreach (string a in aliasList)
            {
                tag.AddAlias(a);
            }

            //3. PID
            tag.PId = r.GetGuid((int)FIELD_IDX.PID);
            //4. Children
            string chilrend = r.GetString((int)FIELD_IDX.Children);

            string[] childList = chilrend.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
            foreach (string c in childList)
            {
                tag.AddChild(Guid.Parse(c));
            }
            tag.Path = r.GetString((int)FIELD_IDX.Path);

            return(tag);
        }
Exemple #2
0
        public static GUTag MergeTag(GUTag iTag, GUTag oTag)
        {
            GUTag nTag = new GUTag();

            //ID
            nTag.Id = iTag.Id;
            //PID
            nTag.PId = iTag.PId;
            //Alias
            nTag.Alias.AddRange(iTag.Alias);
            foreach (string s in iTag.Alias)
            {
                nTag.AddAlias(s);
            }
            //Children
            nTag.Children.AddRange(iTag.Children);
            foreach (Guid s in iTag.Children)
            {
                nTag.AddChild(s);
            }
            return(nTag);
        }
Exemple #3
0
        //建立两个Tag之间的父子关系
        public int SetParent(GUTag parent, GUTag child)
        {
            lock (this)
            {
                //添加的tag必须是有效节点
                AssertValid(parent);
                AssertValid(child);
                GUTag pTag = QueryTag(parent.Id);
                GUTag cTag = QueryTag(child.Id);

                //保护性检查,防止调用无效
                if (pTag != null && cTag != null)
                {
                    pTag.AddChild(cTag);
                    System.Diagnostics.Debug.Assert(cTag.PId == pTag.Id);
                    AddUptSqlDB(pTag);
                    AddUptSqlDB(cTag);
                    ChangeNotify();

                    //Save(child);  parent保存实际上已经保存所有了,这儿就不需要保存了。
                }
                return(ITagDBConst.R_OK);
            }
        }