Package org.osgi.service.dal
Class FunctionData
- java.lang.Object
-
- org.osgi.service.dal.FunctionData
-
- All Implemented Interfaces:
java.lang.Comparable<java.lang.Object>
- Direct Known Subclasses:
AlarmData
,BooleanData
,KeypadData
,LevelData
public abstract class FunctionData extends java.lang.Object implements java.lang.Comparable<java.lang.Object>
AbstractFunction
data wrapper. A subclass must be used for an access to the property values by all functions. It takes care about the timestamp and additional metadata. The subclasses are responsible to provide concrete value and unit if required.
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
DESCRIPTION
Metadata key, which value represents the data description.static java.lang.String
FIELD_METADATA
Represents the metadata field name.static java.lang.String
FIELD_TIMESTAMP
Represents the timestamp field name.
-
Constructor Summary
Constructors Constructor Description FunctionData(long timestamp, java.util.Map<java.lang.String,?> metadata)
Constructs newFunctionData
instance with the specified arguments.FunctionData(java.util.Map<java.lang.String,?> fields)
Constructs newFunctionData
instance with the specified field values.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
compareTo(java.lang.Object o)
Compares thisFunctionData
instance with the given argument.boolean
equals(java.lang.Object other)
TwoFunctionData
instances are equal if their metadata and timestamp are equivalent.java.util.Map<java.lang.String,?>
getMetadata()
ReturnsFunctionData
metadata.long
getTimestamp()
ReturnsFunctionData
timestamp.int
hashCode()
Returns the hash code of thisFunctionData
.
-
-
-
Field Detail
-
FIELD_TIMESTAMP
public static final java.lang.String FIELD_TIMESTAMP
Represents the timestamp field name. The field value is available withgetTimestamp()
. The field type islong
. The constant can be used as a key toFunctionData(Map)
.- See Also:
- Constant Field Values
-
FIELD_METADATA
public static final java.lang.String FIELD_METADATA
Represents the metadata field name. The field value is available withgetMetadata()
. The field type isMap
. The constant can be used as a key toFunctionData(Map)
.- See Also:
- Constant Field Values
-
DESCRIPTION
public static final java.lang.String DESCRIPTION
Metadata key, which value represents the data description. The property value type isjava.lang.String
.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
FunctionData
public FunctionData(java.util.Map<java.lang.String,?> fields)
Constructs newFunctionData
instance with the specified field values. The map keys must match to the field names. The map values will be assigned to the appropriate class fields. For example, the maps can be: {"timestamp"=Long(1384440775495)}. That map will initialize theFIELD_TIMESTAMP
field with 1384440775495. If timestamp is missing,Long.MIN_VALUE
is used.FIELD_TIMESTAMP
- optional field. The value type must beLong
.FIELD_METADATA
- optional field. The value type must beMap
.
- Parameters:
fields
- Contains the newFunctionData
instance field values.- Throws:
java.lang.ClassCastException
- If the field value types are not expected.java.lang.NullPointerException
- If the fields map isnull
.
-
FunctionData
public FunctionData(long timestamp, java.util.Map<java.lang.String,?> metadata)
Constructs newFunctionData
instance with the specified arguments.- Parameters:
timestamp
- The data timestamp optional field.metadata
- The data metadata optional field.
-
-
Method Detail
-
getTimestamp
public long getTimestamp()
ReturnsFunctionData
timestamp. The timestamp is the difference between the value collecting time and midnight, January 1, 1970 UTC. It's measured in milliseconds. The device driver is responsible to generate that value when the value is received from the device.Long.MIN_VALUE
value means no timestamp.- Returns:
FunctionData
timestamp.
-
getMetadata
public java.util.Map<java.lang.String,?> getMetadata()
ReturnsFunctionData
metadata. It's dynamic metadata related only to this specific value. Possible keys:DESCRIPTION
- custom key
- Returns:
FunctionData
metadata ornull
is there is no metadata.
-
equals
public boolean equals(java.lang.Object other)
TwoFunctionData
instances are equal if their metadata and timestamp are equivalent.- Overrides:
equals
in classjava.lang.Object
- Parameters:
other
- The other instance to compare. It must be ofFunctionData
type.- Returns:
true
if this instance and argument have equivalent metadata and timestamp,false
otherwise.- See Also:
Object.equals(java.lang.Object)
-
hashCode
public int hashCode()
Returns the hash code of thisFunctionData
.- Overrides:
hashCode
in classjava.lang.Object
- Returns:
FunctionData
hash code.- See Also:
Object.hashCode()
-
compareTo
public int compareTo(java.lang.Object o)
Compares thisFunctionData
instance with the given argument. If the argument is notFunctionData
, it throwsClassCastException
. Otherwise, this method returns:-1
if this instance timestamp is less than the argument timestamp. If they are equivalent, it can be the result of the metadata map deep comparison.0
if all fields are equivalent.1
if this instance timestamp is greater than the argument timestamp. If they are equivalent, it can be the result of the metadata map deep comparison.
java.util.Map
and array instances.null
is less than any other non-null instance.- Specified by:
compareTo
in interfacejava.lang.Comparable<java.lang.Object>
- Parameters:
o
-FunctionData
to be compared.- Returns:
-1
,0
or1
depending on the comparison rules.- Throws:
java.lang.ClassCastException
- If the method argument is not of typeFunctionData
or metadata maps contain values of different types for the same key.java.lang.NullPointerException
- If the method argument isnull
.- See Also:
Comparable.compareTo(java.lang.Object)
-
-