コード例 #1
0
        private static IEntityMetadata CreateMetadata(IExternalSearchQueryResult <VatLayerResponse> resultItem)
        {
            var metadata = new EntityMetadataPart();

            PopulateMetadata(metadata, resultItem);

            return(metadata);
        }
コード例 #2
0
        /// <summary>Creates the metadata.</summary>
        /// <param name="resultItem">The result item.</param>
        /// <returns>The metadata.</returns>
        private IEntityMetadata CreateMetadata(IExternalSearchQueryResult <LibpostalResponse> resultItem, IExternalSearchRequest request)
        {
            var metadata = new EntityMetadataPart();

            PopulateMetadata(metadata, resultItem, request);

            return(metadata);
        }
コード例 #3
0
        /// <summary>Creates the metadata.</summary>
        /// <param name="resultItem">The result item.</param>
        /// <returns>The metadata.</returns>
        private IEntityMetadata CreateMetadata(IExternalSearchQueryResult <MappingResponse> resultItem)
        {
            var metadata = new EntityMetadataPart();

            this.PopulateMetadata(metadata, resultItem);

            return(metadata);
        }
コード例 #4
0
        /// <summary>Creates the metadata.</summary>
        /// <param name="resultItem">The result item.</param>
        /// <returns>The metadata.</returns>
        private IEntityMetadata CreateMetadata(IExternalSearchQueryResult <CompanyAutocompleteResult> resultItem)
        {
            var metadata = new EntityMetadataPart();

            this.PopulateMetadata(metadata, resultItem);

            return(metadata);
        }
コード例 #5
0
        /// <summary>Creates the metadata.</summary>
        /// <param name="resultItem">The result item.</param>
        /// <returns>The metadata.</returns>
        private IEntityMetadata CreateMetadata(IExternalSearchQueryResult <CompanyNew> resultItem)
        {
            var metadata = new EntityMetadataPart();

            PopulateMetadata(metadata, resultItem.Data);

            return(metadata);
        }
コード例 #6
0
 private void OnPublishing(PublishContentContext context, EntityMetadataPart part) {
     if (context.PreviousItemVersionRecord == null) {
         CreateEntity(part);
     }
     else {
         var previousEntity = _contentManager.Get<EntityMetadataPart>(context.Id);
         UpdateEntity(previousEntity, part);
     }
 }
コード例 #7
0
        public void Test()
        {
            // Arrange
            testContext = new TestContext();
            var properties = new EntityMetadataPart();

            properties.Properties.Add(CluedIn.Core.Data.Vocabularies.Vocabularies.CluedInOrganization.Website, "http://sitecore.net");
            properties.Properties.Add(CluedIn.Core.Data.Vocabularies.Vocabularies.CluedInOrganization.AddressCountryCode, "uk");
            properties.Properties.Add("Website", "http://sitecore.net.com");

            IEntityMetadata entityMetadata = new EntityMetadataPart()
            {
                Name       = "Sitecore",
                EntityType = EntityType.Organization,
                Properties = properties.Properties
            };

            var externalSearchProvider = new Mock <CompanyHouseExternalSearchProvider>(MockBehavior.Loose);
            var clues = new List <CompressedClue>();

            externalSearchProvider.CallBase = true;

            testContext.ProcessingHub.Setup(h => h.SendCommand(It.IsAny <ProcessClueCommand>())).Callback <IProcessingCommand>(c => clues.Add(((ProcessClueCommand)c).Clue));
            //this.testContext.Container.Register(Component.For<IPropertyTranslationService>().UsingFactoryMethod(() => new PropertyTranslationService()));
            testContext.Container.Register(Component.For <IExternalSearchProvider>().UsingFactoryMethod(() => externalSearchProvider.Object));

            var context  = testContext.Context.ToProcessingContext();
            var command  = new ExternalSearchCommand();
            var actor    = new ExternalSearchProcessingAccessor(context.ApplicationContext);
            var workflow = new Mock <Workflow>(MockBehavior.Loose, context,
                                               new EmptyWorkflowTemplate <ExternalSearchCommand>())
            {
                CallBase = true
            };

            command.With(context);
            command.OrganizationId = context.Organization.Id;
            command.EntityMetaData = entityMetadata;
            command.Workflow       = workflow.Object;
            context.Workflow       = command.Workflow;

            // Act
            var result = actor.ProcessWorkflowStep(context, command);

            Assert.Equal(WorkflowStepResult.Repeat.SaveResult, result.SaveResult);

            result = actor.ProcessWorkflowStep(context, command);
            Assert.Equal(WorkflowStepResult.Success.SaveResult, result.SaveResult);
            context.Workflow.AddStepResult(result);

            context.Workflow.ProcessStepResult(context, command);

            // Assert
            testContext.ProcessingHub.Verify(h => h.SendCommand(It.IsAny <ProcessClueCommand>()), Times.AtLeastOnce);

            Assert.True(clues.Count > 0);
        }
コード例 #8
0
 private void OnVersioning(VersionContentContext context, EntityMetadataPart existing, EntityMetadataPart building) {
     building.Record.FieldMetadataRecords = new List<FieldMetadataRecord>();
     foreach (var record in existing.Record.FieldMetadataRecords) {
         var newRecord = new FieldMetadataRecord();
         _fieldMetadataRepository.Copy(record, newRecord);
         newRecord.OriginalId = record.Id;
         newRecord.EntityMetadataRecord = building.Record;
         _fieldMetadataRepository.Create(newRecord);
         building.Record.FieldMetadataRecords.Add(newRecord);
     }
 }
コード例 #9
0
        public void Test()
        {
            //testContext.Container.Install(new InstallComponents());

            var properties = new EntityMetadataPart();

            properties.Properties.Add(HelloWorldVocabularies.User.Id, "1");


            // Arrange

            _testContext.Container.Install(new InstallComponents());

            IEntityMetadata entityMetadata = new EntityMetadataPart()
            {
                Name       = "jsonplaceholder",
                EntityType = EntityType.Person,
                Properties = properties.Properties
            };


            //var clues = new List<CompressedClue>();

            //_testContext.ProcessingHub.Setup(h => h.SendCommand(It.IsAny<ProcessClueCommand>())).Callback<IProcessingCommand>(c => clues.Add(((ProcessClueCommand)c).Clue));

            _testContext.Container.Register(Component.For <IExternalSearchProvider>().UsingFactoryMethod(() => new HelloWorldExternalSearchProvider(_testContext.Container.Resolve <IHelloWorldClient>())));


            var processingContext  = _testContext.Context.ToProcessingContext();
            var command            = new ExternalSearchCommand();
            var processingAccessor = new ExternalSearchProcessingAccessor(processingContext.ApplicationContext);
            var commandWorkflow    = new Workflow(processingContext, new EmptyWorkflowTemplate <ExternalSearchCommand>());

            command.With(processingContext);
            command.OrganizationId     = processingContext.Organization.Id;
            command.EntityMetaData     = entityMetadata;
            command.Workflow           = commandWorkflow;
            processingContext.Workflow = command.Workflow;

            var stepResult = processingAccessor.ProcessWorkflowStep(processingContext, command);

            Assert.Equal(WorkflowStepResult.Repeat.SaveResult, stepResult.SaveResult);

            stepResult = processingAccessor.ProcessWorkflowStep(processingContext, command);
            Assert.Equal(WorkflowStepResult.Ignored.SaveResult, stepResult.SaveResult);
            //processingContext.Workflow.AddStepResult(result);

            //processingContext.Workflow.ProcessStepResult(processingContext, command);

            //// Assert
            //testContext.ProcessingHub.Verify(h => h.SendCommand(It.IsAny<ProcessClueCommand>()), Times.AtLeastOnce);

            //Assert.True(clues.Count > 0);
        }
コード例 #10
0
 private void OnPublishing(PublishContentContext context, EntityMetadataPart part)
 {
     if (context.PreviousItemVersionRecord == null)
     {
         CreateEntity(part);
     }
     else
     {
         var previousEntity = _contentManager.Get <EntityMetadataPart>(context.Id);
         UpdateEntity(previousEntity, part);
     }
 }
コード例 #11
0
        /// <summary>Creates the metadata.</summary>
        /// <param name="resultItem">The result item.</param>
        /// <returns>The metadata.</returns>
        private IEntityMetadata CreateMetadata(IExternalSearchQueryResult <PermIdSocialResponse> resultItem)
        {
            if (resultItem == null)
            {
                throw new ArgumentNullException(nameof(resultItem));
            }

            var metadata = new EntityMetadataPart();

            this.PopulateMetadata(metadata, resultItem);

            return(metadata);
        }
コード例 #12
0
        public void TestNoClueProduction(string name)
        {
            IEntityMetadata entityMetadata = new EntityMetadataPart()
            {
                Name       = name,
                EntityType = EntityType.Organization
            };

            Setup(null, entityMetadata);

            testContext.ProcessingHub.Verify(h => h.SendCommand(It.IsAny <ProcessClueCommand>()), Times.Never);
            Assert.True(clues.Count == 0);
        }
コード例 #13
0
 private void OnVersioning(VersionContentContext context, EntityMetadataPart existing, EntityMetadataPart building)
 {
     building.Record.FieldMetadataRecords = new List <FieldMetadataRecord>();
     foreach (var record in existing.Record.FieldMetadataRecords)
     {
         var newRecord = new FieldMetadataRecord();
         _fieldMetadataRepository.Copy(record, newRecord);
         newRecord.OriginalId           = record.Id;
         newRecord.EntityMetadataRecord = building.Record;
         _fieldMetadataRepository.Create(newRecord);
         building.Record.FieldMetadataRecords.Add(newRecord);
     }
 }
コード例 #14
0
        /// <summary>Creates the metadata.</summary>
        /// <param name="resultItem">The result item.</param>
        /// <returns>The metadata.</returns>
        private IEntityMetadata CreateMetadata(IExternalSearchQueryResult <Result> resultItem, IExternalSearchRequest request)
        {
            if (resultItem == null)
            {
                throw new ArgumentNullException(nameof(resultItem));
            }

            var metadata = new EntityMetadataPart();

            PopulateMetadata(metadata, resultItem, request);

            return(metadata);
        }
コード例 #15
0
        public void TestCompanyWithInvalidLeiCode()
        {
            // Arrange
            this.testContext = new TestContext();
            var properties = new EntityMetadataPart();

            properties.Properties.Add(CluedIn.Core.Data.Vocabularies.Vocabularies.CluedInOrganization.CodesLeiCode, "549300TL5406I");

            IEntityMetadata entityMetadata = new EntityMetadataPart()
            {
                Name       = "Saxo Bank",
                EntityType = EntityType.Organization,
                Properties = properties.Properties
            };

            var externalSearchProvider = new Mock <GleifExternalSearchProvider>(MockBehavior.Loose);
            var clues = new List <CompressedClue>();

            externalSearchProvider.CallBase = true;

            this.testContext.ProcessingHub.Setup(h => h.SendCommand(It.IsAny <ProcessClueCommand>())).Callback <IProcessingCommand>(c => clues.Add(((ProcessClueCommand)c).Clue));

            this.testContext.Container.Register(Component.For <IExternalSearchProvider>().UsingFactoryMethod(() => externalSearchProvider.Object));

            var context  = this.testContext.Context.ToProcessingContext();
            var command  = new ExternalSearchCommand();
            var actor    = new ExternalSearchProcessingAccessor(context.ApplicationContext);
            var workflow = new Mock <Workflow>(MockBehavior.Loose, context, new EmptyWorkflowTemplate <ExternalSearchCommand>());

            workflow.CallBase = true;

            command.With(context);
            command.OrganizationId = context.Organization.Id;
            command.EntityMetaData = entityMetadata;
            command.Workflow       = workflow.Object;
            context.Workflow       = command.Workflow;

            // Act
            var result = actor.ProcessWorkflowStep(context, command);

            Assert.Equal(WorkflowStepResult.Ignored.SaveResult, result.SaveResult);

            result = actor.ProcessWorkflowStep(context, command);
            context.Workflow.AddStepResult(result);
            context.Workflow.ProcessStepResult(context, command);

            // Assert
            this.testContext.ProcessingHub.Verify(h => h.SendCommand(It.IsAny <ProcessClueCommand>()), Times.Never);

            Assert.True(clues.Count == 0);
        }
コード例 #16
0
        public void Test()
        {
            // Arrange
            this.testContext = new TestContext();
            IEntityMetadata entityMetadata = new EntityMetadataPart()
            {
                Name       = "Nordea",
                EntityType = EntityType.Organization
            };

            var externalSearchProvider = new Mock <ClearBitExternalSearchProvider>(MockBehavior.Loose);
            var clues = new List <CompressedClue>();

            externalSearchProvider.CallBase = true;

            this.testContext.ProcessingHub.Setup(h => h.SendCommand(It.IsAny <ProcessClueCommand>())).Callback <IProcessingCommand>(c => clues.Add(((ProcessClueCommand)c).Clue));

            this.testContext.Container.Register(Component.For <IExternalSearchProvider>().UsingFactoryMethod(() => externalSearchProvider.Object));

            var context  = this.testContext.Context.ToProcessingContext();
            var command  = new ExternalSearchCommand();
            var actor    = new ExternalSearchProcessingAccessor(context.ApplicationContext);
            var workflow = new Mock <Workflow>(MockBehavior.Loose, context, new EmptyWorkflowTemplate <ExternalSearchCommand>());

            workflow.CallBase = true;

            command.With(context);
            command.OrganizationId = context.Organization.Id;
            command.EntityMetaData = entityMetadata;
            command.Workflow       = workflow.Object;
            context.Workflow       = command.Workflow;

            // Act
            var result = actor.ProcessWorkflowStep(context, command);

            Assert.Equal(WorkflowStepResult.Repeat.SaveResult, result.SaveResult);

            result = actor.ProcessWorkflowStep(context, command);
            Assert.Equal(WorkflowStepResult.Success.SaveResult, result.SaveResult);
            context.Workflow.AddStepResult(result);

            context.Workflow.ProcessStepResult(context, command);

            // Assert
            this.testContext.ProcessingHub.Verify(h => h.SendCommand(It.IsAny <ProcessClueCommand>()), Times.AtLeastOnce);

            Assert.True(clues.Count > 0);
        }
コード例 #17
0
        private void UpdateEntity(EntityMetadataPart previousEntity, EntityMetadataPart entity)
        {
            _contentDefinitionManager.AlterTypeDefinition(entity.Name, builder =>
                                                          builder.DisplayedAs(entity.DisplayName));

            foreach (var fieldMetadataRecord in previousEntity.FieldMetadataRecords)
            {
                var exist = entity.FieldMetadataRecords.Any(x => x.OriginalId == fieldMetadataRecord.Id);
                if (!exist)
                {
                    var record = fieldMetadataRecord;
                    _contentDefinitionManager.AlterPartDefinition(entity.Name,
                                                                  typeBuilder => typeBuilder.RemoveField(record.Name));
                    _schemaUpdateService.DropColumn(entity.Name, fieldMetadataRecord.Name);
                    _fieldEvents.OnDeleting(entity.Name, fieldMetadataRecord.Name);
                }
            }

            var needUpdateFields = new List <FieldMetadataRecord>();

            foreach (var fieldMetadataRecord in entity.FieldMetadataRecords)
            {
                if (fieldMetadataRecord.OriginalId != 0)
                {
                    needUpdateFields.Add(fieldMetadataRecord);
                }
                else
                {
                    AddField(entity.Name, fieldMetadataRecord);
                    _schemaUpdateService.CreateColumn(entity.Name, fieldMetadataRecord.Name, fieldMetadataRecord.ContentFieldDefinitionRecord.Name);
                }
            }

            foreach (var fieldMetadataRecord in needUpdateFields)
            {
                var record   = fieldMetadataRecord;
                var settings = _settingsFormatter.Map(Parse(record.Settings));
                _contentDefinitionManager.AlterPartDefinition(entity.Name, builder =>
                                                              builder.WithField(record.Name, fieldBuilder => {
                    fieldBuilder.WithDisplayName(settings["DisplayName"]);
                    _contentDefinitionEditorEvents.UpdateFieldSettings(fieldBuilder, settings);
                }));
                record.Settings = _settingsFormatter.Map(settings).ToString();
            }
            _entityEvents.OnUpdating(entity.Name);
        }
コード例 #18
0
        public void CreateField(EntityMetadataPart entity, AddFieldViewModel viewModel, IUpdateModel updateModel)
        {
            var settingsDictionary = new SettingsDictionary();

            settingsDictionary["DisplayName"] = viewModel.DisplayName;
            settingsDictionary["AddInLayout"] = viewModel.AddInLayout.ToString();
            settingsDictionary["EntityName"]  = entity.Name;
            var field = new FieldMetadataRecord {
                ContentFieldDefinitionRecord = FetchFieldDefinition(viewModel.FieldTypeName),
                Name = viewModel.Name
            };

            entity.FieldMetadataRecords.Add(field);
            _contentDefinitionEditorEvents.UpdateFieldSettings(viewModel.FieldTypeName, viewModel.Name, settingsDictionary, updateModel);
            field.Settings             = CompileSetting(settingsDictionary);
            field.EntityMetadataRecord = entity.Record;
        }
コード例 #19
0
        public void TestMissingApiToken()
        {
            //Arrange
            var properties = new EntityMetadataPart();

            properties.Properties.Add(CluedIn.Core.Data.Vocabularies.Vocabularies.CluedInOrganization.VatNumber, "asdasd");
            IEntityMetadata entityMetadata = new EntityMetadataPart()
            {
                EntityType = EntityType.Organization,
                Properties = properties.Properties
            };


            // Assert
            Assert.Throws <InvalidOperationException>(() => this.Setup(null, entityMetadata));
            this.testContext.ProcessingHub.Verify(h => h.SendCommand(It.IsAny <ProcessClueCommand>()), Times.Never);
        }
コード例 #20
0
        private void CreateEntity(EntityMetadataPart part) {
            _contentDefinitionManager.AlterTypeDefinition(part.Name, builder => {
                builder.DisplayedAs(part.DisplayName);
                builder.WithPart(part.Name).WithPart("CoeveryCommonPart");
            });

            foreach (var record in part.FieldMetadataRecords) {
                AddField(part.Name, record, false);
            }

            _entityEvents.OnCreated(part.Name);

            _schemaUpdateService.CreateTable(part.Name, context => {
                foreach (var fieldMetadataRecord in part.FieldMetadataRecords) {
                    context.FieldColumn(fieldMetadataRecord.Name,
                        fieldMetadataRecord.ContentFieldDefinitionRecord.Name);
                }
            });
        }
コード例 #21
0
        public void TestNonExistingVATNumber(string vatNumber)
        {
            //Arrange
            var properties = new EntityMetadataPart();

            properties.Properties.Add(CluedIn.Core.Data.Vocabularies.Vocabularies.CluedInOrganization.VatNumber, vatNumber);
            IEntityMetadata entityMetadata = new EntityMetadataPart()
            {
                EntityType = EntityType.Organization,
                Properties = properties.Properties
            };

            var list = new List <string>(new string[] { ApiToken });

            object[] parameters = { list };

            //Act
            this.Setup(parameters, entityMetadata);

            // Assert
            Assert.True(this.clues.Count == 0);
        }
コード例 #22
0
        private void CreateEntity(EntityMetadataPart part)
        {
            _contentDefinitionManager.AlterTypeDefinition(part.Name, builder => {
                builder.DisplayedAs(part.DisplayName);
                builder.WithPart(part.Name).WithPart("CoeveryCommonPart");
            });

            foreach (var record in part.FieldMetadataRecords)
            {
                AddField(part.Name, record, false);
            }

            _entityEvents.OnCreated(part.Name);

            _schemaUpdateService.CreateTable(part.Name, context => {
                foreach (var fieldMetadataRecord in part.FieldMetadataRecords)
                {
                    context.FieldColumn(fieldMetadataRecord.Name,
                                        fieldMetadataRecord.ContentFieldDefinitionRecord.Name);
                }
            });
        }
コード例 #23
0
        public void TestInvalidVATNumber(string vatNumber)
        {
            //Arrange
            var properties = new EntityMetadataPart();

            properties.Properties.Add(CluedIn.Core.Data.Vocabularies.Vocabularies.CluedInOrganization.VatNumber, vatNumber);
            IEntityMetadata entityMetadata = new EntityMetadataPart()
            {
                EntityType = EntityType.Organization,
                Properties = properties.Properties
            };

            var list = new List <string>(new string[] { ApiToken });

            object[] parameters = { list };

            //Act
            this.Setup(parameters, entityMetadata);

            // Assert
            this.testContext.ProcessingHub.Verify(h => h.SendCommand(It.IsAny <ProcessClueCommand>()), Times.Never);
        }
コード例 #24
0
 private void OnVersioned(VersionContentContext context, EntityMetadataPart existing, EntityMetadataPart building)
 {
     CopyRelationshipRecords(_oneToManyRelationshipRepository, existing.Record, building.Record);
     CopyRelationshipRecords(_manyToManyRelationshipRepository, existing.Record, building.Record);
 }
コード例 #25
0
        public void TestClueProductionLocation(string address, string expectedStreetName, string expectedHouseNumber, string expectedZipcode, string expectedZipcodeName)
        {
            // Arrange
            var properties = new EntityMetadataPart();

            properties.Properties.Add(Vocabularies.CluedInOrganization.Address, address);
            IEntityMetadata entityMetadata = new EntityMetadataPart()
            {
                EntityType = EntityType.Location,
                Properties = properties.Properties,
            };

            var externalSearchProvider = new DawaExternalSearchProvider();

            var container = new WindsorContainer();

            container.Register(Component.For(typeof(ILogger <>)).ImplementedBy(typeof(NullLogger <>)).LifestyleSingleton());

            var logger             = Mock.Of <ILogger>();
            var applicationContext = new ApplicationContext(container);
            var context            = new ExecutionContext(applicationContext, new DummyOrganization(applicationContext), logger);

            var queryParametersDict = new Dictionary <string, HashSet <string> >();

            foreach (var property in entityMetadata.Properties)
            {
                queryParametersDict.Add(property.Key, new HashSet <string> {
                    property.Value
                });
            }
            var queryParameters = new DummyExternalSearchQueryParameters(queryParametersDict);
            var request         = new DummyExternalSearchRequest
            {
                EntityMetaData  = entityMetadata,
                QueryParameters = queryParameters
            };

            // Act
            var queries = externalSearchProvider.BuildQueries(context, request);
            var clues   = new List <Clue>();

            foreach (var query in queries)
            {
                var results = externalSearchProvider.ExecuteSearch(context, query);
                foreach (var result in results)
                {
                    var resultClues = externalSearchProvider.BuildClues(context, query, result, request);
                    foreach (var clue in resultClues)
                    {
                        clues.Add(clue);
                    }
                }
            }

            // Assert
            Assert.True(clues.Count > 0);
            foreach (var clue in clues)
            {
                clue.Data.EntityData.Properties.TryGetValue("dawa.organization.StreetName", out var streetName);
                Assert.Equal(expectedStreetName, streetName);

                clue.Data.EntityData.Properties.TryGetValue("dawa.organization.HouseNumber", out var houseNumber);
                Assert.Equal(expectedHouseNumber, houseNumber);

                clue.Data.EntityData.Properties.TryGetValue("dawa.organization.Zipcode", out var zipcode);
                Assert.Equal(expectedZipcode, zipcode);

                clue.Data.EntityData.Properties.TryGetValue("dawa.organization.Zipcodename", out var zipcodeName);
                Assert.Equal(expectedZipcodeName, zipcodeName);
            }

            context.Dispose();
        }
コード例 #26
0
 public bool CheckFieldCreationValid(EntityMetadataPart entity, string name, string displayName) {
     return !entity.FieldMetadataRecords.Any(
         field => string.Equals(field.Name, name, StringComparison.OrdinalIgnoreCase)
                  || string.Equals(ParseSetting(field.Settings)["DisplayName"], displayName, StringComparison.OrdinalIgnoreCase));
 }
コード例 #27
0
 public void CreateField(EntityMetadataPart entity, AddFieldViewModel viewModel, IUpdateModel updateModel) {
     var settingsDictionary = new SettingsDictionary();
     settingsDictionary["DisplayName"] = viewModel.DisplayName;
     settingsDictionary["AddInLayout"] = viewModel.AddInLayout.ToString();
     settingsDictionary["EntityName"] = entity.Name;
     var field = new FieldMetadataRecord {
         ContentFieldDefinitionRecord = FetchFieldDefinition(viewModel.FieldTypeName),
         Name = viewModel.Name
     };
     entity.FieldMetadataRecords.Add(field);
     _contentDefinitionEditorEvents.UpdateFieldSettings(viewModel.FieldTypeName, viewModel.Name, settingsDictionary, updateModel);
     field.Settings = CompileSetting(settingsDictionary);
     field.EntityMetadataRecord = entity.Record;
 }
コード例 #28
0
        private void UpdateEntity(EntityMetadataPart previousEntity, EntityMetadataPart entity) {
            _contentDefinitionManager.AlterTypeDefinition(entity.Name, builder =>
                builder.DisplayedAs(entity.DisplayName));

            foreach (var fieldMetadataRecord in previousEntity.FieldMetadataRecords) {
                var exist = entity.FieldMetadataRecords.Any(x => x.OriginalId == fieldMetadataRecord.Id);
                if (!exist) {
                    var record = fieldMetadataRecord;
                    _contentDefinitionManager.AlterPartDefinition(entity.Name,
                        typeBuilder => typeBuilder.RemoveField(record.Name));
                    _schemaUpdateService.DropColumn(entity.Name, fieldMetadataRecord.Name);
                    _fieldEvents.OnDeleting(entity.Name, fieldMetadataRecord.Name);
                }
            }

            var needUpdateFields = new List<FieldMetadataRecord>();
            foreach (var fieldMetadataRecord in entity.FieldMetadataRecords) {
                if (fieldMetadataRecord.OriginalId != 0) {
                    needUpdateFields.Add(fieldMetadataRecord);
                }
                else {
                    AddField(entity.Name, fieldMetadataRecord);
                    _schemaUpdateService.CreateColumn(entity.Name, fieldMetadataRecord.Name, fieldMetadataRecord.ContentFieldDefinitionRecord.Name);
                }
            }

            foreach (var fieldMetadataRecord in needUpdateFields) {
                var record = fieldMetadataRecord;
                var settings = _settingsFormatter.Map(Parse(record.Settings));
                _contentDefinitionManager.AlterPartDefinition(entity.Name, builder =>
                    builder.WithField(record.Name, fieldBuilder => {
                        fieldBuilder.WithDisplayName(settings["DisplayName"]);
                        _contentDefinitionEditorEvents.UpdateFieldSettings(fieldBuilder, settings);
                    }));
                record.Settings = _settingsFormatter.Map(settings).ToString();
            }
            _entityEvents.OnUpdating(entity.Name);
        }
コード例 #29
0
 public bool CheckFieldCreationValid(EntityMetadataPart entity, string name, string displayName)
 {
     return(!entity.FieldMetadataRecords.Any(
                field => string.Equals(field.Name, name, StringComparison.OrdinalIgnoreCase) ||
                string.Equals(ParseSetting(field.Settings)["DisplayName"], displayName, StringComparison.OrdinalIgnoreCase)));
 }