public MetadataProviderService(IMetadataProviderService defaultService, IDictionary<string, string> paramters)
        {
            MakeReadonlyFieldsEditable = ConfigHelper.GetAppSettingOrDefault("MakeReadonlyFieldsEditable", false);
            Metadata = defaultService.LoadMetadata();
            var prop = typeof(AttributeMetadata).GetProperty("IsValidForCreate", BindingFlags.Public | BindingFlags.Instance);
            foreach (var att in Metadata.Entities.SelectMany(entity => entity.Attributes)) {
                switch (att.LogicalName)
                {
                    case "modifiedonbehalfby":
                    case "createdonbehalfby":
                    case "overriddencreatedon":
                            
                        prop.SetValue(att, true);
                        break;

                    case "createdby":
                    case "createdon":
                    case "modifiedby":
                    case "modifiedon":
                    case "owningbusinessunit":
                    case "owningteam":
                    case "owninguser":
                        if (MakeReadonlyFieldsEditable)
                        {
                            prop.SetValue(att, true);
                        }
                        break;
                }
            }
        }
        public MetadataProviderService(IMetadataProviderService defaultService, IDictionary <string, string> paramters)
        {
            MakeReadonlyFieldsEditable = ConfigHelper.GetAppSettingOrDefault("MakeReadonlyFieldsEditable", false);
            Metadata = defaultService.LoadMetadata();
            var prop = typeof(AttributeMetadata).GetProperty("IsValidForCreate", BindingFlags.Public | BindingFlags.Instance);

            foreach (var att in Metadata.Entities.SelectMany(entity => entity.Attributes))
            {
                switch (att.LogicalName)
                {
                case "modifiedonbehalfby":
                case "createdonbehalfby":
                case "overriddencreatedon":

                    prop.SetValue(att, true);
                    break;

                case "createdby":
                case "createdon":
                case "modifiedby":
                case "modifiedon":
                case "owningbusinessunit":
                case "owningteam":
                case "owninguser":
                    if (MakeReadonlyFieldsEditable)
                    {
                        prop.SetValue(att, true);
                    }
                    break;
                }
            }
        }
示例#3
0
 public IOrganizationMetadata LoadMetadata()
 {
     if (cachedMetadata == null)
     {
         cachedMetadata = defaultMetadataService.LoadMetadata();
     }
     return(cachedMetadata);
 }
示例#4
0
        public void TestInitialise()
        {
            metadataProviderService = Substitute.For <IMetadataProviderService>();
            organizationMetadata    = Substitute.For <IOrganizationMetadata>();
            metadataProviderService.LoadMetadata().Returns(organizationMetadata);
            serviceProvider.GetService(typeof(IMetadataProviderService)).Returns(metadataProviderService);

            filterService.GenerateAttribute(Arg.Any <AttributeMetadata>(), serviceProvider).Returns(true);
            parameters = new Dictionary <string, string> {
            };

            sut = new CodeFilteringService(filterService, parameters);
        }
示例#5
0
        public void CustomizeCodeDom(CodeCompileUnit codeCompileUnit, IServiceProvider services)
        {
            if (codeCompileUnit == null)
            {
                throw new ArgumentNullException(nameof(codeCompileUnit));
            }
            if (services == null)
            {
                throw new ArgumentNullException(nameof(services));
            }

            Console.WriteLine(string.Empty);
            Console.WriteLine("Generating code is in progress.");

            ReferencedOptionSetNames = new List <string>();

            ICodeWriterFilterService codeWriterFilterService = (ICodeWriterFilterService)services.GetService(typeof(ICodeWriterFilterService));
            IMetadataProviderService metadataProviderService = (IMetadataProviderService)services.GetService(typeof(IMetadataProviderService));
            IOrganizationMetadata    organizationMetadata    = metadataProviderService.LoadMetadata();

            // ServiceHelper.IntersectionEntityList = organizationMetadata.Entities.Where(x => x.IsIntersect == true).ToList();

            foreach (CodeNamespace codeNamespace in codeCompileUnit.Namespaces)
            {
                foreach (EntityInfo entityInfo in ServiceHelper.EntityList)
                {
                    EntityMetadata entityMetadata = entityInfo.EntityMetadata;

                    CodeTypeDeclaration codeTypeDeclaration = codeNamespace
                                                              .Types
                                                              .OfType <CodeTypeDeclaration>()
                                                              .FirstOrDefault(codeType => codeType.Name.ToUpperInvariant() == entityMetadata.SchemaName.ToUpperInvariant());

                    GenerateMultiSelectOptionSets(codeNamespace, codeTypeDeclaration, entityMetadata);

                    GenerateOptionSets(codeNamespace, codeTypeDeclaration, entityMetadata);

                    GenerateSetterForReadOnlyFields(codeTypeDeclaration, entityMetadata);
                }
            }

            ExcludeNonReferencedGlobalOptionSets(codeCompileUnit, organizationMetadata);

            GenerateFieldStructures(codeCompileUnit);

            GenerateCodeFiles(codeCompileUnit);

            CleanupNamespaces(codeCompileUnit);

            Console.WriteLine("Generating code completed successfully.");
        }
示例#6
0
        public void TestInitialise()
        {
            metadataProviderService = Substitute.For <IMetadataProviderService>();
            organizationMetadata    = Substitute.For <IOrganizationMetadata>();
            metadataProviderService.LoadMetadata().Returns(organizationMetadata);
            serviceProvider.GetService(typeof(IMetadataProviderService)).Returns(metadataProviderService);

            namingService = Substitute.For <INamingService>();
            parameters    = new Dictionary <string, string> {
                { "UseDisplayNames", true.ToString() }
            };

            testMetadata = new TestMetadata(filterService);

            organizationMetadata.Entities.Returns(testMetadata.ToArray());

            sut = new CodeNamingService(namingService, parameters);
        }