in objectModel/Java/objectmodel/src/main/java/com/microsoft/commondatamodel/objectmodel/utilities/TraitToPropertyMap.java [560:669]
String traitsToDataFormat(final boolean onlyFromProperty) {
boolean isArray = false;
boolean isBig = false;
boolean isSmall = false;
boolean isInteger = false;
boolean probablyJson = false;
Enum<CdmDataFormat> baseType = CdmDataFormat.Unknown;
final CdmTraitCollection traits = this.getTraits();
if (traits != null) {
for (final CdmTraitReferenceBase trait : traits) {
if (onlyFromProperty &&
(trait instanceof CdmTraitGroupReference || !((CdmTraitReference)trait).isFromProperty())) {
continue;
}
final String traitName = trait.fetchObjectDefinitionName();
if (traitName != null) {
switch (CdmDataFormatTrait.fromString(traitName)) {
case ARRAY:
isArray = true;
break;
case BIG:
isBig = true;
break;
case SMALL:
isSmall = true;
break;
case INTEGER:
isInteger = true;
break;
case FLOATING_POINT:
baseType = CdmDataFormat.Float;
break;
case CHARACTER:
if (!CdmDataFormat.Guid.equals(baseType)) {
baseType = CdmDataFormat.Char;
}
break;
case BYTE:
baseType = CdmDataFormat.Byte;
break;
case DATE:
if (CdmDataFormat.Time.equals(baseType)) {
baseType = CdmDataFormat.DateTime;
} else {
baseType = CdmDataFormat.Date;
}
break;
case TIME:
if (CdmDataFormat.Date.equals(baseType)) {
baseType = CdmDataFormat.DateTime;
} else {
baseType = CdmDataFormat.Time;
}
break;
case DATETIME_OFFSET:
if (CdmDataFormat.DateTime.equals(baseType)) {
baseType = CdmDataFormat.DateTimeOffset;
}
break;
case BOOLEAN:
baseType = CdmDataFormat.Boolean;
break;
case NUMERIC_SHAPED:
baseType = CdmDataFormat.Decimal;
break;
case GUID:
baseType = CdmDataFormat.Guid;
break;
case JSON:
baseType = isArray ? CdmDataFormat.Json : CdmDataFormat.Unknown;
probablyJson = true;
break;
case DEFAULT:
default:
break;
}
}
}
if (isArray) {
if (probablyJson) {
baseType = CdmDataFormat.Json;
} else if (CdmDataFormat.Char.equals(baseType)) {
baseType = CdmDataFormat.String;
} else if (CdmDataFormat.Byte.equals(baseType)) {
baseType = CdmDataFormat.Binary;
} else if (!CdmDataFormat.Guid.equals(baseType)) {
baseType = CdmDataFormat.Unknown;
}
}
if (CdmDataFormat.Float.equals(baseType) && 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.name();
}