public MetaEntity CreateEntity(MetaEntityNamespace classCollection, String entityName = "") { MetaEntity output = new MetaEntity(); output.EntityClassDefinition = this; output.EntityClassName = name; output.name = entityName; MetaEntityItemSelection itemSelector = new MetaEntityItemSelection(); foreach (var property in Properties) { if (property.type.HasFlag(MetaEntityClassPropertyType.value)) { if (property.type.HasFlag(MetaEntityClassPropertyType.collection)) { output.Setters.Add(new MetaPropertySetter() { Parent = output, name = property.name, Value = new List <Object>() }); } else { output.Setters.Add(new MetaPropertySetter() { Parent = output, name = property.name }); } } else if (property.type.HasFlag(MetaEntityClassPropertyType.entity)) { // itemSelector.SetSelection(classCollection.SelectTarget(property.PropertyTypeName)); var entityClass = classCollection.FindClass(property.PropertyTypeName); // itemSelector.SelectedClass; var subEntity = entityClass.CreateEntity(classCollection, property.name); subEntity.Parent = output; output.Items.Add(subEntity); //classCollection.CreateEntity(property.name)); } } return(output); }
public DataTable CreateDataTable(DataTable output, MetaEntityClassPropertyType typesToInclude = MetaEntityClassPropertyType.value | MetaEntityClassPropertyType.valueCollection) { if (output == null) { output = new DataTable(); } var types = typesToInclude.getEnumListFromFlags <MetaEntityClassPropertyType>(); MetaEntityNamespace Namespace = Parent as MetaEntityNamespace; String namespacePath = this.GetSelectExpression(); foreach (var property in Properties) { if (types.Contains(property.type)) { String column_name = property.GetSelectExpression(); Type propertyType = property.GetValueType(); if (!output.Columns.Contains(column_name)) { if (property.type.HasFlag(MetaEntityClassPropertyType.collection)) { propertyType = typeof(String); } else { } output.Columns.Add(column_name, propertyType).SetHeading(property.name).SetGroup(namespacePath); } } } return(output); }
public override IMetaEntityExpressionTarget SelectTarget(string expressionPathNode) { if (MetaEntityTools.IsMultinodeExpressionPath(expressionPathNode)) { return(this.SelectTargetByPath(expressionPathNode)); } var head = Namespaces.FirstOrDefault(x => x.name.Equals(expressionPathNode)); if (head == null) { MetaEntityNamespace item = new MetaEntityNamespace(); item.name = expressionPathNode; item.Parent = this; Namespaces.Add(item); head = item; } else { head.Parent = this; } return(head); }