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; } } }
public void ValidateApplicationSummary(ApplicationMetadataSummary applicationMetadataSummary) { _validationManager.ValidateObject(applicationMetadataSummary); }