UNPKG

pip-services3-commons-node

Version:
428 lines 16.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var TypeConverter_1 = require("../convert/TypeConverter"); var StringConverter_1 = require("../convert/StringConverter"); var BooleanConverter_1 = require("../convert/BooleanConverter"); var IntegerConverter_1 = require("../convert/IntegerConverter"); var LongConverter_1 = require("../convert/LongConverter"); var FloatConverter_1 = require("../convert/FloatConverter"); var DoubleConverter_1 = require("../convert/DoubleConverter"); var DateTimeConverter_1 = require("../convert/DateTimeConverter"); var AnyValueArray_1 = require("./AnyValueArray"); var AnyValueMap_1 = require("./AnyValueMap"); /** * Cross-language implementation of dynamic object what can hold value of any type. * The stored value can be converted to different types using variety of accessor methods. * * ### Example ### * * let value1 = new AnyValue("123.456"); * * value1.getAsInteger(); // Result: 123 * value1.getAsString(); // Result: "123.456" * value1.getAsFloat(); // Result: 123.456 * * @see [[StringConverter]] * @see [[TypeConverter]] * @see [[BooleanConverter]] * @see [[IntegerConverter]] * @see [[LongConverter]] * @see [[DoubleConverter]] * @see [[FloatConverter]] * @see [[DateTimeConverter]] * @see [[ICloneable]] */ var AnyValue = /** @class */ (function () { /** * Creates a new instance of the object and assigns its value. * * @param value (optional) value to initialize this object. */ function AnyValue(value) { if (value === void 0) { value = null; } if (value instanceof AnyValue) this.value = value.value; else this.value = value; } /** * Gets type code for the value stored in this object. * * @returns type code of the object value. * * @see [[TypeConverter.toTypeCode]] */ AnyValue.prototype.getTypeCode = function () { return TypeConverter_1.TypeConverter.toTypeCode(this.value); }; /** * Gets the value stored in this object without any conversions * * @returns the object value. */ AnyValue.prototype.getAsObject = function () { return this.value; }; /** * Sets a new value for this object * * @param value the new object value. */ AnyValue.prototype.setAsObject = function (value) { if (value instanceof AnyValue) this.value = value.value; else this.value = value; }; /** * Converts object value into a string or returns null if conversion is not possible. * * @returns string value or null if conversion is not supported. * * @see [[StringConverter.toNullableString]] */ AnyValue.prototype.getAsNullableString = function () { return StringConverter_1.StringConverter.toNullableString(this.value); }; /** * Converts object value into a string or returns "" if conversion is not possible. * * @returns string value or "" if conversion is not supported. * * @see [[getAsStringWithDefault]] */ AnyValue.prototype.getAsString = function () { return this.getAsStringWithDefault(null); }; /** * Converts object value into a string or returns default value if conversion is not possible. * * @param defaultValue the default value. * @returns string value or default if conversion is not supported. * * @see [[StringConverter.toStringWithDefault]] */ AnyValue.prototype.getAsStringWithDefault = function (defaultValue) { return StringConverter_1.StringConverter.toStringWithDefault(this.value, defaultValue); }; /** * Converts object value into a boolean or returns null if conversion is not possible. * * @returns boolean value or null if conversion is not supported. * * @see [[BooleanConverter.toNullableBoolean]] */ AnyValue.prototype.getAsNullableBoolean = function () { return BooleanConverter_1.BooleanConverter.toNullableBoolean(this.value); }; /** * Converts object value into a boolean or returns false if conversion is not possible. * * @returns string value or false if conversion is not supported. * * @see [[getAsBooleanWithDefault]] */ AnyValue.prototype.getAsBoolean = function () { return this.getAsBooleanWithDefault(false); }; /** * Converts object value into a boolean or returns default value if conversion is not possible. * * @param defaultValue the default value. * @returns boolean value or default if conversion is not supported. * * @see [[BooleanConverter.toBooleanWithDefault]] */ AnyValue.prototype.getAsBooleanWithDefault = function (defaultValue) { return BooleanConverter_1.BooleanConverter.toBooleanWithDefault(this.value, defaultValue); }; /** * Converts object value into an integer or returns null if conversion is not possible. * * @returns integer value or null if conversion is not supported. * * @see [[IntegerConverter.toNullableInteger]] */ AnyValue.prototype.getAsNullableInteger = function () { return IntegerConverter_1.IntegerConverter.toNullableInteger(this.value); }; /** * Converts object value into an integer or returns 0 if conversion is not possible. * * @returns integer value or 0 if conversion is not supported. * * @see [[getAsIntegerWithDefault]] */ AnyValue.prototype.getAsInteger = function () { return this.getAsIntegerWithDefault(0); }; /** * Converts object value into a integer or returns default value if conversion is not possible. * * @param defaultValue the default value. * @returns integer value or default if conversion is not supported. * * @see [[IntegerConverter.toIntegerWithDefault]] */ AnyValue.prototype.getAsIntegerWithDefault = function (defaultValue) { return IntegerConverter_1.IntegerConverter.toIntegerWithDefault(this.value, defaultValue); }; /** * Converts object value into a long or returns null if conversion is not possible. * * @returns long value or null if conversion is not supported. * * @see [[LongConverter.toNullableLong]] */ AnyValue.prototype.getAsNullableLong = function () { return LongConverter_1.LongConverter.toNullableLong(this.value); }; /** * Converts object value into a long or returns 0 if conversion is not possible. * * @returns string value or 0 if conversion is not supported. * * @see [[getAsLongWithDefault]] */ AnyValue.prototype.getAsLong = function () { return this.getAsLongWithDefault(0); }; /** * Converts object value into a long or returns default value if conversion is not possible. * * @param defaultValue the default value. * @returns long value or default if conversion is not supported. * * @see [[LongConverter.toLongWithDefault]] */ AnyValue.prototype.getAsLongWithDefault = function (defaultValue) { return LongConverter_1.LongConverter.toLongWithDefault(this.value, defaultValue); }; /** * Converts object value into a float or returns null if conversion is not possible. * * @returns float value or null if conversion is not supported. * * @see [[FloatConverter.toNullableFloat]] */ AnyValue.prototype.getAsNullableFloat = function () { return FloatConverter_1.FloatConverter.toNullableFloat(this.value); }; /** * Converts object value into a float or returns 0 if conversion is not possible. * * @returns float value or 0 if conversion is not supported. * * @see [[getAsFloatWithDefault]] */ AnyValue.prototype.getAsFloat = function () { return this.getAsFloatWithDefault(0); }; /** * Converts object value into a float or returns default value if conversion is not possible. * * @param defaultValue the default value. * @returns float value or default if conversion is not supported. * * @see [[FloatConverter.toFloatWithDefault]] */ AnyValue.prototype.getAsFloatWithDefault = function (defaultValue) { return FloatConverter_1.FloatConverter.toFloatWithDefault(this.value, defaultValue); }; /** * Converts object value into a double or returns null if conversion is not possible. * * @returns double value or null if conversion is not supported. * * @see [[DoubleConverter.toNullableDouble]] */ AnyValue.prototype.getAsNullableDouble = function () { return DoubleConverter_1.DoubleConverter.toNullableDouble(this.value); }; /** * Converts object value into a double or returns 0 if conversion is not possible. * * @returns double value or 0 if conversion is not supported. * * @see [[getAsDoubleWithDefault]] */ AnyValue.prototype.getAsDouble = function () { return this.getAsDoubleWithDefault(0); }; /** * Converts object value into a double or returns default value if conversion is not possible. * * @param defaultValue the default value. * @returns double value or default if conversion is not supported. * * @see [[DoubleConverter.toDoubleWithDefault]] */ AnyValue.prototype.getAsDoubleWithDefault = function (defaultValue) { return DoubleConverter_1.DoubleConverter.toDoubleWithDefault(this.value, defaultValue); }; /** * Converts object value into a Date or returns null if conversion is not possible. * * @returns Date value or null if conversion is not supported. * * @see [[DateTimeConverter.toNullableDateTime]] */ AnyValue.prototype.getAsNullableDateTime = function () { return DateTimeConverter_1.DateTimeConverter.toNullableDateTime(this.value); }; /** * Converts object value into a Date or returns current date if conversion is not possible. * * @returns Date value or current date if conversion is not supported. * * @see [[getAsDateTimeWithDefault]] */ AnyValue.prototype.getAsDateTime = function () { return this.getAsDateTimeWithDefault(new Date()); }; /** * Converts object value into a Date or returns default value if conversion is not possible. * * @param defaultValue the default value. * @returns Date value or default if conversion is not supported. * * @see [[DateTimeConverter.toDateTimeWithDefault]] */ AnyValue.prototype.getAsDateTimeWithDefault = function (defaultValue) { return DateTimeConverter_1.DateTimeConverter.toDateTimeWithDefault(this.value, defaultValue); }; /** * Converts object value into a value defined by specied typecode. * If conversion is not possible it returns null. * * @param type the TypeCode that defined the type of the result * @returns value defined by the typecode or null if conversion is not supported. * * @see [[TypeConverter.toNullableType]] */ AnyValue.prototype.getAsNullableType = function (type) { return TypeConverter_1.TypeConverter.toNullableType(type, this.value); }; /** * Converts object value into a value defined by specied typecode. * If conversion is not possible it returns default value for the specified type. * * @param typeCode the TypeCode that defined the type of the result * @returns value defined by the typecode or type default value if conversion is not supported. * * @see [[getAsTypeWithDefault]] */ AnyValue.prototype.getAsType = function (typeCode) { return this.getAsTypeWithDefault(typeCode, null); }; /** * Converts object value into a value defined by specied typecode. * If conversion is not possible it returns default value. * * @param typeCode the TypeCode that defined the type of the result * @param defaultValue the default value * @returns value defined by the typecode or type default value if conversion is not supported. * * @see [[TypeConverter.toTypeWithDefault]] */ AnyValue.prototype.getAsTypeWithDefault = function (typeCode, defaultValue) { return TypeConverter_1.TypeConverter.toTypeWithDefault(typeCode, this.value, defaultValue); }; /** * Converts object value into an AnyArray or returns empty AnyArray if conversion is not possible. * * @returns AnyArray value or empty AnyArray if conversion is not supported. * * @see [[AnyValueArray.fromValue]] */ AnyValue.prototype.getAsArray = function () { return AnyValueArray_1.AnyValueArray.fromValue(this.value); }; /** * Converts object value into AnyMap or returns empty AnyMap if conversion is not possible. * * @returns AnyMap value or empty AnyMap if conversion is not supported. * * @see [[AnyValueMap.fromValue]] */ AnyValue.prototype.getAsMap = function () { return AnyValueMap_1.AnyValueMap.fromValue(this.value); }; /** * Compares this object value to specified specified value. * When direct comparison gives negative results it tries * to compare values as strings. * * @param obj the value to be compared with. * @returns true when objects are equal and false otherwise. */ AnyValue.prototype.equals = function (obj) { if (obj == null && this.value == null) return true; if (obj == null || this.value == null) return false; if (obj instanceof AnyValue) obj = obj.value; var strThisValue = StringConverter_1.StringConverter.toString(this.value); var strValue = StringConverter_1.StringConverter.toString(obj); if (strThisValue == null && strValue == null) return true; if (strThisValue == null || strValue == null) return false; return strThisValue == strValue; }; /** * Compares this object value to specified specified value. * When direct comparison gives negative results it converts * values to type specified by type code and compare them again. * * @param obj the value to be compared with. * @returns true when objects are equal and false otherwise. * * @see [[TypeConverter.toType]] */ AnyValue.prototype.equalsAsType = function (type, obj) { if (obj == null && this.value == null) return true; if (obj == null || this.value == null) return false; if (obj instanceof AnyValue) obj = obj.value; var typedThisValue = TypeConverter_1.TypeConverter.toType(type, this.value); var typedValue = TypeConverter_1.TypeConverter.toType(type, obj); if (typedThisValue == null && typedValue == null) return true; if (typedThisValue == null || typedValue == null) return false; return typedThisValue == typedValue; }; /** * Creates a binary clone of this object. * * @returns a clone of this object. */ AnyValue.prototype.clone = function () { return new AnyValue(this.value); }; /** * Gets a string representation of the object. * * @returns a string representation of the object. * * @see [[StringConverter.toString]] */ AnyValue.prototype.toString = function () { return StringConverter_1.StringConverter.toString(this.value); }; /** * Gets an object hash code which can be used to optimize storing and searching. * * @returns an object hash code. */ AnyValue.prototype.hashCode = function () { return this.value != null ? this.value.hashCode() : 0; }; return AnyValue; }()); exports.AnyValue = AnyValue; //# sourceMappingURL=AnyValue.js.map