/// <summary> /// Convert CDM data type to SyMS data type. /// </summary> internal static TypeInfo CdmDataFormatToSymsDataType(CdmDataFormat cdmDataFormat, TypeInfo typeInfo) { switch (cdmDataFormat) { case CdmDataFormat.Byte: typeInfo.TypeName = "byte"; break; case CdmDataFormat.Binary: typeInfo.TypeName = "binary"; break; case CdmDataFormat.Float: typeInfo.TypeName = "float"; break; case CdmDataFormat.Char: typeInfo.TypeName = "string"; typeInfo.Length = 1; break; case CdmDataFormat.String: typeInfo.TypeName = "string"; break; case CdmDataFormat.Guid: typeInfo.TypeName = "string"; typeInfo.Properties["guid"] = true; break; case CdmDataFormat.Json: typeInfo.TypeName = "string"; typeInfo.Properties["json"] = true; break; case CdmDataFormat.DateTimeOffset: typeInfo.TypeName = "string"; typeInfo.Properties["dateTimeOffset"] = true; break; case CdmDataFormat.Int64: typeInfo.TypeName = "long"; break; case CdmDataFormat.Int32: typeInfo.TypeName = "integer"; break; case CdmDataFormat.Double: typeInfo.TypeName = "double"; break; case CdmDataFormat.Date: typeInfo.TypeName = "date"; break; case CdmDataFormat.DateTime: typeInfo.TypeName = "timestamp"; typeInfo.Properties["dateTime"] = true; break; case CdmDataFormat.Time: typeInfo.TypeName = "timestamp"; break; case CdmDataFormat.Decimal: typeInfo.TypeName = "decimal"; break; case CdmDataFormat.Boolean: typeInfo.TypeName = "boolean"; break; default: return(null); } return(typeInfo); }
internal CdmDataFormat TraitsToDataFormat(bool onlyFromProperty) { bool isArray = false; bool isBig = false; bool isSmall = false; bool isInteger = false; bool probablyJson = false; CdmDataFormat baseType = CdmDataFormat.Unknown; if (this.Traits != null) { foreach (var trait in this.Traits) { if (onlyFromProperty && !trait.IsFromProperty) { continue; } string traitName = trait.FetchObjectDefinitionName(); switch (traitName) { case "is.dataFormat.array": isArray = true; break; case "is.dataFormat.big": isBig = true; break; case "is.dataFormat.small": isSmall = true; break; case "is.dataFormat.integer": isInteger = true; break; case "is.dataFormat.floatingPoint": baseType = CdmDataFormat.Float; break; case "is.dataFormat.character": if (baseType != CdmDataFormat.Guid) { baseType = CdmDataFormat.Char; } break; case "is.dataFormat.byte": baseType = CdmDataFormat.Byte; break; case "is.dataFormat.date": if (baseType == CdmDataFormat.Time) { baseType = CdmDataFormat.DateTime; } else { baseType = CdmDataFormat.Date; } break; case "is.dataFormat.time": if (baseType == CdmDataFormat.Date) { baseType = CdmDataFormat.DateTime; } else { baseType = CdmDataFormat.Time; } break; case "is.dataFormat.timeOffset": if (baseType == CdmDataFormat.DateTime) { baseType = CdmDataFormat.DateTimeOffset; } break; case "is.dataFormat.boolean": baseType = CdmDataFormat.Boolean; break; case "is.dataFormat.numeric.shaped": baseType = CdmDataFormat.Decimal; break; case "is.dataFormat.guid": baseType = CdmDataFormat.Guid; break; case "means.content.text.JSON": baseType = isArray ? CdmDataFormat.Json : CdmDataFormat.Unknown; probablyJson = true; break; default: break; } } if (isArray) { if (probablyJson) { baseType = CdmDataFormat.Json; } else if (baseType == CdmDataFormat.Char) { baseType = CdmDataFormat.String; } else if (baseType == CdmDataFormat.Byte) { baseType = CdmDataFormat.Binary; } else if (baseType != CdmDataFormat.Guid) { baseType = CdmDataFormat.Unknown; } } if (baseType == CdmDataFormat.Float && isBig) { baseType = CdmDataFormat.Double; } if (isInteger && isBig) { baseType = CdmDataFormat.Int64; } else if (isInteger && isSmall) { baseType = CdmDataFormat.Int16; } else if (isInteger) { baseType = CdmDataFormat.Int32; } } return(baseType); }
internal void DataFormatToTraits(CdmDataFormat dataFormat) { // reset the current dataFormat foreach (var traitName in DataFormatTraitNames) { this.RemoveTrait(traitName); } switch (dataFormat) { case CdmDataFormat.Int16: this.FetchOrCreateTrait("is.dataFormat.integer", true); this.FetchOrCreateTrait("is.dataFormat.small", true); break; case CdmDataFormat.Int32: this.FetchOrCreateTrait("is.dataFormat.integer", true); break; case CdmDataFormat.Int64: this.FetchOrCreateTrait("is.dataFormat.integer", true); this.FetchOrCreateTrait("is.dataFormat.big", true); break; case CdmDataFormat.Float: this.FetchOrCreateTrait("is.dataFormat.floatingPoint", true); break; case CdmDataFormat.Double: this.FetchOrCreateTrait("is.dataFormat.floatingPoint", true); this.FetchOrCreateTrait("is.dataFormat.big", true); break; case CdmDataFormat.Guid: this.FetchOrCreateTrait("is.dataFormat.guid", true); this.FetchOrCreateTrait("is.dataFormat.character", true); this.FetchOrCreateTrait("is.dataFormat.array", true); break; case CdmDataFormat.String: this.FetchOrCreateTrait("is.dataFormat.character", true); this.FetchOrCreateTrait("is.dataFormat.array", true); break; case CdmDataFormat.Char: this.FetchOrCreateTrait("is.dataFormat.character", true); this.FetchOrCreateTrait("is.dataFormat.big", true); break; case CdmDataFormat.Byte: this.FetchOrCreateTrait("is.dataFormat.byte", true); break; case CdmDataFormat.Binary: this.FetchOrCreateTrait("is.dataFormat.byte", true); this.FetchOrCreateTrait("is.dataFormat.array", true); break; case CdmDataFormat.Time: this.FetchOrCreateTrait("is.dataFormat.time", true); break; case CdmDataFormat.Date: this.FetchOrCreateTrait("is.dataFormat.date", true); break; case CdmDataFormat.DateTime: this.FetchOrCreateTrait("is.dataFormat.time", true); this.FetchOrCreateTrait("is.dataFormat.date", true); break; case CdmDataFormat.DateTimeOffset: this.FetchOrCreateTrait("is.dataFormat.time", true); this.FetchOrCreateTrait("is.dataFormat.date", true); this.FetchOrCreateTrait("is.dataFormat.timeOffset", true); break; case CdmDataFormat.Boolean: this.FetchOrCreateTrait("is.dataFormat.boolean", true); break; case CdmDataFormat.Decimal: this.FetchOrCreateTrait("is.dataFormat.numeric.shaped", true); break; case CdmDataFormat.Json: this.FetchOrCreateTrait("is.dataFormat.array", true); this.FetchOrCreateTrait("means.content.text.JSON", true); break; } }
public void CdmTypeIsMapped(SqlDbType?type, CdmDataFormat expected) { CdmDataFormat actual = CdmSqlTypeMapper.Map(type); Assert.Equal(expected, actual); }
public static CdmDataTypeReference CreateDataType(this CdmCorpusDefinition cdmCorpus, CdmDataFormat dataFormat) { return(cdmCorpus.MakeObject <CdmDataTypeReference>(CdmObjectType.DataTypeRef, dataFormat.ToString(), true)); }
internal void DataFormatToTraits(CdmDataFormat dataFormat) { // if this is going to be called many times, then need to remove dynamic dataformat traits that are left behind. // but ... probably not. in fact, this is probably never used because data formats come from data type which is not an attribute switch (dataFormat) { case CdmDataFormat.Int16: this.FetchOrCreateTrait("is.dataFormat.integer", true); this.FetchOrCreateTrait("is.dataFormat.small", true); break; case CdmDataFormat.Int32: this.FetchOrCreateTrait("is.dataFormat.integer", true); this.FetchOrCreateTrait("is.dataFormat.small", true); break; case CdmDataFormat.Int64: this.FetchOrCreateTrait("is.dataFormat.integer", true); this.FetchOrCreateTrait("is.dataFormat.big", true); break; case CdmDataFormat.Float: this.FetchOrCreateTrait("is.dataFormat.floatingPoint", true); break; case CdmDataFormat.Double: this.FetchOrCreateTrait("is.dataFormat.floatingPoint", true); this.FetchOrCreateTrait("is.dataFormat.big", true); break; case CdmDataFormat.Guid: this.FetchOrCreateTrait("is.dataFormat.guid", true); break; case CdmDataFormat.String: this.FetchOrCreateTrait("is.dataFormat.character", true); this.FetchOrCreateTrait("is.dataFormat.array", true); break; case CdmDataFormat.Char: this.FetchOrCreateTrait("is.dataFormat.character", true); this.FetchOrCreateTrait("is.dataFormat.big", true); break; case CdmDataFormat.Byte: this.FetchOrCreateTrait("is.dataFormat.byte", true); break; case CdmDataFormat.Binary: this.FetchOrCreateTrait("is.dataFormat.array", true); break; case CdmDataFormat.Time: this.FetchOrCreateTrait("is.dataFormat.time", true); break; case CdmDataFormat.Date: this.FetchOrCreateTrait("is.dataFormat.date", true); break; case CdmDataFormat.DateTime: this.FetchOrCreateTrait("is.dataFormat.time", true); this.FetchOrCreateTrait("is.dataFormat.date", true); break; case CdmDataFormat.DateTimeOffset: this.FetchOrCreateTrait("is.dataFormat.time", true); this.FetchOrCreateTrait("is.dataFormat.date", true); this.FetchOrCreateTrait("is.dataFormat.timeOffset", true); break; case CdmDataFormat.Boolean: this.FetchOrCreateTrait("is.dataFormat.boolean", true); break; case CdmDataFormat.Decimal: this.FetchOrCreateTrait("is.dataFormat.numeric.shaped", true); break; case CdmDataFormat.Json: this.FetchOrCreateTrait("is.dataFormat.array", true); this.FetchOrCreateTrait("means.content.text.JSON", true); break; } }