private string CreateFile(ConnectionData connectionData, string folder, string solutionName, DateTime?createdOn, string fieldTitle, string xmlContent) { string fileName = EntityFileNameFormatter.GetImportJobFileName(connectionData.Name, solutionName, createdOn, fieldTitle, "xml"); string filePath = Path.Combine(folder, FileOperations.RemoveWrongSymbols(fileName)); string name = string.Format("{0} at {1:yyyy.MM.dd HH-mm-ss}", solutionName, createdOn); if (!string.IsNullOrEmpty(xmlContent)) { try { xmlContent = ContentCoparerHelper.FormatXmlByConfiguration(xmlContent, _commonConfig, _xmlOptions); File.WriteAllText(filePath, xmlContent, new UTF8Encoding(false)); this._iWriteToOutput.WriteToOutput(connectionData, Properties.OutputStrings.EntityFieldExportedToFormat5, connectionData.Name, ImportJob.Schema.EntityLogicalName, name, fieldTitle, filePath); } catch (Exception ex) { this._iWriteToOutput.WriteErrorToOutput(connectionData, ex); } } else { this._iWriteToOutput.WriteToOutput(connectionData, Properties.OutputStrings.EntityFieldIsEmptyFormat4, connectionData.Name, ImportJob.Schema.EntityLogicalName, name, fieldTitle); this._iWriteToOutput.ActivateOutputWindow(connectionData); } return(filePath); }
private async Task ExecuteCreatingApplicationRibbon(Func <Task <IOrganizationServiceExtented> > getService) { if (!this.IsControlsEnabled) { return; } if (string.IsNullOrEmpty(_commonConfig.FolderForExport)) { _iWriteToOutput.WriteToOutput(null, Properties.OutputStrings.FolderForExportIsEmpty); _commonConfig.FolderForExport = FileOperations.GetDefaultFolderForExportFilePath(); } else if (!Directory.Exists(_commonConfig.FolderForExport)) { _iWriteToOutput.WriteToOutput(null, Properties.OutputStrings.FolderForExportDoesNotExistsFormat1, _commonConfig.FolderForExport); _commonConfig.FolderForExport = FileOperations.GetDefaultFolderForExportFilePath(); } var service = await getService(); this._iWriteToOutput.WriteToOutputStartOperation(service.ConnectionData, Properties.OperationNames.ExportingApplicationRibbonFormat1, service.ConnectionData.Name); ToggleControls(false, Properties.WindowStatusStrings.ExportingApplicationRibbon); try { var repository = new RibbonCustomizationRepository(service); string ribbonXml = await repository.ExportApplicationRibbonAsync(); ribbonXml = ContentCoparerHelper.FormatXmlByConfiguration(ribbonXml, _commonConfig, _xmlOptions , ribbonEntityName: string.Empty ); { string fileName = EntityFileNameFormatter.GetApplicationRibbonFileName(service.ConnectionData.Name); string filePath = Path.Combine(_commonConfig.FolderForExport, FileOperations.RemoveWrongSymbols(fileName)); File.WriteAllText(filePath, ribbonXml, new UTF8Encoding(false)); this._iWriteToOutput.WriteToOutput(service.ConnectionData, Properties.OutputStrings.ExportedAppliationRibbonForConnectionFormat2, service.ConnectionData.Name, filePath); this._iWriteToOutput.PerformAction(service.ConnectionData, filePath); } } catch (Exception ex) { this._iWriteToOutput.WriteErrorToOutput(service.ConnectionData, ex); } ToggleControls(true, Properties.WindowStatusStrings.ExportingApplicationRibbonCompleted); this._iWriteToOutput.WriteToOutputEndOperation(service.ConnectionData, Properties.OperationNames.ExportingApplicationRibbonFormat1, service.ConnectionData.Name); }
private string CreateFile(ConnectionData connectionData, string name, string nameUnique, Guid id, string fieldTitle, string siteMapXml) { string fileName = EntityFileNameFormatter.GetSiteMapFileName(connectionData.Name, name, id, fieldTitle, "xml"); string filePath = Path.Combine(_commonConfig.FolderForExport, FileOperations.RemoveWrongSymbols(fileName)); if (!string.IsNullOrEmpty(siteMapXml)) { try { //if (_commonConfig.SetXmlSchemasDuringExport) //{ // var schemasResources = AbstractDynamicCommandXsdSchemas.GetXsdSchemas(AbstractDynamicCommandXsdSchemas.SchemaSiteMapXml); // if (schemasResources != null) // { // siteMapXml = ContentCoparerHelper.SetXsdSchema(siteMapXml, schemasResources); // } //} //if (_commonConfig.SetIntellisenseContext) //{ // siteMapXml = ContentCoparerHelper.SetIntellisenseContextSiteMapNameUnique(siteMapXml, nameUnique); //} //if (_commonConfig.SortXmlAttributes) //{ // siteMapXml = ContentCoparerHelper.SortXmlAttributes(siteMapXml); //} //siteMapXml = ContentCoparerHelper.FormatXml(siteMapXml, _commonConfig.ExportXmlAttributeOnNewLine); siteMapXml = ContentCoparerHelper.FormatXmlByConfiguration(siteMapXml, _commonConfig, _xmlOptions , schemaName: AbstractDynamicCommandXsdSchemas.SchemaSiteMapXml , siteMapUniqueName: nameUnique ?? string.Empty ); File.WriteAllText(filePath, siteMapXml, new UTF8Encoding(false)); this._iWriteToOutput.WriteToOutput(connectionData, Properties.OutputStrings.EntityFieldExportedToFormat5, connectionData.Name, SiteMap.Schema.EntityLogicalName, name, fieldTitle, filePath); } catch (Exception ex) { this._iWriteToOutput.WriteErrorToOutput(connectionData, ex); } } else { this._iWriteToOutput.WriteToOutput(connectionData, Properties.OutputStrings.EntityFieldIsEmptyFormat4, connectionData.Name, SiteMap.Schema.EntityLogicalName, name, fieldTitle); this._iWriteToOutput.ActivateOutputWindow(connectionData); } return(filePath); }
private async Task PerformExportXmlToFileAsync(string folder, Guid idCustomControl, string name, string fieldName, string fieldTitle, string extension) { if (!this.IsControlsEnabled) { return; } var service = await GetService(); ToggleControls(service.ConnectionData, false, Properties.WindowStatusStrings.ExportingXmlFieldToFileFormat1, fieldTitle); try { var repository = new CustomControlRepository(service); var customControl = await repository.GetByIdAsync(idCustomControl, new ColumnSet(fieldName)); string xmlContent = customControl.GetAttributeValue <string>(fieldName); if (!string.IsNullOrEmpty(xmlContent)) { if (string.Equals(fieldName, CustomControl.Schema.Attributes.manifest, StringComparison.InvariantCultureIgnoreCase)) { xmlContent = ContentCoparerHelper.FormatXmlByConfiguration(xmlContent, _commonConfig, _xmlOptions , schemaName: AbstractDynamicCommandXsdSchemas.SchemaManifest , customControlId: idCustomControl ); } else if (string.Equals(fieldName, CustomControl.Schema.Attributes.clientjson, StringComparison.InvariantCultureIgnoreCase)) { xmlContent = ContentCoparerHelper.FormatJson(xmlContent); } } string filePath = await CreateFileAsync(folder, idCustomControl, name, fieldTitle, extension, xmlContent); this._iWriteToOutput.PerformAction(service.ConnectionData, filePath); ToggleControls(service.ConnectionData, true, Properties.WindowStatusStrings.ExportingXmlFieldToFileCompletedFormat1, fieldName); } catch (Exception ex) { _iWriteToOutput.WriteErrorToOutput(service.ConnectionData, ex); ToggleControls(service.ConnectionData, true, Properties.WindowStatusStrings.ExportingXmlFieldToFileFailedFormat1, fieldName); } }
private async Task PerformExportApplicationRibbon() { if (!this.IsControlsEnabled) { return; } var service = await GetService(); this._iWriteToOutput.WriteToOutputStartOperation(service.ConnectionData, Properties.OperationNames.ExportingApplicationRibbonFormat1, service.ConnectionData.Name); ToggleControls(service.ConnectionData, false, Properties.WindowStatusStrings.ExportingApplicationRibbon); try { var repository = new RibbonCustomizationRepository(service); string ribbonXml = await repository.ExportApplicationRibbonAsync(); ribbonXml = ContentCoparerHelper.FormatXmlByConfiguration(ribbonXml, _commonConfig, _xmlOptions , ribbonEntityName: string.Empty ); { string fileName = EntityFileNameFormatter.GetApplicationRibbonFileName(service.ConnectionData.Name); string filePath = Path.Combine(_commonConfig.FolderForExport, FileOperations.RemoveWrongSymbols(fileName)); File.WriteAllText(filePath, ribbonXml, new UTF8Encoding(false)); this._iWriteToOutput.WriteToOutput(service.ConnectionData, Properties.OutputStrings.ExportedAppliationRibbonForConnectionFormat2, service.ConnectionData.Name, filePath); this._iWriteToOutput.PerformAction(service.ConnectionData, filePath); } } catch (Exception ex) { this._iWriteToOutput.WriteErrorToOutput(service.ConnectionData, ex); } ToggleControls(service.ConnectionData, true, Properties.WindowStatusStrings.ExportingApplicationRibbonCompleted); this._iWriteToOutput.WriteToOutputEndOperation(service.ConnectionData, Properties.OperationNames.ExportingApplicationRibbonFormat1, service.ConnectionData.Name); }
private async Task <string> CreateFile(string folder, string name, string fieldTitle, string siteMapXml) { var service = await GetService(); string fileName = EntityFileNameFormatter.GetOrganizationFileName(service.ConnectionData.Name, name, fieldTitle, "xml"); string filePath = Path.Combine(folder, FileOperations.RemoveWrongSymbols(fileName)); if (!string.IsNullOrEmpty(siteMapXml)) { try { string schemaName = string.Empty; if (string.Equals(fieldTitle, Organization.Schema.Attributes.sitemapxml, StringComparison.InvariantCultureIgnoreCase) || string.Equals(fieldTitle, Organization.Schema.Attributes.referencesitemapxml, StringComparison.InvariantCultureIgnoreCase) ) { schemaName = AbstractDynamicCommandXsdSchemas.SchemaSiteMapXml; } siteMapXml = ContentCoparerHelper.FormatXmlByConfiguration(siteMapXml, _commonConfig, _xmlOptions , schemaName: schemaName ); File.WriteAllText(filePath, siteMapXml, new UTF8Encoding(false)); this._iWriteToOutput.WriteToOutput(service.ConnectionData, Properties.OutputStrings.EntityFieldExportedToFormat5, service.ConnectionData.Name, Organization.Schema.EntityLogicalName, name, fieldTitle, filePath); } catch (Exception ex) { this._iWriteToOutput.WriteErrorToOutput(service.ConnectionData, ex); } } else { this._iWriteToOutput.WriteToOutput(service.ConnectionData, Properties.OutputStrings.EntityFieldIsEmptyFormat4, service.ConnectionData.Name, Organization.Schema.EntityLogicalName, name, fieldTitle); this._iWriteToOutput.ActivateOutputWindow(service.ConnectionData); } return(filePath); }
private async Task PerformExportApplicationRibbonDiffXml() { if (!this.IsControlsEnabled) { return; } var service = await GetService(); this._iWriteToOutput.WriteToOutputStartOperation(service.ConnectionData, Properties.OperationNames.ExportingApplicationRibbonDiffXmlFormat1, service.ConnectionData.Name); ToggleControls(service.ConnectionData, false, Properties.WindowStatusStrings.ExportingApplicationRibbonDiffXml); var repositoryPublisher = new PublisherRepository(service); var publisherDefault = await repositoryPublisher.GetDefaultPublisherAsync(); if (publisherDefault == null) { ToggleControls(service.ConnectionData, true, Properties.WindowStatusStrings.NotFoundedDefaultPublisher); _iWriteToOutput.ActivateOutputWindow(service.ConnectionData); return; } var repositoryRibbonCustomization = new RibbonCustomizationRepository(service); var ribbonCustomization = await repositoryRibbonCustomization.FindApplicationRibbonCustomizationAsync(); if (ribbonCustomization == null) { ToggleControls(service.ConnectionData, true, Properties.WindowStatusStrings.NotFoundedApplicationRibbonRibbonCustomization); _iWriteToOutput.ActivateOutputWindow(service.ConnectionData); return; } try { string ribbonDiffXml = await repositoryRibbonCustomization.GetRibbonDiffXmlAsync(_iWriteToOutput, null, ribbonCustomization); if (string.IsNullOrEmpty(ribbonDiffXml)) { ToggleControls(service.ConnectionData, true, Properties.WindowStatusStrings.ExportingApplicationRibbonDiffXmlFailed); return; } ribbonDiffXml = ContentCoparerHelper.FormatXmlByConfiguration(ribbonDiffXml, _commonConfig, _xmlOptions , schemaName: AbstractDynamicCommandXsdSchemas.SchemaRibbonXml , ribbonEntityName: string.Empty ); { string fileName = EntityFileNameFormatter.GetApplicationRibbonDiffXmlFileName(service.ConnectionData.Name); string filePath = Path.Combine(_commonConfig.FolderForExport, FileOperations.RemoveWrongSymbols(fileName)); File.WriteAllText(filePath, ribbonDiffXml, new UTF8Encoding(false)); this._iWriteToOutput.WriteToOutput(service.ConnectionData, Properties.OutputStrings.ExportedAppliationRibbonDiffXmlForConnectionFormat2, service.ConnectionData.Name, filePath); this._iWriteToOutput.PerformAction(service.ConnectionData, filePath); } ToggleControls(service.ConnectionData, true, Properties.WindowStatusStrings.ExportingApplicationRibbonDiffXmlCompleted); } catch (Exception ex) { this._iWriteToOutput.WriteErrorToOutput(service.ConnectionData, ex); ToggleControls(service.ConnectionData, true, Properties.WindowStatusStrings.ExportingApplicationRibbonDiffXmlFailed); } this._iWriteToOutput.WriteToOutputEndOperation(service.ConnectionData, Properties.OperationNames.ExportingApplicationRibbonDiffXmlFormat1, service.ConnectionData.Name); }
private async Task PerformUpdateEntityField(string folder, Guid idCustomControl, string name, string fieldName, string fieldTitle, string extension) { if (!this.IsControlsEnabled) { return; } var service = await GetService(); ToggleControls(service.ConnectionData, false, Properties.WindowStatusStrings.UpdatingFieldFormat2, service.ConnectionData.Name, fieldName); try { var repository = new CustomControlRepository(service); var customControl = await repository.GetByIdAsync(idCustomControl, new ColumnSet(fieldName)); string xmlContent = customControl.GetAttributeValue <string>(fieldName); if (string.Equals(fieldName, CustomControl.Schema.Attributes.manifest, StringComparison.InvariantCultureIgnoreCase)) { if (ContentCoparerHelper.TryParseXml(xmlContent, out var tempDoc)) { xmlContent = tempDoc.ToString(); } } else if (string.Equals(fieldName, CustomControl.Schema.Attributes.clientjson, StringComparison.InvariantCultureIgnoreCase)) { xmlContent = ContentCoparerHelper.FormatJson(xmlContent); } { string backUpXmlContent = xmlContent; if (string.Equals(fieldName, CustomControl.Schema.Attributes.manifest, StringComparison.InvariantCultureIgnoreCase)) { backUpXmlContent = ContentCoparerHelper.FormatXmlByConfiguration(backUpXmlContent, _commonConfig, _xmlOptions , schemaName: AbstractDynamicCommandXsdSchemas.SchemaManifest , customControlId: idCustomControl ); } else if (string.Equals(fieldName, CustomControl.Schema.Attributes.clientjson, StringComparison.InvariantCultureIgnoreCase)) { backUpXmlContent = ContentCoparerHelper.FormatJson(backUpXmlContent); } await CreateFileAsync(folder, idCustomControl, name, fieldTitle + " BackUp", extension, backUpXmlContent); } var newText = string.Empty; bool?dialogResult = false; this.Dispatcher.Invoke(() => { var form = new WindowTextField("Enter " + fieldTitle, fieldTitle, xmlContent); dialogResult = form.ShowDialog(); newText = form.FieldText; }); if (dialogResult.GetValueOrDefault() == false) { ToggleControls(service.ConnectionData, true, Properties.WindowStatusStrings.UpdatingFieldCanceledFormat2, service.ConnectionData.Name, fieldName); return; } newText = ContentCoparerHelper.RemoveAllCustomXmlAttributesAndNamespaces(newText); UpdateStatus(service.ConnectionData, Properties.WindowStatusStrings.ValidatingXmlForFieldFormat1, fieldName); if (!ContentCoparerHelper.TryParseXmlDocument(newText, out var doc)) { ToggleControls(service.ConnectionData, true, Properties.WindowStatusStrings.TextIsNotValidXml); _iWriteToOutput.ActivateOutputWindow(service.ConnectionData); return; } newText = doc.ToString(SaveOptions.DisableFormatting); var updateEntity = new CustomControl { Id = idCustomControl }; updateEntity.Attributes[fieldName] = newText; await service.UpdateAsync(updateEntity); ToggleControls(service.ConnectionData, true, Properties.WindowStatusStrings.UpdatingFieldCompletedFormat2, service.ConnectionData.Name, fieldName); } catch (Exception ex) { _iWriteToOutput.WriteErrorToOutput(service.ConnectionData, ex); ToggleControls(service.ConnectionData, true, Properties.WindowStatusStrings.UpdatingFieldFailedFormat2, service.ConnectionData.Name, fieldName); } }
private async Task ExecuteDifferenceApplicationRibbonDiffXml() { if (!this.IsControlsEnabled) { return; } if (string.IsNullOrEmpty(_commonConfig.FolderForExport)) { _iWriteToOutput.WriteToOutput(null, Properties.OutputStrings.FolderForExportIsEmpty); _commonConfig.FolderForExport = FileOperations.GetDefaultFolderForExportFilePath(); } else if (!Directory.Exists(_commonConfig.FolderForExport)) { _iWriteToOutput.WriteToOutput(null, Properties.OutputStrings.FolderForExportDoesNotExistsFormat1, _commonConfig.FolderForExport); _commonConfig.FolderForExport = FileOperations.GetDefaultFolderForExportFilePath(); } var service1 = await GetService1(); var service2 = await GetService2(); this._iWriteToOutput.WriteToOutputStartOperation(null, Properties.OperationNames.ExportingApplicationRibbonDiffXmlConnectionFormat2, service1.ConnectionData.Name, service1.ConnectionData.Name); ToggleControls(false, Properties.WindowStatusStrings.ShowingDifferenceApplicationRibbonsDiffXml); try { string filePath1 = string.Empty; string filePath2 = string.Empty; Task <string> task1 = null; Task <string> task2 = null; { var repositoryRibbonCustomization = new RibbonCustomizationRepository(service1); var ribbonCustomization = await repositoryRibbonCustomization.FindApplicationRibbonCustomizationAsync(); if (ribbonCustomization != null) { task1 = repositoryRibbonCustomization.GetRibbonDiffXmlAsync(_iWriteToOutput, null, ribbonCustomization); } } if (service1.ConnectionData.ConnectionId != service2.ConnectionData.ConnectionId) { var repositoryRibbonCustomization = new RibbonCustomizationRepository(service2); var ribbonCustomization = await repositoryRibbonCustomization.FindApplicationRibbonCustomizationAsync(); if (ribbonCustomization != null) { task2 = repositoryRibbonCustomization.GetRibbonDiffXmlAsync(_iWriteToOutput, null, ribbonCustomization); } } if (task1 != null) { string ribbonDiffXml = await task1; if (!string.IsNullOrEmpty(ribbonDiffXml)) { ribbonDiffXml = ContentCoparerHelper.FormatXmlByConfiguration(ribbonDiffXml, _commonConfig, _xmlOptions , schemaName: AbstractDynamicCommandXsdSchemas.SchemaRibbonXml , ribbonEntityName: string.Empty ); string fileName1 = EntityFileNameFormatter.GetApplicationRibbonDiffXmlFileName(service1.ConnectionData.Name); filePath1 = Path.Combine(_commonConfig.FolderForExport, FileOperations.RemoveWrongSymbols(fileName1)); File.WriteAllText(filePath1, ribbonDiffXml, new UTF8Encoding(false)); } } if (task2 != null) { string ribbonDiffXml = await task2; if (!string.IsNullOrEmpty(ribbonDiffXml)) { ribbonDiffXml = ContentCoparerHelper.FormatXmlByConfiguration(ribbonDiffXml, _commonConfig, _xmlOptions , schemaName: AbstractDynamicCommandXsdSchemas.SchemaRibbonXml , ribbonEntityName: string.Empty ); string fileName2 = EntityFileNameFormatter.GetApplicationRibbonDiffXmlFileName(service2.ConnectionData.Name); filePath2 = Path.Combine(_commonConfig.FolderForExport, FileOperations.RemoveWrongSymbols(fileName2)); File.WriteAllText(filePath2, ribbonDiffXml, new UTF8Encoding(false)); } } this._iWriteToOutput.WriteToOutput(null, Properties.OutputStrings.ExportedAppliationRibbonDiffXmlForConnectionFormat2, service1.ConnectionData.Name, filePath1); if (service1.ConnectionData.ConnectionId != service2.ConnectionData.ConnectionId) { this._iWriteToOutput.WriteToOutput(null, Properties.OutputStrings.ExportedAppliationRibbonDiffXmlForConnectionFormat2, service2.ConnectionData.Name, filePath2); } if (File.Exists(filePath1) && File.Exists(filePath2)) { this._iWriteToOutput.ProcessStartProgramComparer(filePath1, filePath2, Path.GetFileName(filePath1), Path.GetFileName(filePath2)); } else { this._iWriteToOutput.PerformAction(service1.ConnectionData, filePath1); this._iWriteToOutput.PerformAction(service2.ConnectionData, filePath2); } ToggleControls(true, Properties.WindowStatusStrings.ShowingDifferenceApplicationRibbonsDiffXmlCompleted); } catch (Exception ex) { this._iWriteToOutput.WriteErrorToOutput(null, ex); ToggleControls(true, Properties.WindowStatusStrings.ShowingDifferenceApplicationRibbonsDiffXmlFailed); } this._iWriteToOutput.WriteToOutputEndOperation(null, Properties.OperationNames.ExportingApplicationRibbonDiffXmlConnectionFormat2, service1.ConnectionData.Name, service1.ConnectionData.Name); }
public async Task PerformUpdateRibbonDiffXml(IWriteToOutput iWriteToOutput, CommonConfiguration commonConfig, XDocument doc, EntityMetadata entityMetadata, RibbonCustomization ribbonCustomization) { if (entityMetadata == null && ribbonCustomization == null) { throw new ArgumentException("entityMetadata or ribbonCustomization"); } ContentCoparerHelper.ClearRoot(doc); Publisher publisherDefault = null; { var repositoryPublisher = new PublisherRepository(_service); publisherDefault = await repositoryPublisher.GetDefaultPublisherAsync(); if (publisherDefault == null) { iWriteToOutput.WriteToOutput(_service.ConnectionData, Properties.WindowStatusStrings.NotFoundedDefaultPublisher); iWriteToOutput.ActivateOutputWindow(_service.ConnectionData); return; } } var solutionUniqueName = string.Format("RibbonDiffXml_{0}", Guid.NewGuid()); solutionUniqueName = solutionUniqueName.Replace("-", "_"); var solution = new Solution() { UniqueName = solutionUniqueName, FriendlyName = solutionUniqueName, Description = "Temporary solution for exporting RibbonDiffXml.", PublisherId = publisherDefault.ToEntityReference(), Version = "1.0.0.0", }; iWriteToOutput.WriteToOutput(_service.ConnectionData, Properties.WindowStatusStrings.CreatingNewSolutionFormat1, solutionUniqueName); solution.Id = await _service.CreateAsync(solution); iWriteToOutput.WriteToOutputSolutionUri(_service.ConnectionData, solution.UniqueName, solution.Id); try { if (entityMetadata != null) { iWriteToOutput.WriteToOutput(_service.ConnectionData, Properties.WindowStatusStrings.AddingInSolutionEntityFormat3, _service.ConnectionData.Name, solutionUniqueName, entityMetadata.LogicalName); { var repositorySolutionComponent = new SolutionComponentRepository(_service); await repositorySolutionComponent.AddSolutionComponentsAsync(solutionUniqueName, new[] { new SolutionComponent() { ComponentType = new OptionSetValue((int)ComponentType.Entity), ObjectId = entityMetadata.MetadataId.Value, RootComponentBehaviorEnum = SolutionComponent.Schema.OptionSets.rootcomponentbehavior.Include_Subcomponents_0, } }); } iWriteToOutput.WriteToOutput(_service.ConnectionData, Properties.WindowStatusStrings.ExportingSolutionAndExtractingRibbonDiffXmlForEntityFormat2, solutionUniqueName, entityMetadata.LogicalName); } else if (ribbonCustomization != null) { iWriteToOutput.WriteToOutput(_service.ConnectionData, Properties.WindowStatusStrings.AddingInSolutionApplicationRibbonFormat2, _service.ConnectionData.Name, solutionUniqueName); { var repositorySolutionComponent = new SolutionComponentRepository(_service); await repositorySolutionComponent.AddSolutionComponentsAsync(solutionUniqueName, new[] { new SolutionComponent() { ComponentType = new OptionSetValue((int)ComponentType.RibbonCustomization), ObjectId = ribbonCustomization.Id, RootComponentBehaviorEnum = SolutionComponent.Schema.OptionSets.rootcomponentbehavior.Include_Subcomponents_0, } }); } iWriteToOutput.WriteToOutput(_service.ConnectionData, Properties.WindowStatusStrings.ExportingSolutionAndExtractingApplicationRibbonDiffXmlFormat1, solutionUniqueName); } var repository = new ExportSolutionHelper(_service); var solutionBodyBinary = await repository.ExportSolutionAndGetBodyBinaryAsync(solutionUniqueName); { string fileName = EntityFileNameFormatter.GetSolutionFileName(_service.ConnectionData.Name, solution.UniqueName, "Solution Backup", "zip"); string filePath = Path.Combine(commonConfig.FolderForExport, FileOperations.RemoveWrongSymbols(fileName)); File.WriteAllBytes(filePath, solutionBodyBinary); iWriteToOutput.WriteToOutput(_service.ConnectionData, "Solution {0} Backup exported to {1}", solution.UniqueName, filePath); iWriteToOutput.WriteToOutputFilePathUri(_service.ConnectionData, filePath); } string ribbonDiffXml = string.Empty; if (entityMetadata != null) { ribbonDiffXml = ExportSolutionHelper.GetRibbonDiffXmlForEntityFromSolutionBody(entityMetadata.LogicalName, solutionBodyBinary); } else if (ribbonCustomization != null) { ribbonDiffXml = ExportSolutionHelper.GetApplicationRibbonDiffXmlFromSolutionBody(solutionBodyBinary); } ribbonDiffXml = ContentCoparerHelper.FormatXmlByConfiguration(ribbonDiffXml, commonConfig, XmlOptionsControls.RibbonFull , schemaName: AbstractDynamicCommandXsdSchemas.SchemaRibbonXml , ribbonEntityName: entityMetadata?.LogicalName ?? string.Empty ); { string filePath = string.Empty; if (entityMetadata != null) { string fileName = EntityFileNameFormatter.GetEntityRibbonDiffXmlFileName(_service.ConnectionData.Name, entityMetadata.LogicalName, "BackUp", "xml"); filePath = Path.Combine(commonConfig.FolderForExport, FileOperations.RemoveWrongSymbols(fileName)); iWriteToOutput.WriteToOutput(_service.ConnectionData, "{0} RibbonDiffXml BackUp exported to {1}", entityMetadata.LogicalName, filePath); } else if (ribbonCustomization != null) { string fileName = EntityFileNameFormatter.GetApplicationRibbonDiffXmlFileName(_service.ConnectionData.Name, "BackUp", "xml"); filePath = Path.Combine(commonConfig.FolderForExport, FileOperations.RemoveWrongSymbols(fileName)); iWriteToOutput.WriteToOutput(_service.ConnectionData, "Application RibbonDiffXml BackUp exported to {0}", filePath); } File.WriteAllText(filePath, ribbonDiffXml, new UTF8Encoding(false)); iWriteToOutput.WriteToOutputFilePathUri(_service.ConnectionData, filePath); } if (entityMetadata != null) { solutionBodyBinary = ExportSolutionHelper.ReplaceRibbonDiffXmlForEntityInSolutionBody(entityMetadata.LogicalName, solutionBodyBinary, doc.Root); } else if (ribbonCustomization != null) { solutionBodyBinary = ExportSolutionHelper.ReplaceApplicationRibbonDiffXmlInSolutionBody(solutionBodyBinary, doc.Root); } { string fileName = EntityFileNameFormatter.GetSolutionFileName(_service.ConnectionData.Name, solution.UniqueName, "Changed Solution Backup", "zip"); string filePath = Path.Combine(commonConfig.FolderForExport, FileOperations.RemoveWrongSymbols(fileName)); File.WriteAllBytes(filePath, solutionBodyBinary); iWriteToOutput.WriteToOutput(_service.ConnectionData, "Changed Solution {0} Backup exported to {1}", solution.UniqueName, filePath); iWriteToOutput.WriteToOutputFilePathUri(_service.ConnectionData, filePath); } iWriteToOutput.WriteToOutput(_service.ConnectionData, Properties.WindowStatusStrings.ImportingSolutionFormat1, solutionUniqueName); await repository.ImportSolutionAsync(solutionBodyBinary); await DeleteSolution(iWriteToOutput, solution); { var repositoryPublish = new PublishActionsRepository(_service); if (entityMetadata != null) { iWriteToOutput.WriteToOutput(_service.ConnectionData, Properties.WindowStatusStrings.PublishingEntitiesFormat2, _service.ConnectionData.Name, entityMetadata.LogicalName); await repositoryPublish.PublishEntitiesAsync(new[] { entityMetadata.LogicalName }); } else if (ribbonCustomization != null) { iWriteToOutput.WriteToOutput(_service.ConnectionData, Properties.WindowStatusStrings.PublishingApplicationRibbonFormat1, _service.ConnectionData.Name); await repositoryPublish.PublishApplicationRibbonAsync(); } } } finally { #pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed DeleteSolution(iWriteToOutput, solution); #pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed } }