Exemplo n.º 1
0
 public ApplicationMetadataManager(IApplicationControllerMetadataBuilder applicationControllerMetadataBuilder, IApplicationEntityMetadataBuilder applicationEntityMetadataBuilder, IApplicationEntityBuilder applicationEntityBuilder, IApplicationMetadataValidationManager applicationMetadataValidationManager, ApplicationMetadataSummary applicationMetadataSummary, IApplicationMetadataSummaryPreValidateProcess[] applicationMetadataSummaryPreValidates, IReflectedClassesBuilder reflectedClassesBuilder)
 {
     _applicationControllerMetadataBuilder   = applicationControllerMetadataBuilder;
     _applicationEntityMetadataBuilder       = applicationEntityMetadataBuilder;
     _applicationEntityBuilder               = applicationEntityBuilder;
     _applicationMetadataValidationManager   = applicationMetadataValidationManager;
     _applicationMetadataSummary             = applicationMetadataSummary;
     _applicationMetadataSummaryPreValidates = applicationMetadataSummaryPreValidates;
     _reflectedClassesBuilder = reflectedClassesBuilder;
 }
        public IEnumerable <EntityMetadata> Build(ApplicationMetadataSummary applicationMetadataSummary)
        {
            var result = new List <EntityMetadata>();

            foreach (var applicationEntity in applicationMetadataSummary.ApplicationEntities)
            {
                var entityMetadata = new EntityMetadata();

                entityMetadata.TypeName   = applicationEntity.EntityType.Name;
                entityMetadata.EntityType = applicationEntity.EntityType;
                // ReSharper disable once AccessToForEachVariableInClosure
                entityMetadata.CreateNewObject = () => Activator.CreateInstance(applicationEntity.EntityType);
                entityMetadata.EntityPropertyMetadata.AddRange(_entityPropertyMetadataBuilder.Build(applicationEntity).ToList());
                entityMetadata.ControllerExists = applicationEntity.ApplicationControllerMetadata != null;

                var attributes = applicationEntity.Attributes.ToList();
                foreach (var attribute in applicationEntity.ApplicationEntityMetadata.Attributes)
                {
                    if (attributes.All(x => x.GetType().Name != attribute.GetType().Name))
                    {
                        attributes.Add(attribute);
                    }
                }
                entityMetadata.EntityAttributes.AddRange(attributes);

                //reflectedClass
                var reflectedClass        = applicationMetadataSummary.ApplicationEntityReflectedClasses.SingleOrDefault(x => x.Name == entityMetadata.TypeName);
                var reflectedMetadatClass = applicationMetadataSummary.ApplicationEntityMetadataReflectedClasses
                                            .SingleOrDefault(
                    x =>
                {
                    var dynamicEntityAttribute = (DynamicEntityAttribute)x.Attributes.SingleOrDefault(y => y.GetType() == typeof(DynamicEntityAttribute));
                    if (dynamicEntityAttribute != null && dynamicEntityAttribute.EntityType != null)
                    {
                        return(dynamicEntityAttribute.EntityType.Name == entityMetadata.TypeName);
                    }
                    return(false);
                });
                if (reflectedClass != null && reflectedMetadatClass != null)
                {
                    reflectedClass.MergeAttributes(reflectedMetadatClass);
                }
                entityMetadata.ReflectedClass = reflectedClass;
                result.Add(entityMetadata);
            }

            return(result);
        }
        public void Process(ApplicationMetadataSummary applicationMetadataSummary)
        {
            var controllers     = applicationMetadataSummary.ApplicationControllers.ToList();
            var controllerNames = controllers.Select(x => x.Name).ToList();

            foreach (var applicationEntity in applicationMetadataSummary.ApplicationEntities)
            {
                var typeName       = applicationEntity.EntityType.Name;
                var controllerName = _namingConventionManager.FindControllerName(controllerNames, typeName);
                if (controllerName != null)
                {
                    var controller = controllers.Single(x => x.Name == controllerName);
                    applicationEntity.ApplicationControllerMetadata = controller;
                }
            }
        }
Exemplo n.º 4
0
 public void ValidateApplicationSummary(ApplicationMetadataSummary applicationMetadataSummary)
 {
     _validationManager.ValidateObject(applicationMetadataSummary);
 }