Beispiel #1
0
        public Asset CreateAsset(object assetValue, string path)
        {
            path = Paths.GetProjectRelativePath(path);
            var asset = GetAsset(path);

            if (asset != null)
            {
                asset.Importer.Value = assetValue;
                asset.Importer.SaveAsset();
                asset.Update();
                AssetUpdated?.Invoke(path);
            }
            else
            {
                asset = new Asset(path);
                asset.Importer.Value = assetValue;
                asset.Importer.SaveAsset();
                asset.Update();
                AddAssetInternal(asset);
            }

            AssetGuidManager.AddNewGuid(asset.Guid, asset.Path, asset.Hash);
            if (!IsEditingAssets)
            {
                AssetGuidManager.Save();
            }

            return(asset);
        }
Beispiel #2
0
        /// <summary>
        /// Deletes a computer from the database.
        /// </summary>
        /// <param name="asset">The computer to be deleted.</param>
        public override void DeleteAsset(Computer asset)
        {
            Db.Remove(asset);
            Db.SaveChanges();

            AssetUpdated?.Invoke();
        }
Beispiel #3
0
        /// <summary>
        /// Adds a new computer to the database.
        /// </summary>
        /// <param name="assets">The computer to be added</param>
        public override void AddAssets(IEnumerable <Computer> assets)
        {
            Db.AddRange(assets);
            Db.SaveChanges();

            AssetUpdated?.Invoke();
        }
Beispiel #4
0
        /// <summary>
        /// This should be called whenever asset value was modified on disk. Updates hashes and asset value while keeping the reference
        /// </summary>
        private void UpdateAssetInternal(Asset oldAsset)
        {
            oldAsset.UpdateValueFromDisk();

            GuidHashTable[oldAsset.Guid] = oldAsset.Hash;
            AssetGuidManager.AddNewGuid(oldAsset.Guid, oldAsset.Path, oldAsset.Hash);

            AssetUpdated?.Invoke(oldAsset.Path);
        }
Beispiel #5
0
        public override void AddAsset(Computer asset)
        {
            if (asset.AssetRecords.Count == 0)
            {
                asset.ComputerRecords.Add(InitialRecord(asset));
            }

            Db.Add(asset);
            Db.SaveChanges();

            AssetUpdated?.Invoke();
        }
Beispiel #6
0
        public void SaveExistngAsset(Asset existingAsset, object newValue)
        {
            existingAsset.Importer.Value = newValue;
            existingAsset.Importer.SaveAsset();
            existingAsset.Update();
            AssetUpdated?.Invoke(existingAsset.Path);

            AssetGuidManager.AddNewGuid(existingAsset.Guid, existingAsset.Path, existingAsset.Hash);
            if (!IsEditingAssets)
            {
                AssetGuidManager.Save();
            }
        }
Beispiel #7
0
        /// <summary>
        /// This method is invoked by a property change in a computer,
        /// which saves the changes to the database and invokes the AssetUpdated event.
        /// </summary>
        protected override void OnAssetUpdated()
        {
            Db.SaveChanges();

            AssetUpdated?.Invoke();
        }