private void ImportCatalog(string path) { var importJob = new ImportJob(path, "Catalog.xml", true); Action importCatalog = () => { _progressMessenger.AddProgressMessageText("Importing Catalog content...", false, 20); Action <IBackgroundTaskMessage> addMessage = msg => { var isError = msg.MessageType == BackgroundTaskMessageType.Error; var percent = (int)Math.Round(msg.GetOverallProgress() * 100); var message = msg.Exception == null ? msg.Message : string.Format("{0} {1}", msg.Message, msg.ExceptionMessage); _progressMessenger.AddProgressMessageText(message, isError, percent); }; importJob.Execute(addMessage, CancellationToken.None); _progressMessenger.AddProgressMessageText("Done importing Catalog content", false, 60); }; importCatalog(); //We are running in front-end site context, the metafield update events are ignored, we need to sync manually _progressMessenger.AddProgressMessageText("Syncing metaclasses with content types", false, 60); SyncMetaClassesToContentTypeModels(); _progressMessenger.AddProgressMessageText("Done syncing metaclasses with content types", false, 70); }
public void ImportCatalog(string path, Action <string> statusChange) { IProgressMessenger _progressMessenger = new WebProgressMessenger(); var importJob = new ImportJob(path, "Catalog.xml", true); Action importCatalog = () => { _progressMessenger.AddProgressMessageText("Importing Catalog content...", false, 20); Action <IBackgroundTaskMessage> addMessage = msg => { if (msg.MessageType == BackgroundTaskMessageType.Warning && msg.Message.Contains("Overwriting")) { return; } var isError = msg.MessageType == BackgroundTaskMessageType.Error; var percent = (int)Math.Round(msg.GetOverallProgress() * 100); var message = msg.Exception == null ? msg.Message : $"{msg.Message} {msg.ExceptionMessage}"; statusChange($"Message: {message} | Has Error: {isError} | Percent: {percent}"); _progressMessenger.AddProgressMessageText(message, isError, percent); }; importJob.Execute(addMessage, CancellationToken.None); _progressMessenger.AddProgressMessageText("Done importing Catalog content", false, 60); }; importCatalog(); }
private void ImportCatalog(string path) { var importJob = new ImportJob(AppContext.Current.ApplicationId, path, "Catalog.xml", true); Action importCatalog = () => { //_progressMessenger.AddProgressMessageText("Importing Catalog content...", false, 20); Action<IBackgroundTaskMessage> addMessage = msg => { var isError = msg.MessageType == BackgroundTaskMessageType.Error; var percent = (int)Math.Round(msg.GetOverallProgress() * 100); var message = msg.Exception == null ? msg.Message : string.Format("{0} {1}", msg.Message, msg.ExceptionMessage); //_progressMessenger.AddProgressMessageText(message, isError, percent); }; importJob.Execute(addMessage, CancellationToken.None); //_progressMessenger.AddProgressMessageText("Done importing Catalog content", false, 60); }; importCatalog(); //We are running in front-end site context, the metafield update events are ignored, we need to sync manually //_progressMessenger.AddProgressMessageText("Syncing metaclasses with content types", false, 60); SyncMetaClassesToContentTypeModels(); //_progressMessenger.AddProgressMessageText("Done syncing metaclasses with content types", false, 70); }
public void Import(ImportAction action) { if (IsImporting) { return; } var customer = CustomerContext.Current.GetContactById(Guid.Empty); // instantiate the import job here so that it can capture the current EventContext instance. var importJob = new ImportJob(AppContext.Current.ApplicationId, CatalogPackagePath, "Catalog.xml", true); Action importAction = () => { IsImporting = true; try { if ((action & ImportAction.SiteContent) == ImportAction.SiteContent) { _progressMessenger.AddProgressMessageText("Importing Site content...", false, 0); doImportEpiData(SiteContentPath); _progressMessenger.AddProgressMessageText("Done importing Site content.", false, 5); } if ((action & ImportAction.AssetContent) == ImportAction.AssetContent) { _progressMessenger.AddProgressMessageText("Importing Asset content...", false, 10); doImportEpiData(AssetPath); _progressMessenger.AddProgressMessageText("Done importing Asset content.", false, 15); //Reindex the asset contents to make them searchable _progressMessenger.AddProgressMessageText("Start indexing asset contents.", false, 15); ServiceLocator.Current.GetInstance<ReIndexManager>().ReIndex(); _progressMessenger.AddProgressMessageText("Done indexing asset contents.", false, 20); } #region Import catalog and asset mapping if ((action & ImportAction.CatalogContent) == ImportAction.CatalogContent) { _progressMessenger.AddProgressMessageText("Importing Catalog content...", false, 20); Action<IBackgroundTaskMessage> addMessage = msg => { var isError = msg.MessageType == BackgroundTaskMessageType.Error; var percent = (int)Math.Round(msg.GetOverallProgress() * 100); var message = msg.Exception == null ? msg.Message : string.Format("{0} {1}", msg.Message, msg.ExceptionMessage); _progressMessenger.AddProgressMessageText(message, isError, percent); }; importJob.Execute(addMessage, CancellationToken.None); _progressMessenger.AddProgressMessageText("Done importing Catalog content", false, 60); //We are running in front-end site context, the metafield update events are ignored, we need to sync manually _progressMessenger.AddProgressMessageText("Syncing metaclasses with content types", false, 60); SyncMetaClassesToContentTypeModels(); _progressMessenger.AddProgressMessageText("Done syncing metaclasses with content types", false, 70); _progressMessenger.AddProgressMessageText("Rebuilding index...", false, 70); BuildIndex(_progressMessenger, AppContext.Current.ApplicationId, AppContext.Current.ApplicationName, true); _progressMessenger.AddProgressMessageText("Done rebuilding index", false, 90); } #endregion _progressMessenger.SetProgressDone(); IsDone = true; } catch (Exception ex) { var error = ex.Message + "<br />" + ex.StackTrace; _progressMessenger.AddProgressMessageText(error, true, 0); _progressMessenger.SetProgressFailed(); IsFailed = true; _log.Error("Import failed"); _log.Error(ex); throw; } }; Task.Factory.StartNew(importAction); }