private void AssertOutputParameter(FunctionMetadata metadata, string name, AbapDataType dataType) { var parameter = metadata.GetOutputParameter(name); Assert.Equal(name, parameter.Name); Assert.Equal(dataType, parameter.DataType); }
public virtual object ConvertFromEnum(AbapDataType remoteType, object value) { if (remoteType == AbapDataType.INTEGER || remoteType == AbapDataType.SHORT) { return(value.GetHashCode()); } if (remoteType == AbapDataType.NUMERIC) { return(value.GetHashCode().ToString()); } if (remoteType == AbapDataType.CHAR) { Type enumType = value.GetType(); EnsureEnumTypeIsCached(enumType); foreach (var keyPair in cachedEnumMembers[enumType]) { if (keyPair.Key == value.ToString()) { return(keyPair.Value); } } return(string.Empty); } throw new RfcMappingException(string.Format("Cannot convert from Enum '{0}' to remote type '{1}'.", value, remoteType.ToString())); }
private ParameterMetadata CreateParameterMetadata(string name, string typeName, bool isSequence) { AbapDataType parameterType = AbapDataTypeParser.ParseFromTypeAttribute(typeName, isSequence); StructureMetadata metadata = null; if (typeName.StartsWith("s0:")) { metadata = this.LoadStructureMetadata(typeName.Replace("s0:", "")); } return(new ParameterMetadata(name, parameterType, metadata)); }
public virtual object ToRemoteValue(AbapDataType remoteType, object value) { if (value == null) { return(null); } Type valueType = value.GetType(); if (valueType == typeof(Boolean)) { return(AbapBool.ToString((Boolean)value)); } if (valueType.Equals(typeof(double))) { return(((double)value).ToString(this.GetNumberFormat())); } if (valueType.Equals(typeof(float))) { return(((float)value).ToString(this.GetNumberFormat())); } if (valueType.Equals(typeof(Decimal))) { return(((Decimal)value).ToString(this.GetNumberFormat())); } if (valueType.Equals(typeof(Double))) { return(((Double)value).ToString(this.GetNumberFormat())); } if (valueType.IsEnum) { return(ConvertFromEnum(remoteType, value)); } if (remoteType == AbapDataType.DATE) { return(AbapDateTime.ToDateString((DateTime)value)); } if (remoteType == AbapDataType.TIME) { return(AbapDateTime.ToTimeString((DateTime)value)); } return(value); }
protected override StructureMetadata LoadStructureMetadata(string structureName) { var remoteStructureMetadata = this.connection.Repository.GetStructureMetadata(structureName); List <FieldMetadata> fields = new List <FieldMetadata>(); for (int i = 0; i < remoteStructureMetadata.FieldCount; i++) { string fieldName = remoteStructureMetadata[i].Name; AbapDataType fieldType = remoteStructureMetadata[i].GetAbapDataType(); fields.Add(new FieldMetadata(fieldName, fieldType)); } return(new StructureMetadata(structureName, fields)); }
public virtual object ConvertFromEnum(AbapDataType remoteType, object value) { if (remoteType == AbapDataType.INTEGER || remoteType == AbapDataType.SHORT) return value.GetHashCode(); if (remoteType == AbapDataType.NUMERIC) return value.GetHashCode().ToString(); if (remoteType == AbapDataType.CHAR) { Type enumType = value.GetType(); EnsureEnumTypeIsCached(enumType); foreach (var keyPair in cachedEnumMembers[enumType]) { if (keyPair.Key == value.ToString()) return keyPair.Value; } return string.Empty; } throw new RfcMappingException(string.Format("Cannot convert from Enum '{0}' to remote type '{1}'.", value, remoteType.ToString())); }
public ParameterMetadata(string name, AbapDataType dataType, StructureMetadata structureMetadata) { this.Name = name.ToUpper(); this.DataType = dataType; this.StructureMetadata = structureMetadata; }
public ParameterMetadata(string name, AbapDataType dataType) { this.Name = name.ToUpper(); this.DataType = dataType; }
public object ToRemoteValue(AbapDataType remoteType, object value) { return(this.valueMapper.ToRemoteValue(remoteType, value)); }
public void ToRemoteValueTest(object expected, AbapDataType expectedType, object inputValue) { object result = this.valueMapper.ToRemoteValue(expectedType, inputValue); Assert.Equal(expected, result); }
public virtual object ToRemoteValue(AbapDataType remoteType, object value) { if (value == null) return null; Type valueType = value.GetType(); if (valueType == typeof(Boolean)) return AbapBool.ToString((Boolean)value); if (valueType.Equals(typeof(double))) return ((double)value).ToString(this.GetNumberFormat()); if (valueType.Equals(typeof(float))) return ((float)value).ToString(this.GetNumberFormat()); if (valueType.Equals(typeof(Decimal))) return ((Decimal)value).ToString(this.GetNumberFormat()); if (valueType.Equals(typeof(Double))) return ((Double)value).ToString(this.GetNumberFormat()); if (valueType.IsEnum) return ConvertFromEnum(remoteType, value); if (remoteType == AbapDataType.DATE) return AbapDateTime.ToDateString((DateTime)value); if (remoteType == AbapDataType.TIME) return AbapDateTime.ToTimeString((DateTime)value); return value; }
public FieldMetadata(string name, AbapDataType dataType) { this.Name = name; this.DataType = dataType; }
private void AssertStructureMetadataField(StructureMetadata metadata, string name, AbapDataType dataType) { var field = metadata.GetField(name); Assert.Equal(name, field.Name); Assert.Equal(dataType, field.DataType); }