/// <summary> /// 添加文件夹 /// </summary> /// <param name="entity"></param> public void AddFolder(WindowFolderEntity entity) { Debug.Assert(entity != null, "FormFolderEntity 为 null"); if (entity == null) { return; } //添加索引信息 _indexXml.XPathSelectElement(XPATH_Index_Folder).Add(GetArchiveIndex(entity)); SaveIndexFile(); //发布事件 WindowFolderEventArgs args = new WindowFolderEventArgs(entity); _eventAggregator.GetEvent <WindowFolderAddedEvent>().Publish(args); }
/// <summary> /// 此方法供DeleteFolder调用 /// 作用是避免每次递归都SaveXml /// </summary> /// <param name="id"></param> /// <param name="deleteForm"></param> private void ProcessFolderDelete(string id) { WindowFolderEntity folderEntity = GetFolderEntity(id); Debug.Assert(folderEntity != null, "folderEntity 为 null"); //递归当前目录下所有子目录,删除之 WindowFolderEntityCollection folderCollection = GetFolderCollection(id); foreach (WindowFolderEntity folder in folderCollection) { ProcessFolderDelete(folder.Id); } //删除窗体 foreach (XElement element in from c in _indexXml.XPathSelectElements(String.Format(XPATH_Index_SelectWindow_ByFolderId, id)) select c) { string formId = element.Attribute("Id").Value; //移除索引信息 element.Remove(); //移除实体文件 _packageService.Current.DeleteFile(Path.Combine(Constant.PACKAGE_WINDOW_FOLDER, formId)); //移除缓存 _cachingService.Remove(formId); } //从索引文件中删除本目录 _indexXml.XPathSelectElement(String.Format(XPATH_Index_SelectFolder, id)).Remove(); //发布事件 WindowFolderEventArgs args = new WindowFolderEventArgs(folderEntity); _eventAggregator.GetEvent <WindowFolderRemovedEvent>().Publish(args); }
/// <summary> /// 更新一个文件夹 /// </summary> /// <param name="formFolderEntity"></param> public void UpdateFolder(WindowFolderEntity entity) { Debug.Assert(entity != null, "FormFolderEntity 为 null"); if (entity == null) { return; } //更新索引信息 XElement element = _indexXml.XPathSelectElement(String.Format(XPATH_Index_SelectFolder, entity.Id)); Debug.Assert(element != null, "更新窗体文件夹索引时未找到指定文件夹的索引记录"); if (element != null) { element.ReplaceWith(GetArchiveIndex(entity)); SaveIndexFile(); //发布事件 WindowFolderEventArgs args = new WindowFolderEventArgs(entity); _eventAggregator.GetEvent <WindowFolderUpdatedEvent>().Publish(args); } }