/// <summary> /// 获取枚举 /// 可能返回 null /// </summary> /// <param name="id"></param> /// <returns></returns> public EnumEntity GetEnumEntity(string id) { //首先尝试从缓存中获取 XElement cachingElement = (XElement)_cachingService.GetData(id); string strEntity; if (cachingElement == null) { string file = Path.Combine(Constant.PACKAGE_DICTIONARY_FOLDER, id); bool fileExist = _packageService.Current.Container(file); Debug.Assert(fileExist, "枚举文件不存在"); if (fileExist == false) { return(null); } strEntity = _packageService.Current.GetFileContent(file); XElement entityElement = XElement.Parse(strEntity); _cachingService.Add(id, entityElement); } else { strEntity = cachingElement.ToString(); } EnumEntityDev enumEntity = new EnumEntityDev(); enumEntity.FromXml(strEntity); return(enumEntity); }
//TODO:更名为remove /// <summary> /// 删除枚举 /// </summary> /// <param name="id"></param> public void Delete(EnumEntityDev enumEntity) { Debug.Assert(enumEntity != null, "enumEntity 为 null"); if (enumEntity == null) { return; } //移除索引信息 XElement element = _indexXml.XPathSelectElement(String.Format(XPATH_Index_SelectDictionary, enumEntity.Id)); Debug.Assert(element != null, "删除枚举索引时未找到指定枚举的索引记录"); if (element != null) { element.Remove(); SaveIndexFile(); //移除实体文件 _packageService.Current.DeleteFile(Path.Combine(Constant.PACKAGE_DICTIONARY_FOLDER, enumEntity.Id)); _cachingService.Remove(enumEntity.Id); //发布事件 EnumEventArgs args = new EnumEventArgs(enumEntity); _eventAggregator.GetEvent <EnumRemovedEvent>().Publish(args); } }
/// <summary> /// 更新枚举 /// </summary> /// <param name="dataEntity"></param> public void Update(EnumEntityDev enumEntity) { Debug.Assert(enumEntity != null, "enumEntity 为 null"); if (enumEntity == null) { return; } //更新索引信息 XElement element = _indexXml.XPathSelectElement(String.Format(XPATH_Index_SelectDictionary, enumEntity.Id)); Debug.Assert(element != null, "更新枚举索引时未找到指定枚举的索引记录"); if (element != null) { element.ReplaceWith(ArchiveHelper.GetEntityArchiveIndex(enumEntity)); SaveIndexFile(); string xml = enumEntity.ToXml(); XElement xElement = XElement.Parse(xml); //更新数据实体文件 _packageService.Current.AddFileContent(xml, Path.Combine(Constant.PACKAGE_DICTIONARY_FOLDER, enumEntity.Id)); _cachingService.Add(enumEntity.Id, xElement); //发布事件 EnumEventArgs args = new EnumEventArgs(enumEntity); _eventAggregator.GetEvent <EnumUpdatedEvent>().Publish(args); } }
/// <summary> /// 添加一个枚举 /// </summary> /// <param name="enumEntity"></param> public void Add(EnumEntityDev enumEntity) { Debug.Assert(enumEntity != null, "enumEntity 为 null"); if (enumEntity == null) { return; } //添加索引信息 _indexXml.XPathSelectElement(XPATH_Index_Dictionary).Add(ArchiveHelper.GetEntityArchiveIndex(enumEntity)); SaveIndexFile(); string xml = enumEntity.ToXml(); XElement xElement = XElement.Parse(xml); //添加数据实体文件 _packageService.Current.AddFileContent(xml, Path.Combine(Constant.PACKAGE_DICTIONARY_FOLDER, enumEntity.Id)); _cachingService.Add(enumEntity.Id, xElement); //发布事件 EnumEventArgs args = new EnumEventArgs(enumEntity); _eventAggregator.GetEvent <EnumAddedEvent>().Publish(args); }
//public EnumItemEntityDev GetEnumItemEntity(string id) /// <summary> /// 获取枚举项 /// </summary> /// <param name="id"></param> /// <returns></returns> public EnumItemEntityDev GetItemEntity(string id, EnumEntityDev enumEntity) { if (String.IsNullOrEmpty(id) || enumEntity == null) { Debug.Assert(false, "参数异常"); return(null); } string enumId = enumEntity.Id; //判断指定的数据实体是否存在 bool entityExist = EntityExistById(enumId); Debug.Assert(entityExist, "枚举不存在"); if (entityExist == false) { return(null); } //在数据实体XML中拿出数据项节点 XElement entityElement = (XElement)_cachingService.GetData(enumId); string strEntity; if (entityElement == null) { //拿数据实体文件 string file = Path.Combine(Constant.PACKAGE_DICTIONARY_FOLDER, enumId); bool fileExist = _packageService.Current.Container(file); Debug.Assert(fileExist, "枚举文件不存在"); if (fileExist == false) { return(null); } strEntity = _packageService.Current.GetFileContent(file); entityElement = XElement.Parse(strEntity); _cachingService.Add(enumId, entityElement); } XElement itemElement = entityElement.XPathSelectElement(String.Format(XPATH_Dictionary_SelectItem, id)); if (itemElement == null) { return(null); } EnumItemEntityDev dataItemEntity = new EnumItemEntityDev(enumEntity); dataItemEntity.FromXml(itemElement.ToString()); return(dataItemEntity); }
/// <summary> /// 提交 /// 根据enumEntity的Id进行判断,如果已存在,调用update,如果不存在,调用add /// </summary> /// <param name="dataEntity"></param> public void Commit(EnumEntityDev enumEntity) { Debug.Assert(enumEntity != null, "enumEntity 为 null"); if (enumEntity == null) { return; } if (EntityExistById(enumEntity.Id)) { Update(enumEntity); } else { Add(enumEntity); } }