private OdcmField WriteNavigationField(OdcmClass odcmClass, IEdmNavigationProperty navigationProperty) { OdcmField odcmField = WriteField(odcmClass, navigationProperty); odcmField.ContainsTarget = navigationProperty.ContainsTarget; odcmField.IsLink = true; return(odcmField); }
private void WriteProperty(OdcmClass odcmClass, OdcmField odcmField, IEdmEntitySet entitySet) { OdcmProperty odcmProperty = new OdcmProperty(entitySet.Name); odcmProperty.Class = odcmClass; odcmProperty.Field = odcmField; odcmProperty.Type = odcmField.Type; odcmClass.Properties.Add(odcmProperty); }
private void WriteProperty(OdcmClass odcmClass, OdcmField odcmField, IEdmProperty property) { OdcmProperty odcmProperty = new OdcmProperty(property.Name); odcmProperty.Class = odcmClass; odcmProperty.IsNullable = property.Type.IsNullable; odcmClass.Properties.Add(odcmProperty); odcmProperty.Field = odcmField; }
public static OdcmField OdcmField(Action <OdcmField> config = null) { var retVal = new OdcmField(Any.CSharpIdentifier()); if (config != null) { config(retVal); } return(retVal); }
private void WriteProperty(OdcmClass odcmClass, OdcmField odcmField, IEdmSingleton singleton) { OdcmProperty odcmProperty = new OdcmProperty(singleton.Name); odcmProperty.Class = odcmClass; odcmProperty.Type = odcmField.Type; odcmClass.Properties.Add(odcmProperty); odcmProperty.Field = odcmField; odcmProperty.Type = odcmField.Type; }
private OdcmField WriteField(OdcmClass odcmClass, IEdmProperty property) { OdcmField odcmField = new OdcmField("_" + property.Name); odcmField.Class = odcmClass; odcmClass.Fields.Add(odcmField); odcmField.Type = ResolveType(property.Type); odcmField.IsCollection = property.Type.IsCollection(); return(odcmField); }
private OdcmField WriteField(OdcmClass odcmClass, IEdmSingleton singleton) { OdcmField odcmField = new OdcmField("_" + singleton.Name); odcmField.Class = odcmClass; odcmClass.Fields.Add(odcmField); odcmField.Type = ResolveType(singleton.EntityType().Name, singleton.EntityType().Namespace, TypeKind.Entity); odcmField.IsLink = true; return(odcmField); }
public void ProcessField(OdcmField odcmField) { PushIndent(" "); string fieldType = GetType(odcmField.Type, odcmField.IsCollection); #line default #line hidden #line 200 "E:\gittf\Roxel\O365\Public\src\EdmDecomposition\EdmDecomposition\ODataWriter.tt" this.Write("\r\npublic "); #line default #line hidden #line 202 "E:\gittf\Roxel\O365\Public\src\EdmDecomposition\EdmDecomposition\ODataWriter.tt" this.Write(this.ToStringHelper.ToStringWithCulture(fieldType)); #line default #line hidden #line 202 "E:\gittf\Roxel\O365\Public\src\EdmDecomposition\EdmDecomposition\ODataWriter.tt" this.Write(" _"); #line default #line hidden #line 202 "E:\gittf\Roxel\O365\Public\src\EdmDecomposition\EdmDecomposition\ODataWriter.tt" this.Write(this.ToStringHelper.ToStringWithCulture(odcmField.Name)); #line default #line hidden #line 202 "E:\gittf\Roxel\O365\Public\src\EdmDecomposition\EdmDecomposition\ODataWriter.tt" this.Write(";\r\n"); #line default #line hidden #line 203 "E:\gittf\Roxel\O365\Public\src\EdmDecomposition\EdmDecomposition\ODataWriter.tt" PopIndent(); }
public static object ComplexOdcmField(OdcmNamespace odcmNamespace, Action <OdcmField> config = null) { var retVal = new OdcmField(Any.CSharpIdentifier()) { Type = Any.ComplexOdcmType(odcmNamespace) }; if (config != null) { config(retVal); } return(retVal); }
public static OdcmField PrimitiveOdcmField(Action <OdcmField> config = null) { var retVal = new OdcmField(Any.CSharpIdentifier()) { Type = Any.PrimitiveOdcmType() }; if (config != null) { config(retVal); } return(retVal); }
private OdcmField WriteField(OdcmClass odcmClass, IEdmEntitySet entitySet) { OdcmField odcmField = new OdcmField("_" + entitySet.Name); odcmField.Class = odcmClass; odcmClass.Fields.Add(odcmField); odcmField.Type = ResolveType(entitySet.EntityType().Name, entitySet.EntityType().Namespace, TypeKind.Entity); odcmField.IsCollection = true; odcmField.IsLink = true; return(odcmField); }
private void WriteNamespace(IEdmModel edmModel, string @namespace) { var namespaceElements = from elements in edmModel.SchemaElements where string.Equals(elements.Namespace, @namespace) select elements; var types = from element in namespaceElements where element.SchemaElementKind == EdmSchemaElementKind.TypeDefinition select element as IEdmType; var complexTypes = from element in types where element.TypeKind == EdmTypeKind.Complex select element as IEdmComplexType; var entityTypes = from element in types where element.TypeKind == EdmTypeKind.Entity select element as IEdmEntityType; var enumTypes = from elements in types where elements.TypeKind == EdmTypeKind.Enum select elements as IEdmEnumType; var entityContainers = from element in namespaceElements where element.SchemaElementKind == EdmSchemaElementKind.EntityContainer select element as IEdmEntityContainer; var actions = from element in namespaceElements where element.SchemaElementKind == EdmSchemaElementKind.Action && ((IEdmAction)element).IsBound select element as IEdmAction; var functions = from element in namespaceElements where element.SchemaElementKind == EdmSchemaElementKind.Function && ((IEdmFunction)element).IsBound select element as IEdmFunction; foreach (var enumType in enumTypes) { OdcmEnum odcmEnum; if (!OdcmModel.TryResolveType(enumType.Name, enumType.Namespace, out odcmEnum)) { odcmEnum = new OdcmEnum(enumType.Name, enumType.Namespace); odcmEnum.UnderlyingType = (OdcmPrimitiveType)ResolveType(enumType.UnderlyingType.Name, enumType.UnderlyingType.Namespace, TypeKind.Primitive); OdcmModel.AddType(odcmEnum); } foreach (var enumMember in enumType.Members) { odcmEnum.Members.Add(new OdcmEnumMember(enumMember.Name) { Value = ((EdmIntegerConstant)enumMember.Value).Value }); } } foreach (var complexType in complexTypes) { OdcmClass odcmClass; if (!OdcmModel.TryResolveType(complexType.Name, complexType.Namespace, out odcmClass)) { odcmClass = new OdcmClass(complexType.Name, complexType.Namespace, OdcmClassKind.Complex); OdcmModel.AddType(odcmClass); } odcmClass.IsAbstract = complexType.IsAbstract; if (complexType.BaseType != null) { OdcmClass baseClass; if (!OdcmModel.TryResolveType(((IEdmSchemaElement)complexType.BaseType).Name, ((IEdmSchemaElement)complexType.BaseType).Namespace, out baseClass)) { baseClass = new OdcmClass(((IEdmSchemaElement)complexType.BaseType).Name, ((IEdmSchemaElement)complexType.BaseType).Namespace, OdcmClassKind.Complex); OdcmModel.AddType(baseClass); } odcmClass.Base = baseClass; if (!baseClass.Derived.Contains(odcmClass)) { baseClass.Derived.Add(odcmClass); } } var structuralProperties = from element in complexType.Properties() where element.PropertyKind == EdmPropertyKind.Structural && element.DeclaringType == (IEdmStructuredType)complexType select element as IEdmStructuralProperty; foreach (var structuralProperty in structuralProperties) { OdcmField odcmField = WriteStructuralField(odcmClass, structuralProperty); WriteStructuralProperty(odcmClass, odcmField, structuralProperty); } } foreach (var entityType in entityTypes) { OdcmClass odcmClass; if (!OdcmModel.TryResolveType(entityType.Name, entityType.Namespace, out odcmClass)) { odcmClass = new OdcmClass(entityType.Name, entityType.Namespace, OdcmClassKind.Entity); OdcmModel.AddType(odcmClass); } odcmClass.IsAbstract = entityType.IsAbstract; if (entityType.BaseType != null) { OdcmClass baseClass; if (!OdcmModel.TryResolveType(((IEdmSchemaElement)entityType.BaseType).Name, ((IEdmSchemaElement)entityType.BaseType).Namespace, out baseClass)) { baseClass = new OdcmClass(((IEdmSchemaElement)entityType.BaseType).Name, ((IEdmSchemaElement)entityType.BaseType).Namespace, OdcmClassKind.Entity); OdcmModel.AddType(baseClass); } odcmClass.Base = baseClass; if (!baseClass.Derived.Contains(odcmClass)) { baseClass.Derived.Add(odcmClass); } } var structuralProperties = from element in entityType.DeclaredProperties where element.PropertyKind == EdmPropertyKind.Structural select element as IEdmStructuralProperty; foreach (var structuralProperty in structuralProperties) { OdcmField odcmField = WriteStructuralField(odcmClass, structuralProperty); WriteStructuralProperty(odcmClass, odcmField, structuralProperty); } foreach (IEdmStructuralProperty keyProperty in entityType.Key()) { var property = FindProperty(odcmClass, keyProperty); if (property != null) { // The properties that compose the key MUST be non-nullable. property.IsNullable = false; } odcmClass.Key.Add(FindField(odcmClass, keyProperty)); } var navigationProperties = from element in entityType.DeclaredProperties where element.PropertyKind == EdmPropertyKind.Navigation select element as IEdmNavigationProperty; foreach (var navigationProperty in navigationProperties) { OdcmField odcmField = WriteNavigationField(odcmClass, navigationProperty); WriteNavigationProperty(odcmClass, odcmField, navigationProperty); } var entityTypeActions = from element in actions where IsOperationBound(element, entityType) select element; foreach (var action in entityTypeActions) { WriteMethod(odcmClass, action); } var entityTypeFunctions = from element in functions where IsOperationBound(element, entityType) select element; foreach (var function in entityTypeFunctions) { WriteMethod(odcmClass, function); } } foreach (var entityContainer in entityContainers) { OdcmClass odcmClass; if (!OdcmModel.TryResolveType(entityContainer.Name, entityContainer.Namespace, out odcmClass)) { odcmClass = new OdcmClass(entityContainer.Name, entityContainer.Namespace, OdcmClassKind.Service); OdcmModel.AddType(odcmClass); } var entitySets = from element in entityContainer.Elements where element.ContainerElementKind == EdmContainerElementKind.EntitySet select element as IEdmEntitySet; foreach (var entitySet in entitySets) { OdcmField odcmField = WriteField(odcmClass, entitySet); WriteProperty(odcmClass, odcmField, entitySet); } var singletons = from element in entityContainer.Elements where element.ContainerElementKind == EdmContainerElementKind.Singleton select element as IEdmSingleton; foreach (var singleton in singletons) { OdcmField odcmField = WriteField(odcmClass, singleton); WriteProperty(odcmClass, odcmField, singleton); } var actionImports = from element in entityContainer.Elements where element.ContainerElementKind == EdmContainerElementKind.ActionImport select element as IEdmActionImport; foreach (var actionImport in actionImports) { WriteMethod(odcmClass, actionImport.Action); } var functionImports = from element in entityContainer.Elements where element.ContainerElementKind == EdmContainerElementKind.FunctionImport select element as IEdmFunctionImport; foreach (var functionImport in functionImports) { WriteMethod(odcmClass, functionImport.Function); } } }
private void WriteStructuralProperty(OdcmClass odcmClass, OdcmField odcmField, IEdmStructuralProperty structuralProperty) { WriteProperty(odcmClass, odcmField, structuralProperty); }
private void WriteNavigationProperty(OdcmClass odcmClass, OdcmField odcmField, IEdmNavigationProperty navigationProperty) { WriteProperty(odcmClass, odcmField, navigationProperty); }
public static string GetFieldName(OdcmField odcmField) { return(odcmField.Name); }
public void Write(OdcmField odcmField) { _("private {0} {1};", NamesService.GetPublicTypeName(odcmField.Type).FullName, odcmField.Name); }