private void AssertOutputParameter(FunctionMetadata metadata, string name, AbapDataType dataType)
        {
            var parameter = metadata.GetOutputParameter(name);

            Assert.Equal(name, parameter.Name);
            Assert.Equal(dataType, parameter.DataType);
        }
Пример #2
0
        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));
        }
Пример #4
0
        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);
        }
Пример #5
0
        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));
        }
Пример #6
0
        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;
 }
Пример #9
0
 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);
        }
 private void AssertOutputParameter(FunctionMetadata metadata,  string name, AbapDataType dataType)
 {
     var parameter = metadata.GetOutputParameter(name);
     Assert.Equal(name, parameter.Name);
     Assert.Equal(dataType, parameter.DataType);
 }
Пример #12
0
        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;
        }
Пример #13
0
 public FieldMetadata(string name, AbapDataType dataType)
 {
     this.Name     = name;
     this.DataType = dataType;
 }
Пример #14
0
 public FieldMetadata(string name, AbapDataType dataType)
 {
     this.Name = name;
     this.DataType = dataType;
 }
Пример #15
0
 public ParameterMetadata(string name, AbapDataType dataType, StructureMetadata structureMetadata)
 {
     this.Name = name.ToUpper();
     this.DataType = dataType;
     this.StructureMetadata = structureMetadata;
 }
 public void ToRemoteValueTest(object expected, AbapDataType expectedType, object inputValue)
 {
     object result = this.valueMapper.ToRemoteValue(expectedType, inputValue);
     Assert.Equal(expected, result);
 }
Пример #17
0
 public ParameterMetadata(string name, AbapDataType dataType)
 {
     this.Name = name.ToUpper();
     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);
        }