public void VisitPrimitiveTypeReference(IEdmPrimitiveTypeReference reference) { switch (reference.PrimitiveKind()) { case EdmPrimitiveTypeKind.Binary: this.ProcessBinaryTypeReference(reference.AsBinary()); break; case EdmPrimitiveTypeKind.Decimal: this.ProcessDecimalTypeReference(reference.AsDecimal()); break; case EdmPrimitiveTypeKind.String: this.ProcessStringTypeReference(reference.AsString()); break; case EdmPrimitiveTypeKind.DateTimeOffset: case EdmPrimitiveTypeKind.Duration: case EdmPrimitiveTypeKind.TimeOfDay: this.ProcessTemporalTypeReference(reference.AsTemporal()); break; case EdmPrimitiveTypeKind.Geography: case EdmPrimitiveTypeKind.GeographyPoint: case EdmPrimitiveTypeKind.GeographyLineString: case EdmPrimitiveTypeKind.GeographyPolygon: case EdmPrimitiveTypeKind.GeographyCollection: case EdmPrimitiveTypeKind.GeographyMultiPolygon: case EdmPrimitiveTypeKind.GeographyMultiLineString: case EdmPrimitiveTypeKind.GeographyMultiPoint: case EdmPrimitiveTypeKind.Geometry: case EdmPrimitiveTypeKind.GeometryPoint: case EdmPrimitiveTypeKind.GeometryLineString: case EdmPrimitiveTypeKind.GeometryPolygon: case EdmPrimitiveTypeKind.GeometryCollection: case EdmPrimitiveTypeKind.GeometryMultiPolygon: case EdmPrimitiveTypeKind.GeometryMultiLineString: case EdmPrimitiveTypeKind.GeometryMultiPoint: this.ProcessSpatialTypeReference(reference.AsSpatial()); break; case EdmPrimitiveTypeKind.Boolean: case EdmPrimitiveTypeKind.Byte: case EdmPrimitiveTypeKind.Double: case EdmPrimitiveTypeKind.Guid: case EdmPrimitiveTypeKind.Int16: case EdmPrimitiveTypeKind.Int32: case EdmPrimitiveTypeKind.Int64: case EdmPrimitiveTypeKind.SByte: case EdmPrimitiveTypeKind.Single: case EdmPrimitiveTypeKind.Stream: case EdmPrimitiveTypeKind.Date: case EdmPrimitiveTypeKind.None: this.ProcessPrimitiveTypeReference(reference); break; default: throw new InvalidOperationException(Edm.Strings.UnknownEnumVal_PrimitiveKind(reference.PrimitiveKind().ToString())); } }
private static IEdmPrimitiveTypeReference Nullable(this IEdmPrimitiveTypeReference typeReference, bool isNullable) { if (typeReference.IsBinary()) { var binary = typeReference.AsBinary(); return(new EdmBinaryTypeReference(typeReference.PrimitiveDefinition(), isNullable, binary.IsUnbounded, binary.MaxLength)); } else if (typeReference.IsDecimal()) { var decimalRef = typeReference.AsDecimal(); return(new EdmDecimalTypeReference(typeReference.PrimitiveDefinition(), isNullable, decimalRef.Precision, decimalRef.Scale)); } else if (typeReference.IsTemporal()) { var temporal = typeReference.AsTemporal(); return(new EdmTemporalTypeReference(typeReference.PrimitiveDefinition(), isNullable, temporal.Precision)); } else if (typeReference.IsString()) { var stringRef = typeReference.AsString(); return(new EdmStringTypeReference(typeReference.PrimitiveDefinition(), isNullable, stringRef.IsUnbounded, stringRef.MaxLength, stringRef.IsUnicode)); } return(new EdmPrimitiveTypeReference(typeReference.PrimitiveDefinition(), isNullable)); }
public static DataType ConvertToTaupoPrimitiveDataType(IEdmPrimitiveTypeReference edmPrimitiveTypeReference) { PrimitiveDataType result = null; EdmPrimitiveTypeKind primitiveKind = edmPrimitiveTypeReference.PrimitiveKind(); if (!facetlessDataTypeLookup.TryGetValue(primitiveKind, out result)) { switch (primitiveKind) { case EdmPrimitiveTypeKind.Binary: var edmBinary = edmPrimitiveTypeReference.AsBinary(); result = EdmDataTypes.Binary(edmBinary.MaxLength); break; case EdmPrimitiveTypeKind.DateTimeOffset: var edmDateTimeOffset = edmPrimitiveTypeReference.AsTemporal(); result = EdmDataTypes.DateTimeOffset(edmDateTimeOffset.Precision); break; case EdmPrimitiveTypeKind.Decimal: var edmDecimal = edmPrimitiveTypeReference.AsDecimal(); result = EdmDataTypes.Decimal(edmDecimal.Precision, edmDecimal.Scale); break; case EdmPrimitiveTypeKind.String: var edmString = edmPrimitiveTypeReference.AsString(); var maxLength = edmString.MaxLength; if (edmString.IsUnbounded == true) { maxLength = MaxLengthMaxTaupoDefaultValue; } result = EdmDataTypes.String(maxLength, edmString.IsUnicode); break; case EdmPrimitiveTypeKind.Duration: var edmTime = edmPrimitiveTypeReference.AsTemporal(); result = EdmDataTypes.Time(edmTime.Precision); break; default: throw new TaupoInvalidOperationException("unexpected Edm Primitive Type Kind: " + primitiveKind); } } return(result.Nullable(edmPrimitiveTypeReference.IsNullable)); }
public static DataType ConvertToTaupoPrimitiveDataType(IEdmPrimitiveTypeReference edmPrimitiveTypeReference) { PrimitiveDataType result = null; EdmPrimitiveTypeKind primitiveKind = edmPrimitiveTypeReference.PrimitiveKind(); if (!facetlessDataTypeLookup.TryGetValue(primitiveKind, out result)) { switch (primitiveKind) { case EdmPrimitiveTypeKind.Binary: var edmBinary = edmPrimitiveTypeReference.AsBinary(); result = EdmDataTypes.Binary(edmBinary.MaxLength); break; case EdmPrimitiveTypeKind.DateTimeOffset: var edmDateTimeOffset = edmPrimitiveTypeReference.AsTemporal(); result = EdmDataTypes.DateTimeOffset(edmDateTimeOffset.Precision); break; case EdmPrimitiveTypeKind.Decimal: var edmDecimal = edmPrimitiveTypeReference.AsDecimal(); result = EdmDataTypes.Decimal(edmDecimal.Precision, edmDecimal.Scale); break; case EdmPrimitiveTypeKind.String: var edmString = edmPrimitiveTypeReference.AsString(); var maxLength = edmString.MaxLength; if (edmString.IsUnbounded == true) { maxLength = MaxLengthMaxTaupoDefaultValue; } result = EdmDataTypes.String(maxLength, edmString.IsUnicode); break; case EdmPrimitiveTypeKind.Duration: var edmTime = edmPrimitiveTypeReference.AsTemporal(); result = EdmDataTypes.Time(edmTime.Precision); break; default: throw new TaupoInvalidOperationException("unexpected Edm Primitive Type Kind: " + primitiveKind); } } return result.Nullable(edmPrimitiveTypeReference.IsNullable); }
private static void AppendFacets(this StringBuilder sb, IEdmPrimitiveTypeReference type) { switch (type.PrimitiveKind()) { case EdmPrimitiveTypeKind.Binary: sb.AppendBinaryFacets(type.AsBinary()); break; case EdmPrimitiveTypeKind.Decimal: sb.AppendDecimalFacets(type.AsDecimal()); break; case EdmPrimitiveTypeKind.String: sb.AppendStringFacets(type.AsString()); break; case EdmPrimitiveTypeKind.Time: case EdmPrimitiveTypeKind.DateTime: case EdmPrimitiveTypeKind.DateTimeOffset: sb.AppendTemporalFacets(type.AsTemporal()); break; case EdmPrimitiveTypeKind.Geography: case EdmPrimitiveTypeKind.GeographyPoint: case EdmPrimitiveTypeKind.GeographyLineString: case EdmPrimitiveTypeKind.GeographyPolygon: case EdmPrimitiveTypeKind.GeographyCollection: case EdmPrimitiveTypeKind.GeographyMultiPolygon: case EdmPrimitiveTypeKind.GeographyMultiLineString: case EdmPrimitiveTypeKind.GeographyMultiPoint: case EdmPrimitiveTypeKind.Geometry: case EdmPrimitiveTypeKind.GeometryPoint: case EdmPrimitiveTypeKind.GeometryLineString: case EdmPrimitiveTypeKind.GeometryPolygon: case EdmPrimitiveTypeKind.GeometryCollection: case EdmPrimitiveTypeKind.GeometryMultiPolygon: case EdmPrimitiveTypeKind.GeometryMultiLineString: case EdmPrimitiveTypeKind.GeometryMultiPoint: sb.AppendSpatialFacets(type.AsSpatial()); break; } }
private static void AppendFacets(this StringBuilder sb, IEdmPrimitiveTypeReference type) { EdmPrimitiveTypeKind edmPrimitiveTypeKind = type.PrimitiveKind(); switch (edmPrimitiveTypeKind) { case EdmPrimitiveTypeKind.Binary: { sb.AppendBinaryFacets(type.AsBinary()); return; } case EdmPrimitiveTypeKind.Boolean: case EdmPrimitiveTypeKind.Byte: case EdmPrimitiveTypeKind.Double: case EdmPrimitiveTypeKind.Guid: case EdmPrimitiveTypeKind.Int16: case EdmPrimitiveTypeKind.Int32: case EdmPrimitiveTypeKind.Int64: case EdmPrimitiveTypeKind.SByte: case EdmPrimitiveTypeKind.Single: case EdmPrimitiveTypeKind.Stream: { return; } case EdmPrimitiveTypeKind.DateTime: case EdmPrimitiveTypeKind.DateTimeOffset: case EdmPrimitiveTypeKind.Time: { sb.AppendTemporalFacets(type.AsTemporal()); return; } case EdmPrimitiveTypeKind.Decimal: { sb.AppendDecimalFacets(type.AsDecimal()); return; } case EdmPrimitiveTypeKind.String: { sb.AppendStringFacets(type.AsString()); return; } case EdmPrimitiveTypeKind.Geography: case EdmPrimitiveTypeKind.GeographyPoint: case EdmPrimitiveTypeKind.GeographyLineString: case EdmPrimitiveTypeKind.GeographyPolygon: case EdmPrimitiveTypeKind.GeographyCollection: case EdmPrimitiveTypeKind.GeographyMultiPolygon: case EdmPrimitiveTypeKind.GeographyMultiLineString: case EdmPrimitiveTypeKind.GeographyMultiPoint: case EdmPrimitiveTypeKind.Geometry: case EdmPrimitiveTypeKind.GeometryPoint: case EdmPrimitiveTypeKind.GeometryLineString: case EdmPrimitiveTypeKind.GeometryPolygon: case EdmPrimitiveTypeKind.GeometryCollection: case EdmPrimitiveTypeKind.GeometryMultiPolygon: case EdmPrimitiveTypeKind.GeometryMultiLineString: case EdmPrimitiveTypeKind.GeometryMultiPoint: { sb.AppendSpatialFacets(type.AsSpatial()); return; } default: { return; } } }