Exemple #1
0
 /// <summary>
 /// Handle recurring regular tasks
 /// </summary>
 public void OnTick()
 {
     if (TickCount++ >= TickInterval)
     {
         Logger.LogInformation("Running garbage collection");
         TickCount = 0;
         var garbageItemDatas = GarbageItemDataRepo.ReadExpired();
         if (garbageItemDatas.Count > 0)
         {
             garbageItemDatas.ForEach((garbageItemData) =>
             {
                 try
                 {
                     var item = ItemManager.Read(garbageItemData.DataItemId);
                     Logger.LogDebug($"Garbage collecting: {item.GetProperty<VisibleItemProperty>()?.Name ?? item.Id.ToString()}");
                     ItemManager.Delete(new List <Item>()
                     {
                         item
                     });
                 }
                 catch (Exception e)
                 {
                     ModuleManager.GetLogger().LogException("Failed to garbage collect item", e);
                 }
             });
         }
     }
 }
Exemple #2
0
 /// <summary>
 /// Delete attribute of base item before base item is deleted
 /// </summary>
 /// <param name="item">Base item about to be deleted</param>
 public void OnItemDelete(Item item)
 {
     if (item.HasData <GarbageItemData>())
     {
         var data = item.GetData <GarbageItemData>();
         GarbageItemDataRepo.Delete(data);
     }
 }
Exemple #3
0
 /// <summary>
 /// Create attribute, if present, after item is created
 /// </summary>
 /// <param name="item">Base item just created from datastore</param>
 public void OnItemCreate(Item item)
 {
     if (item.HasData <GarbageItemData>())
     {
         var data = item.GetData <GarbageItemData>();
         data.DataItemId = item.Id;
         GarbageItemDataRepo.Create(data);
     }
 }
Exemple #4
0
        /// <summary>
        /// Append attribute to base item when it is loaded
        /// </summary>
        /// <param name="item">Base item just read from datastore</param>
        public void OnItemRead(Item item)
        {
            var data = GarbageItemDataRepo.Read(item);

            if (data != null)
            {
                item.Data.Add(data);
                item.AddProperty(typeof(GarbageItemProperty), new GarbageItemProperty()
                {
                });
            }
        }
Exemple #5
0
        /// <summary>
        /// Determine if a moved item requires a garbage timer to be set
        /// </summary>
        /// <param name="itemEvent"></param>
        public void OnMoveItemEvent(IEvent itemEvent)
        {
            var moveItemEvent = (CoreMoveItemEvent)itemEvent;

            if (moveItemEvent.Item.GetData <GarbageItemData>() is GarbageItemData garbage)
            {
                if (moveItemEvent.NewParent != null && moveItemEvent.NewParent.HasProperty <LocationItemProperty>())
                {
                    garbage.IntervalTime = DateTime.Now.AddMilliseconds(TickTime * garbage.Interval);
                    GarbageItemDataRepo.Update(garbage);
                }
            }
        }
Exemple #6
0
 /// <summary>
 /// Append attribute to base item when it is loaded
 /// </summary>
 /// <param name="item">Base item about to be persisted to datastore</param>
 public void OnItemUpdate(Item item)
 {
     if (item.HasData <GarbageItemData>())
     {
         var data = item.GetData <GarbageItemData>();
         if (data.Id == Guid.Empty)
         {
             OnItemCreate(item);
         }
         else
         {
             GarbageItemDataRepo.Update(data);
         }
     }
 }
Exemple #7
0
        /// <summary>
        /// Get all unique item identifiers of managed items
        /// </summary>
        /// <returns></returns>
        public List <Guid> GetItemIds()
        {
            var itemIds = GarbageItemDataRepo.GetItemIds();

            return(itemIds);
        }