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); }
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); }
//建立两个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); } }