public AssetContentFormViewModel CreateFormViewModelFor(AssetContent assetContent)
        {
            AssetContentFormViewModel viewModel = CreateFormViewModel();

            viewModel.AssetContent = assetContent;
            return(viewModel);
        }
Example #2
0
        /// <summary>
        /// 根据一个Asset信息,下载实际的Asset内容
        /// </summary>
        /// <param name="asset"></param>
        public void DownloadAsset(Asset asset, System.Action <string> cbFinish)
        {
            string fileName = null;
            long   fileSize = 0;

            // 寻找文件名
            if (asset.contents != null)
            {
                for (int i = 0; i < asset.contents.Length; i++)
                {
                    AssetContent content = asset.contents[i];
                    if (content.platform == currentPlatform)
                    {
                        fileName = content.bundleHash;
                        fileSize = content.bundleSize;
                    }
                }
            }

            cbDownloadResourceFinish = cbFinish;
            if (fileName == null)
            {
                // 没找到文件,直接返回null;
                StorageReady(null);
            }
            else
            {
                CheckStorageFile(asset.id, fileName, fileSize, DownloadAssetFile);
            }
        }
Example #3
0
            public void WriteToFile(BinaryWriter Writer)
            {
                StringHelpers.WriteString16(Writer, CutsceneName);
                Writer.Write(unk05);
                Writer.Write(gcsSize);
                AssetContent.WriteToFile(Writer);

                if (SoundContent != null)
                {
                    Writer.Write(true); // Has SPD
                    SoundContent.WriteToFile(Writer);
                }

                // TODO: Not sure if this is fully valid or not..
                if (VehicleContent != null && VehicleContent.Length > 0)
                {
                    Writer.Write(VehicleContent.Length); // Num GCR

                    foreach (GCRData VehicleData in VehicleContent)
                    {
                        VehicleData.WriteToFile(Writer);
                    }
                }
                else
                {
                    Writer.Write(0);
                }
            }
        public ActionConfirmation Delete(int id)
        {
            AssetContent assetContentToDelete = assetContentRepository.Get(id);

            if (assetContentToDelete != null)
            {
                assetContentRepository.Delete(assetContentToDelete);

                try {
                    assetContentRepository.DbContext.CommitChanges();

                    return(ActionConfirmation.CreateSuccessConfirmation(
                               "The assetContent was successfully deleted."));
                }
                catch {
                    assetContentRepository.DbContext.RollbackTransaction();

                    return(ActionConfirmation.CreateFailureConfirmation(
                               "A problem was encountered preventing the assetContent from being deleted. " +
                               "Another item likely depends on this assetContent."));
                }
            }
            else
            {
                return(ActionConfirmation.CreateFailureConfirmation(
                           "The assetContent could not be found for deletion. It may already have been deleted."));
            }
        }
Example #5
0
        public void CanCompareAssetContents()
        {
            AssetContent instance = new AssetContent();

            EntityIdSetter.SetIdOf <int>(instance, 1);

            AssetContent instanceToCompareTo = new AssetContent();

            EntityIdSetter.SetIdOf <int>(instanceToCompareTo, 1);

            instance.ShouldEqual(instanceToCompareTo);
        }
Example #6
0
        public void CannotSaveOrUpdateInvalidAssetContent()
        {
            // Establish Context
            AssetContent invalidAssetContent = new AssetContent();

            // Act
            ActionConfirmation confirmation =
                assetContentManagementService.SaveOrUpdate(invalidAssetContent);

            // Assert
            confirmation.ShouldNotBeNull();
            confirmation.WasSuccessful.ShouldBeFalse();
            confirmation.Value.ShouldBeNull();
        }
Example #7
0
            public void WriteToFile(BinaryWriter Writer)
            {
                StringHelpers.WriteString16(Writer, CutsceneName);
                Writer.Write(unk05);
                Writer.Write(gcsSize);
                AssetContent.WriteToFile(Writer);

                if (SoundContent != null)
                {
                    Writer.Write(true); // Has SPD
                    SoundContent.WriteToFile(Writer);
                }

                Writer.Write(0); // Num GCR
            }
Example #8
0
        public void CanSaveOrUpdateValidAssetContent()
        {
            // Establish Context
            AssetContent validAssetContent =
                AssetContentInstanceFactory.CreateValidTransientAssetContent();

            // Act
            ActionConfirmation confirmation =
                assetContentManagementService.SaveOrUpdate(validAssetContent);

            // Assert
            confirmation.ShouldNotBeNull();
            confirmation.WasSuccessful.ShouldBeTrue();
            confirmation.Value.ShouldNotBeNull();
            confirmation.Value.ShouldEqual(validAssetContent);
        }
Example #9
0
        private async void QueryAssetHash(Dictionary <string, StorageManager.DownloadAssetInfo> infoList, System.Action <Dictionary <string, StorageManager.DownloadAssetInfo> > OnQueryFinish)
        {
            // 先连接server,检查所有Asset对应当前平台的文件Hash,并回填数据
            string[] assetIds = new string[infoList.Count];
            int      index    = 0;

            foreach (DownloadAssetInfo info in infoList.Values)
            {
                assetIds[index] = info.id;
                index++;
            }
            try
            {
                List <Asset> queryRs = await assetAPI.ListAssetsByIds(assetIds, currentPlatform);

                Debug.Log("Query find [" + queryRs.Count + "] assets!");
                for (int i = 0; i < queryRs.Count; i++)
                {
                    Asset asset = queryRs[i];
                    if (infoList.ContainsKey(asset.id))
                    {
                        for (int j = 0; j < asset.contents.Length; j++)
                        {
                            AssetContent content = asset.contents[j];
                            if (content.platform == currentPlatform)
                            {
                                DownloadAssetInfo info = infoList[asset.id];
                                info.hash = content.bundleHash;
                                Debug.Log("Fill Hash for asset [" + asset.id + "]");
                            }
                        }
                    }
                }
            }
            catch (System.Exception e)
            {
                Debug.LogError(e);
                err = e.ToString();
            }

            MEHoloEntrance.Instance.Dispatch((param) => {
                if (OnQueryFinish != null)
                {
                    OnQueryFinish(infoList);
                }
            });
        }
        public void CanCreateValidAssetContentFromForm()
        {
            // Establish Context
            AssetContent assetContentFromForm = new AssetContent();

            assetContentManagementService.Expect(r => r.SaveOrUpdate(assetContentFromForm))
            .Return(ActionConfirmation.CreateSuccessConfirmation("saved"));

            // Act
            RedirectToRouteResult redirectResult =
                assetContentsController.Create(assetContentFromForm)
                .AssertActionRedirect().ToAction("Index");

            // Assert
            assetContentsController.TempData[ControllerEnums.GlobalViewDataProperty.PageMessage.ToString()].ToString()
            .ShouldEqual("saved");
        }
Example #11
0
        public void CanGetAssetContent()
        {
            // Establish Context
            AssetContent assetContentToExpect =
                AssetContentInstanceFactory.CreateValidTransientAssetContent();

            assetContentRepository.Expect(r => r.Get(1))
            .Return(assetContentToExpect);

            // Act
            AssetContent assetContentRetrieved =
                assetContentManagementService.Get(1);

            // Assert
            assetContentRetrieved.ShouldNotBeNull();
            assetContentRetrieved.ShouldEqual(assetContentToExpect);
        }
Example #12
0
        public void CanDeleteAssetContent()
        {
            // Establish Context
            AssetContent assetContentToDelete = new AssetContent();

            assetContentRepository.Expect(r => r.Get(1))
            .Return(assetContentToDelete);

            // Act
            ActionConfirmation confirmation =
                assetContentManagementService.Delete(1);

            // Assert
            confirmation.ShouldNotBeNull();
            confirmation.WasSuccessful.ShouldBeTrue();
            confirmation.Value.ShouldBeNull();
        }
        public void CanShowAssetContent()
        {
            // Establish Context
            AssetContent assetContent =
                AssetContentInstanceFactory.CreateValidTransientAssetContent();

            assetContentManagementService.Expect(r => r.Get(1))
            .Return(assetContent);

            // Act
            ViewResult result = assetContentsController.Show(1).AssertViewRendered();

            // Assert
            result.ViewData.Model.ShouldNotBeNull();
            (result.ViewData.Model as AssetContent).ShouldNotBeNull();
            (result.ViewData.Model as AssetContent).ShouldEqual(assetContent);
        }
Example #14
0
        public string GetFileNameFromAsset(Asset asset)
        {
            string fileName = null;

            if (asset.contents != null)
            {
                for (int i = 0; i < asset.contents.Length; i++)
                {
                    AssetContent content = asset.contents[i];
                    if (content.platform == currentPlatform)
                    {
                        fileName = content.bundleHash;
                    }
                }
            }

            return(fileName);
        }
        public void CannotUpdateInvalidAssetContentFromForm()
        {
            // Establish Context
            AssetContent assetContentFromForm           = new AssetContent();
            AssetContentFormViewModel viewModelToExpect = new AssetContentFormViewModel();

            assetContentManagementService.Expect(r => r.UpdateWith(assetContentFromForm, 0))
            .Return(ActionConfirmation.CreateFailureConfirmation("not updated"));
            assetContentManagementService.Expect(r => r.CreateFormViewModelFor(assetContentFromForm))
            .Return(viewModelToExpect);

            // Act
            ViewResult result =
                assetContentsController.Edit(assetContentFromForm).AssertViewRendered();

            // Assert
            result.ViewData.Model.ShouldNotBeNull();
            (result.ViewData.Model as AssetContentFormViewModel).ShouldNotBeNull();
        }
Example #16
0
        public void CanCreateFormViewModelForAssetContent()
        {
            // Establish Context
            AssetContentFormViewModel viewModelToExpect = new AssetContentFormViewModel();

            AssetContent assetContent =
                AssetContentInstanceFactory.CreateValidTransientAssetContent();

            assetContentRepository.Expect(r => r.Get(1))
            .Return(assetContent);

            // Act
            AssetContentFormViewModel viewModelRetrieved =
                assetContentManagementService.CreateFormViewModelFor(1);

            // Assert
            viewModelRetrieved.ShouldNotBeNull();
            viewModelRetrieved.AssetContent.ShouldNotBeNull();
            viewModelRetrieved.AssetContent.ShouldEqual(assetContent);
        }
        public ActionConfirmation SaveOrUpdate(AssetContent assetContent)
        {
            if (assetContent.IsValid())
            {
                assetContentRepository.SaveOrUpdate(assetContent);

                ActionConfirmation saveOrUpdateConfirmation = ActionConfirmation.CreateSuccessConfirmation(
                    "The assetContent was successfully saved.");
                saveOrUpdateConfirmation.Value = assetContent;

                return(saveOrUpdateConfirmation);
            }
            else
            {
                assetContentRepository.DbContext.RollbackTransaction();

                return(ActionConfirmation.CreateFailureConfirmation(
                           "The assetContent could not be saved due to missing or invalid information."));
            }
        }
Example #18
0
        public ActionResult Edit(AssetContent assetContent)
        {
            if (ViewData.ModelState.IsValid)
            {
                ActionConfirmation updateConfirmation =
                    assetContentManagementService.UpdateWith(assetContent, assetContent.Id);

                if (updateConfirmation.WasSuccessful)
                {
                    TempData[ControllerEnums.GlobalViewDataProperty.PageMessage.ToString()] =
                        updateConfirmation.Message;
                    return(RedirectToAction("Index"));
                }
            }

            AssetContentFormViewModel viewModel =
                assetContentManagementService.CreateFormViewModelFor(assetContent);

            return(View(viewModel));
        }
Example #19
0
        public void CannotUpdateWithInvalidAssetContentFromForm()
        {
            // Establish Context
            AssetContent invalidAssetContentFromForm = new AssetContent();

            // Intentionally empty to ensure successful transfer of values
            AssetContent assetContentFromDb = new AssetContent();

            assetContentRepository.Expect(r => r.Get(1))
            .Return(assetContentFromDb);

            // Act
            ActionConfirmation confirmation =
                assetContentManagementService.UpdateWith(invalidAssetContentFromForm, 1);

            // Assert
            confirmation.ShouldNotBeNull();
            confirmation.WasSuccessful.ShouldBeFalse();
            confirmation.Value.ShouldBeNull();
        }
 private void TransferFormValuesTo(AssetContent assetContentToUpdate, AssetContent assetContentFromForm)
 {
     assetContentToUpdate.Name              = assetContentFromForm.Name;
     assetContentToUpdate.Caption           = assetContentFromForm.Caption;
     assetContentToUpdate.GUID              = assetContentFromForm.GUID;
     assetContentToUpdate.ImageName         = assetContentFromForm.ImageName;
     assetContentToUpdate.ImagePath         = assetContentFromForm.ImagePath;
     assetContentToUpdate.ImagePathWinFS    = assetContentFromForm.ImagePathWinFS;
     assetContentToUpdate.AddDate           = assetContentFromForm.AddDate;
     assetContentToUpdate.Creator           = assetContentFromForm.Creator;
     assetContentToUpdate.DisplayDuration   = assetContentFromForm.DisplayDuration;
     assetContentToUpdate.EditDate          = assetContentFromForm.EditDate;
     assetContentToUpdate.Filename          = assetContentFromForm.Filename;
     assetContentToUpdate.FilenameExtension = assetContentFromForm.FilenameExtension;
     assetContentToUpdate.FilenameNoPath    = assetContentFromForm.FilenameNoPath;
     assetContentToUpdate.Length            = assetContentFromForm.Length;
     assetContentToUpdate.PreviewType       = assetContentFromForm.PreviewType;
     assetContentToUpdate.SubDir            = assetContentFromForm.SubDir;
     assetContentToUpdate.URL           = assetContentFromForm.URL;
     assetContentToUpdate.UserGivenDate = assetContentFromForm.UserGivenDate;
 }
Example #21
0
        /// <summary>
        /// Renders a single page using the input asset and a layout.
        /// </summary>
        /// <param name="input">The input file to render.</param>
        /// <param name="layout">The layout to use for the render.</param>
        /// <returns>The content generated.</returns>
        public AssetContent RenderPage(IAssetFile input, string layout)
        {
            // Create the template with the specified layout
            var headers = input.Meta;
            var content =
                this.GetUsings() + Environment.NewLine +
                "@{Layout=\"" + layout + "\";}" + Environment.NewLine +
                input.Content.AsString();

            // Using a new scope, avoiding state sharing problems that way
            using (var service = new TemplateService())
            {
                // Process the content
                this.ProcessContent(content, service, headers);

                // Parse without caching
                return(AssetContent.FromString(
                           service.Parse(content, headers, null, null)
                           ));
            }
        }
Example #22
0
        public void CanUpdateWithValidAssetContentFromForm()
        {
            // Establish Context
            AssetContent validAssetContentFromForm =
                AssetContentInstanceFactory.CreateValidTransientAssetContent();

            // Intentionally empty to ensure successful transfer of values
            AssetContent assetContentFromDb = new AssetContent();

            assetContentRepository.Expect(r => r.Get(1))
            .Return(assetContentFromDb);

            // Act
            ActionConfirmation confirmation =
                assetContentManagementService.UpdateWith(validAssetContentFromForm, 1);

            // Assert
            confirmation.ShouldNotBeNull();
            confirmation.WasSuccessful.ShouldBeTrue();
            confirmation.Value.ShouldNotBeNull();
            confirmation.Value.ShouldEqual(assetContentFromDb);
            confirmation.Value.ShouldEqual(validAssetContentFromForm);
        }
Example #23
0
        public void CanGetAllAssetContents()
        {
            // Establish Context
            IList <AssetContent> assetContentsToExpect = new List <AssetContent>();

            AssetContent assetContent =
                AssetContentInstanceFactory.CreateValidTransientAssetContent();

            assetContentsToExpect.Add(assetContent);

            assetContentRepository.Expect(r => r.GetAll())
            .Return(assetContentsToExpect);

            // Act
            IList <AssetContent> assetContentsRetrieved =
                assetContentManagementService.GetAll();

            // Assert
            assetContentsRetrieved.ShouldNotBeNull();
            assetContentsRetrieved.Count.ShouldEqual(1);
            assetContentsRetrieved[0].ShouldNotBeNull();
            assetContentsRetrieved[0].ShouldEqual(assetContent);
        }
        public ActionConfirmation UpdateWith(AssetContent assetContentFromForm, int idOfAssetContentToUpdate)
        {
            AssetContent assetContentToUpdate =
                assetContentRepository.Get(idOfAssetContentToUpdate);

            TransferFormValuesTo(assetContentToUpdate, assetContentFromForm);

            if (assetContentToUpdate.IsValid())
            {
                ActionConfirmation updateConfirmation = ActionConfirmation.CreateSuccessConfirmation(
                    "The assetContent was successfully updated.");
                updateConfirmation.Value = assetContentToUpdate;

                return(updateConfirmation);
            }
            else
            {
                assetContentRepository.DbContext.RollbackTransaction();

                return(ActionConfirmation.CreateFailureConfirmation(
                           "The assetContent could not be saved due to missing or invalid information."));
            }
        }
Example #25
0
        public ActionResult Create(AssetContent assetContent)
        {
            if (ViewData.ModelState.IsValid)
            {
                ActionConfirmation saveOrUpdateConfirmation =
                    assetContentManagementService.SaveOrUpdate(assetContent);

                if (saveOrUpdateConfirmation.WasSuccessful)
                {
                    TempData[ControllerEnums.GlobalViewDataProperty.PageMessage.ToString()] =
                        saveOrUpdateConfirmation.Message;
                    return(RedirectToAction("Index"));
                }
            }
            else
            {
                assetContent = null;
            }

            AssetContentFormViewModel viewModel =
                assetContentManagementService.CreateFormViewModelFor(assetContent);

            return(View(viewModel));
        }
        public AssetContentFormViewModel CreateFormViewModelFor(int assetContentId)
        {
            AssetContent assetContent = assetContentRepository.Get(assetContentId);

            return(CreateFormViewModelFor(assetContent));
        }
Example #27
0
        public ActionResult Show(int id)
        {
            AssetContent assetContent = assetContentManagementService.Get(id);

            return(View(assetContent));
        }