package javax.megaco.message.descriptor;
import java.io.Serializable;
import javax.megaco.MethodInvocationException;
import javax.megaco.pkg.PkgEventItem;
import javax.megaco.pkg.PkgItemStr;
/**
* The ObservedEvent object is a class that shall be used to set the observed
* events and the stream id in which it was observed along with optionally the
* time at which it was detected. The class optionally provides interface to
* specify the package name, item name and the associated parameters in the
* string format. This is an independent class derived from java.util.Object and
* shall not have any derived classes.
*/
public class ObservedEvent implements Serializable {
private PkgEventItem eventItem;
private PkgItemStr eventItemStr;
private TimeStamp timeStamp;
private Integer streamId;
/**
* Constructs Observed Event parameter Object. This is to be set within an
* observed event descriptor.
*
* @param eventItem
* @throws IllegalArgumentException
* - Thrown if an invalid event id is set.
*/
public ObservedEvent(PkgEventItem eventItem) throws IllegalArgumentException {
// FIXME: add error check on invalid event?
if (eventItem == null) {
throw new IllegalArgumentException("PkgEventItem must not be null");
}
this.eventItem = eventItem;
}
/**
*
* Constructs Observed Event parameter object with the PkgItemStr object.
* This method would be used if the package parameters are to be conveyed in
* the string format. This is to be set within an event buffer descriptor.
*
* @param eventItemStr
* @throws IllegalArgumentException
* - Thrown if an invalid eventItemStr object reference is set.
*/
public ObservedEvent(PkgItemStr eventItemStr) throws IllegalArgumentException {
if (eventItemStr == null) {
throw new IllegalArgumentException("PkgItemStr must not be null");
}
this.eventItemStr = eventItemStr;
}
/**
* The method can be used to get the pkdgName as set in the observed event
* descriptor. This method gives the package information, the attached event
* information and the parameter name and value for the event id.
*
* @return The object reference for the megaco package, which has the object
* reference for megaco package event and which in turn has the
* reference for the parameter info. If the parameter has not been
* set, then this method shall return NULL.
*/
public PkgEventItem getMegacoPkgEvtItem() {
return this.eventItem;
}
/**
* The method can be used to get the pkdgName as set in the observed event
* descriptor. This method gives the package information, the attached event
* information and the parameter name and value. As compares to the
* getMegacoPkgEvtItem() method, this method returns the package parameters
* in the string format.
*
* @return The object reference for the megaco package item. This class
* holds information about package name, item name and the
* parameters in the string format. If the parameter has not been
* set, then this method shall return NULL.
*/
public PkgItemStr getMegacoPkgItemStr() {
return this.eventItemStr;
}
/**
* The method can be used to get stream id in the event descriptor.
*
* @return streamId - The integer value of the stream id shall be returned.
* This shall be returned only if the streamId is present in the
* event parameter of the event descriptor.
* @throws IllegalStateException
* - Thrown if streamId has not been set. Thus this method
* should be called only after verifying that the streamId is
* set using isStreamIdPresent
*/
public int getStreamId() throws IllegalStateException {
if (!isStreamIdPresent()) {
throw new IllegalStateException("StreamId must be present");
}
return this.streamId.intValue();
}
/**
* The method can be used to set stream id in the event descriptor. This
* automatically sets the value of stream id present in the event parameter
* object to true.
*
* @param streamId
* - The integer value of the stream id shall be set.
* @throws IllegalArgumentException
* - Thrown if streamId is set with an invalid value.
*/
public void setStreamId(int streamId) throws IllegalArgumentException {
if (streamId <= 0) {
throw new IllegalArgumentException("StreamId must be greater than zero.");
}
this.streamId = new Integer(streamId);
}
/**
* The method can be used to find if the stream id is present in the current
* object.
*
* @return Returns true if the stream id is present. This needs to be
* checked before getting the stream id from this object.
*/
public boolean isStreamIdPresent() {
return this.streamId != null;
}
/**
* The method is used to retrieve the time stamp at which the event was
* detected.
*
* @return timeStamp - The object reference for the timestamp. It returns a
* NULL value when not set.
*/
public TimeStamp getTimeStamp() {
return this.timeStamp;
}
/**
* The method is used to set the time stamp at which the event was detected.
*
* @param timeStamp
* - The object reference for the timestamp.
* @throws IllegalArgumentException
* - Thrown if timestamp is set with an invalid value.
*/
public void setTimeStamp(TimeStamp timeStamp) throws IllegalArgumentException {
// FIXME: add checks for invalid value?
if (timeStamp == null) {
throw new IllegalArgumentException("TimeStamp must not be null");
}
this.timeStamp = timeStamp;
}
public java.lang.String toString() {
return super.toString();
}
}