protected virtual bool VerifyEntityTypeCondition(
            [NotNull] string entityPropertyName,
            [NotNull] EntityTypeDefinition entityTypeDefinition,
            [NotNull] EntityProperties entityProperties)
        {
            Assert.ArgumentNotNull(entityPropertyName, "entityPropertyName");
            Assert.ArgumentNotNull(entityTypeDefinition, "entityTypeDefinition");
            Assert.ArgumentNotNull(entityProperties, "entityProperties");

            EntityPropertyValue entityProperty = entityProperties[entityPropertyName];

            if (entityProperty == null)
            {
                return(false);
            }

            string entityPropertyValue = entityProperty.Value;

            if (string.IsNullOrEmpty(entityPropertyValue))
            {
                return(false);
            }

            foreach (string entityTypePropertyValue in entityTypeDefinition.Properties[entityPropertyName])
            {
                if (entityPropertyValue == entityTypePropertyValue)
                {
                    return(true);
                }
            }

            return(false);
        }
        private void OnEnable()
        {
            _myTarget = (EntityTypeDefinition)target;

            _rootElement = new VisualElement();

            _visualTree = AssetDatabaseHelper.LoadFirstAssetByFilter <VisualTreeAsset>("EntityTypeDefinitionTemplate", null);
            var styleSheet = AssetDatabaseHelper.LoadFirstAssetByFilter <StyleSheet>("EntityTypeDefinitionStyle", null);

            _rootElement.styleSheets.Add(styleSheet);
        }
        protected virtual bool IsProperEntityType([NotNull] EntityTypeDefinition entityTypeDefinition, [NotNull] EntityProperties entityProperties)
        {
            Assert.ArgumentNotNull(entityTypeDefinition, "entityTypeDefinition");
            Assert.ArgumentNotNull(entityProperties, "entityProperties");

            foreach (string entityPropertyName in entityTypeDefinition.Properties.Keys)
            {
                if (!this.VerifyEntityTypeCondition(entityPropertyName, entityTypeDefinition, entityProperties))
                {
                    return(false);
                }
            }

            return(true);
        }
        public IEntityGraph <IEntityTypeDefinition> Get(IEnumerable <IMappedIdentifier> identifiers, int traversalDepth)
        {
            var elements = PackageXml.XPathSelectElements("DocumentType");

            var returnVal = new EntityGraph <IEntityTypeDefinition>();

            foreach (var xElement in elements)
            {
                EntityTypeDefinition entityTypeDefinition = new EntityTypeDefinition();
                entityTypeDefinition.Id          = new RepositoryGeneratedIdentifier();
                entityTypeDefinition.Name        = xElement.Element("Name").Value;
                entityTypeDefinition.Alias       = xElement.Element("Alias").Value;
                entityTypeDefinition.GraphSchema = new EntityGraphSchema();
            }

            return(returnVal);
        }
Exemplo n.º 5
0
        public static void GenerateGroupDefinitionsForType(EntityTypeDefinition entityTypeDefinition)
        {
            LoadSettingsFile();

            if (entityTypeDefinition == null)
            {
                return;
            }
            if (_settings == null)
            {
                return;
            }

            var properties = entityTypeDefinition.EntityProperties.GetProperties();

            foreach (EntityProperty property in properties)
            {
                var propertyName   = property.ToString();
                var entityTypeName = entityTypeDefinition.EntityType.ToString();
                if (propertyName.Equals(entityTypeName))
                {
                    break;
                }

                var path = Path.Combine(_settings.DefinitionsRootPath, $"{propertyName}{EntityDefinitionGenerator.NameSuffix}s");

                var typeName = $"{GeneratorConstants.DefinitionNamespace}.{propertyName}{EntityDefinitionGenerator.NameSuffix}";
                var type     = GeneratorUtils.GetTypeFromName(typeName);

                var entityGroupDefinition = ScriptableObject.CreateInstance(type);

                var definition = entityGroupDefinition as IEntityDefinition;
                definition?.SetEntityType(entityTypeDefinition.EntityType);

                if (entityGroupDefinition == null)
                {
                    return;
                }
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                AssetDatabase.CreateAsset(entityGroupDefinition, Path.Combine(path, $"{entityTypeName}.asset"));
            }
        }
Exemplo n.º 6
0
        protected override bool VerifyEntityTypeCondition(
            [NotNull] string entityPropertyName,
            [NotNull] EntityTypeDefinition entityTypeDefinition,
            [NotNull] EntityProperties entityProperties)
        {
            Assert.ArgumentNotNull(entityPropertyName, "entityPropertyName");
            Assert.ArgumentNotNull(entityTypeDefinition, "entityTypeDefinition");
            Assert.ArgumentNotNull(entityProperties, "entityProperties");

            string entityPropertyValue;

            EntityPropertyValue entityProperty = entityProperties["ows_" + entityPropertyName];

            if (entityProperty != null)
            {
                entityPropertyValue = entityProperty.Value;
            }
            else
            {
                if (entityPropertyName != "ContentTypeId")
                {
                    return(false);
                }

                entityPropertyValue = entityProperties.GetMetaInfoProperty(entityPropertyName);
            }

            if (string.IsNullOrEmpty(entityPropertyValue))
            {
                return(false);
            }

            foreach (string entityTypePropertyValue in entityTypeDefinition.Properties[entityPropertyName])
            {
                if (entityPropertyName == "ContentTypeId" ? entityPropertyValue.StartsWith(entityTypePropertyValue) : entityPropertyValue == entityTypePropertyValue)
                {
                    return(true);
                }
            }

            return(false);
        }
        private void InitializeDbModelNavigationProperties()
        {
            var typeInfos = CandidateTypes.Where(x => TypeHelper.IsEntity(x.Value))
                            .Select(x => x.Value.GetTypeInfo()).ToList();

            var excludeTypeList = new List <string>
            {
                nameof(EntityBase),
                nameof(IObjectState),
            };

            foreach (var item in typeInfos)
            {
                if (excludeTypeList.Contains(item.Name))
                {
                    continue;
                }

                Type itemType         = item.AsType();
                var  checkGenericType = itemType.GetGenericArguments();
                if (checkGenericType != null && checkGenericType.Count() > 0)
                {
                    itemType = itemType.GetGenericArguments()[0];
                }

                var props = item.AsType().GetProperties();

                foreach (var prop in props)
                {
                    Type   underlyingType           = null;
                    string fullname                 = prop.PropertyType.FullName;
                    bool   isCollection             = false;
                    EntityTypeDefinition definition = new EntityTypeDefinition();
                    if (typeof(ICollection <IObjectState>).IsAssignableFrom(prop.PropertyType) ||
                        typeof(IEnumerable <IObjectState>).IsAssignableFrom(prop.PropertyType))
                    {
                        isCollection   = true;
                        underlyingType = prop.PropertyType.GetGenericArguments()[0];
                        fullname       = underlyingType.FullName;
                    }
                    if (underlyingType == null && TypeHelper.IsEntity(prop.PropertyType))
                    {
                        underlyingType = prop.PropertyType;
                    }

                    if (underlyingType != null)
                    {
                        definition.PropertyName = prop.Name;
                        definition.IsCollection = isCollection;
                        definition.Metadata     = fullname;
                        List <EntityTypeDefinition> definitions = new List <EntityTypeDefinition>();
                        if (NavigationProperties.TryGetValue(itemType.FullName, out definitions))
                        {
                            definitions.Add(definition);
                        }
                        else
                        {
                            definitions = new List <EntityTypeDefinition> {
                                definition
                            };
                            NavigationProperties.Add(itemType.FullName, definitions);
                        }
                    }
                }
            }
        }