public override IMetaEntityExpressionTarget SelectTarget(string expressionPathNode) { IMetaEntityExpressionTarget head = this; if (expressionPathNode.isNullOrEmpty()) { return(head); } MetaEntityClassProperty property = this.EntityClassDefinition.Properties.FirstOrDefault(x => x.name.Equals(expressionPathNode)); if (property.type.HasFlag(MetaEntityClassPropertyType.value)) { head = Setters.FirstOrDefault(x => x.name == expressionPathNode); } else if (property.type.HasFlag(MetaEntityClassPropertyType.entity)) { head = Items.FirstOrDefault(x => x.name == expressionPathNode); //if (property.type.HasFlag(MetaEntityClassPropertyType.collection)) //{ // return property; //} //else //{ //} } ; return(head); }
public TypedObjectWorkshop(MetaEntityNamespaceCollection namespaces, TypedObjectWorkshopSettings workshopSettings, IDataMiningTypeProvider typeProvider) { Namespaces = namespaces; TypeProvider = typeProvider; foreach (TypedObjectProviderDefinition provider in workshopSettings.providers) { TypedObjectProvider provider_instance = new TypedObjectProvider(provider); MetaEntityClass entityClass = Namespaces.FindClass(provider.EntityClassNamePath); provider_instance.Deploy(entityClass, typeProvider); ObjectProviders.Add(provider_instance); } foreach (TypedObjectProvider provider in ObjectProviders) { foreach (TypePropertyMapDefinitionItem itemDefinition in provider.map.items) { PropertyInfo pi = provider.type.GetProperty(itemDefinition.typePropertyName); TypePropertyMapItem mapItem = new TypePropertyMapItem() { metaPropertyName = itemDefinition.metaPropertyName, typePropertyName = itemDefinition.typePropertyName, propertyInfo = pi }; //var IListInterface = pi.PropertyType.GetInterface("IList"); //Type[] GenericArguments = pi.PropertyType.GetGenericArguments(); //if (GenericArguments.Any()) //{ //} TypedObjectProvider subentity_provider = GetProviderForType(pi.PropertyType); mapItem.TypeProvider = subentity_provider; IMetaEntityExpressionTarget metaTarget = provider.entityClass.SelectTargetByPath(itemDefinition.metaPropertyName); if (metaTarget is MetaEntityClassProperty metaProperty) { mapItem.metaProperty = metaProperty; } if (itemDefinition.converter != null) { IPropertyItemConverter mapConverter = itemDefinition.converter.GetConverter(pi); mapItem.converter = mapConverter; } provider.items.Add(mapItem); } } }
public static IMetaEntityExpressionTarget SelectTargetByPath(this IMetaEntityExpressionTarget entity, String expression) { List <String> parts = expression.SplitSmart("."); IMetaEntityExpressionTarget head = entity as IMetaEntityExpressionTarget; IMetaEntityExpressionTarget lastHead = null; foreach (String part in parts) { if (head != null) { if (lastHead != head) { if (head.Parent == null) { if (lastHead != null) { head.Parent = lastHead; } } } lastHead = head; head = head.SelectTarget(part); } //if (head is MetaEntity entityHead) //{ // MetaEntityClassProperty property = entityHead.EntityClassDefinition.Properties.FirstOrDefault(x => x.name == part); // if (property.type.HasFlag(MetaEntityClassPropertyType.value)) // { // head = entity.Setters.FirstOrDefault(x => x.name == part); // } else if (property.type.HasFlag(MetaEntityClassPropertyType.entity)) // { // head = entity.items.FirstOrDefault(x => x.name == part); // }; //} else if (head is MetaPropertySetter entityProperty) { // return head; //} } return(head); }
public void SetSelection(IMetaEntityExpressionTarget target, Boolean isFirst = true) { if (target == null) { return; } if (isFirst) { SelectedClass = null; SelectedNamespace = null; SelectedNamespaceCollection = null; SelectedProperty = null; } if (target is MetaEntityClassProperty targetProperty) { SelectedProperty = targetProperty; } else if (target is MetaEntityClass targetClass) { SelectedClass = targetClass; } else if (target is MetaEntityNamespace targetNamespace) { SelectedNamespace = targetNamespace; } else if (target is MetaEntityNamespaceCollection targetNamespaceCollection) { SelectedNamespaceCollection = targetNamespaceCollection; } if (target.Parent != null && target.Parent != target) { SetSelection(target.Parent, false); } }
public override IMetaEntityExpressionTarget SelectTarget(string expressionPathNode) { if (MetaEntityTools.IsMultinodeExpressionPath(expressionPathNode)) { return(Parent.SelectTargetByPath(expressionPathNode)); } IMetaEntityExpressionTarget head = this; MetaEntityClassProperty property = this.Properties.FirstOrDefault(x => x.name == expressionPathNode); if (property == null) { property = new MetaEntityClassProperty() { name = expressionPathNode, type = MetaEntityClassPropertyType.none }; AddProperty(property, false); } return(property); }
public string GetNamepath(IMetaEntityExpressionTarget fromParent = null) { return(this.GetSelectExpression(fromParent)); }
public static String GetSelectExpression(this IMetaEntityExpressionTargetWithPath entity, IMetaEntityExpressionTarget fromParent = null) { String output = ""; if (entity.Parent != null) { if (fromParent != entity.Parent) { if (entity.Parent is IMetaEntityExpressionTargetWithPath parentWithPath) { if (entity.Parent != entity) { output = parentWithPath.GetSelectExpression(fromParent); } } } else { } } output = output.add(entity.name, "."); return(output); }
public MetaEntityItemSelection(IMetaEntityExpressionTarget target) { SetSelection(target, true); }