Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        //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);
            }
        }
Beispiel #3
0
        /// <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);
            }
        }
Beispiel #4
0
        /// <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);
        }
Beispiel #5
0
        //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);
        }
Beispiel #6
0
        /// <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);
            }
        }