org.hackystat.sensorbase.resource.sensordata
Class SensorDataManager

java.lang.Object
  extended by org.hackystat.sensorbase.resource.sensordata.SensorDataManager

public class SensorDataManager
extends java.lang.Object

Provides a manager for the Sensor Data resource. As with all of the Resource managers the methods in this class can be grouped into three general categories:

See https://jaxb.dev.java.net/guide/Performance_and_thread_safety.html for info on JAXB performance and thread safety.

Author:
Philip Johnson

Field Summary
(package private)  DbManager dbManager
          The DbManager associated with this server.
(package private)  Server server
          The Server associated with this SensorDataManager.
 
Constructor Summary
SensorDataManager(Server server)
          The constructor for SensorDataManagers.
 
Method Summary
 java.lang.String convertOwnerToEmail(java.lang.String owner)
          Converts an "Owner" string to an email address.
 java.lang.String convertOwnerToUri(java.lang.String owner)
          Returns the owner string as a URI.
 java.lang.String convertSdtToName(java.lang.String sdt)
          Converts an "sdt" string to the sdt name.
 java.lang.String convertSdtToUri(java.lang.String sdt)
          Returns the sdt string as a URI.
 void deleteData(User user)
          Ensures that sensor data with the given user is no longer present in this manager.
 void deleteData(User user, javax.xml.datatype.XMLGregorianCalendar timestamp)
          Ensures that sensor data with the given user and timestamp is no longer present in this manager.
 java.lang.String getSensorData(User user, javax.xml.datatype.XMLGregorianCalendar timestamp)
          Returns the SensorData XML String corresponding to [user, timestamp], or null if not found.
 java.lang.String getSensorDataIndex()
          Returns the XML SensorDataIndex for all sensor data.
 java.lang.String getSensorDataIndex(java.util.List<User> users, javax.xml.datatype.XMLGregorianCalendar startTime, javax.xml.datatype.XMLGregorianCalendar endTime, java.util.List<java.lang.String> uriPatterns, int startIndex, int maxInstances)
          Returns the XML SensorDataIndex for all sensor data matching these users, start/end time, and whose resource string matches at least one in the list of UriPatterns.
 java.lang.String getSensorDataIndex(java.util.List<User> users, javax.xml.datatype.XMLGregorianCalendar startTime, javax.xml.datatype.XMLGregorianCalendar endTime, java.util.List<java.lang.String> uriPatterns, java.lang.String sdt)
          Returns the XML SensorDataIndex for all sensor data matching these users, start/end time, and whose resource string matches at least one in the list of UriPatterns.
 java.lang.String getSensorDataIndex(java.util.List<User> users, javax.xml.datatype.XMLGregorianCalendar startTime, javax.xml.datatype.XMLGregorianCalendar endTime, java.util.List<java.lang.String> uriPatterns, java.lang.String sdt, java.lang.String tool)
          Returns the XML SensorDataIndex for all sensor data matching these users, start/end time, and whose resource string matches at least one in the list of UriPatterns.
 java.lang.String getSensorDataIndex(User user)
          Returns the XML SensorDataIndex for all sensor data for this user.
 java.lang.String getSensorDataIndex(User user, java.lang.String sdtName)
          Returns the XML SensorDataIndex for all sensor data for this user and sensor data type.
 java.lang.String getSensorDataIndexLastMod(User user, javax.xml.datatype.XMLGregorianCalendar lastModStartTime, javax.xml.datatype.XMLGregorianCalendar lastModEndTime)
          Returns the XML SensorDataIndex for all sensor data for the given user that arrived at the server between the given timestamps.
 boolean hasSensorData(User user, javax.xml.datatype.XMLGregorianCalendar timestamp)
          Returns true if the passed [user, timestamp] has sensor data defined for it.
 java.lang.String makeSensorData(SensorData data)
          Returns the passed SensorData instance as a String encoding of its XML representation.
 SensorData makeSensorData(java.lang.String xmlString)
          Takes a String encoding of a SensorData in XML format and converts it to an instance.
 SensorDataIndex makeSensorDataIndex(java.lang.String xmlString)
          Takes an XML Document representing a SensorDataIndex and converts it to an instance.
 SensorDataRef makeSensorDataRef(SensorData data)
          Returns a SensorDataRef instance constructed from a SensorData instance.
 java.lang.String makeSensorDataRefString(SensorData data)
          Returns the passed SensorData instance as a String encoding of its XML representation as a SensorDataRef object.
 SensorDatas makeSensorDatas(java.lang.String xmlString)
          Takes a String encoding of a SensorDatas in XML format and converts it to an instance.
 void putSensorData(SensorData data)
          Updates the Manager with this sensor data.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

server

Server server
The Server associated with this SensorDataManager.


dbManager

DbManager dbManager
The DbManager associated with this server.

Constructor Detail

SensorDataManager

public SensorDataManager(Server server)
The constructor for SensorDataManagers. There is one SensorDataManager per Server.

Parameters:
server - The Server instance associated with this SensorDataManager.
Method Detail

convertOwnerToEmail

public java.lang.String convertOwnerToEmail(java.lang.String owner)
Converts an "Owner" string to an email address. The owner string might be a URI (starting with http) or an email address.

Parameters:
owner - The owner string.
Returns:
The email address corresponding to the owner string.

convertOwnerToUri

public java.lang.String convertOwnerToUri(java.lang.String owner)
Returns the owner string as a URI. The owner string could either be an email address or the URI.

Parameters:
owner - The owner string.
Returns:
The URI corresponding to the owner string.

convertSdtToName

public java.lang.String convertSdtToName(java.lang.String sdt)
Converts an "sdt" string to the sdt name. The sdt string might be a URI (starting with http) or the sdt name.

Parameters:
sdt - The sdt string.
Returns:
The sdt name corresponding to the sdt string.

convertSdtToUri

public java.lang.String convertSdtToUri(java.lang.String sdt)
Returns the sdt string as a URI. The sdt string could either be an sdt name or a URI.

Parameters:
sdt - The sdt string.
Returns:
The URI corresponding to the sdt string.

getSensorDataIndex

public java.lang.String getSensorDataIndex()
Returns the XML SensorDataIndex for all sensor data.

Returns:
The XML String providing an index of all relevent sensor data resources.

getSensorDataIndex

public java.lang.String getSensorDataIndex(User user)
Returns the XML SensorDataIndex for all sensor data for this user.

Parameters:
user - The User whose sensor data is to be returned.
Returns:
The XML String providing an index of all relevent sensor data resources.

getSensorDataIndex

public java.lang.String getSensorDataIndex(User user,
                                           java.lang.String sdtName)
Returns the XML SensorDataIndex for all sensor data for this user and sensor data type.

Parameters:
user - The User whose sensor data is to be returned.
sdtName - The sensor data type name.
Returns:
The XML String providing an index of all relevent sensor data resources.

getSensorDataIndex

public java.lang.String getSensorDataIndex(java.util.List<User> users,
                                           javax.xml.datatype.XMLGregorianCalendar startTime,
                                           javax.xml.datatype.XMLGregorianCalendar endTime,
                                           java.util.List<java.lang.String> uriPatterns,
                                           int startIndex,
                                           int maxInstances)
Returns the XML SensorDataIndex for all sensor data matching these users, start/end time, and whose resource string matches at least one in the list of UriPatterns. Client must guarantee that startTime and endTime are within Project dates, and that startIndex and maxInstances are non-negative.

Parameters:
users - The users.
startTime - The start time.
endTime - The end time.
uriPatterns - A list of UriPatterns.
startIndex - The starting index.
maxInstances - The maximum number of instances to return.
Returns:
The XML SensorDataIndex string corresponding to the matching sensor data.

getSensorDataIndex

public java.lang.String getSensorDataIndex(java.util.List<User> users,
                                           javax.xml.datatype.XMLGregorianCalendar startTime,
                                           javax.xml.datatype.XMLGregorianCalendar endTime,
                                           java.util.List<java.lang.String> uriPatterns,
                                           java.lang.String sdt,
                                           java.lang.String tool)
Returns the XML SensorDataIndex for all sensor data matching these users, start/end time, and whose resource string matches at least one in the list of UriPatterns.

Parameters:
users - The users.
startTime - The start time.
endTime - The end time.
uriPatterns - A list of UriPatterns.
sdt - The sensordatatype of interest, or null if sensordata from all SDTs should be retrieved.
tool - The tool of interest.
Returns:
The XML SensorDataIndex string corresponding to the matching sensor data.

getSensorDataIndex

public java.lang.String getSensorDataIndex(java.util.List<User> users,
                                           javax.xml.datatype.XMLGregorianCalendar startTime,
                                           javax.xml.datatype.XMLGregorianCalendar endTime,
                                           java.util.List<java.lang.String> uriPatterns,
                                           java.lang.String sdt)
Returns the XML SensorDataIndex for all sensor data matching these users, start/end time, and whose resource string matches at least one in the list of UriPatterns.

Parameters:
users - The users.
startTime - The start time.
endTime - The end time.
uriPatterns - A list of UriPatterns.
sdt - The sensordatatype of interest, or null if sensordata from all SDTs should be retrieved.
Returns:
The XML SensorDataIndex string corresponding to the matching sensor data.

getSensorDataIndexLastMod

public java.lang.String getSensorDataIndexLastMod(User user,
                                                  javax.xml.datatype.XMLGregorianCalendar lastModStartTime,
                                                  javax.xml.datatype.XMLGregorianCalendar lastModEndTime)
Returns the XML SensorDataIndex for all sensor data for the given user that arrived at the server between the given timestamps. This method uses the LastMod timestamp rather than the "regular" timestamp, and is used for real-time monitoring of data arriving at the server.

Parameters:
user - The user whose data is being monitored.
lastModStartTime - The lastMod start time of interest.
lastModEndTime - The lastMod end time of interest.
Returns:
The XML SensorDataIndex for the recently arrived data based upon the timestamps.

putSensorData

public void putSensorData(SensorData data)
Updates the Manager with this sensor data. Any old definition is overwritten for this user and timestamp. If runtime is not specified, it is defaulted to the timestamp. If tool, resource, or SDT are not specified, they default to "".

Parameters:
data - The sensor data.

hasSensorData

public boolean hasSensorData(User user,
                             javax.xml.datatype.XMLGregorianCalendar timestamp)
Returns true if the passed [user, timestamp] has sensor data defined for it. Generally, you will want to use getSensorData(user, timestamp) and check for the return value == null to avoid a redundant DB call.

Parameters:
user - The user.
timestamp - The timestamp
Returns:
True if there is any sensor data for this [user, timestamp].

getSensorData

public java.lang.String getSensorData(User user,
                                      javax.xml.datatype.XMLGregorianCalendar timestamp)
Returns the SensorData XML String corresponding to [user, timestamp], or null if not found.

Parameters:
user - The user
timestamp - The timestamp.
Returns:
The SensorData XML String, or null if not found.

deleteData

public void deleteData(User user,
                       javax.xml.datatype.XMLGregorianCalendar timestamp)
Ensures that sensor data with the given user and timestamp is no longer present in this manager.

Parameters:
user - The user.
timestamp - The timestamp associated with this sensor data.

deleteData

public void deleteData(User user)
Ensures that sensor data with the given user is no longer present in this manager.

Parameters:
user - The user.

makeSensorDataIndex

public SensorDataIndex makeSensorDataIndex(java.lang.String xmlString)
                                    throws java.lang.Exception
Takes an XML Document representing a SensorDataIndex and converts it to an instance.

Parameters:
xmlString - The XML string representing a SensorDataIndex.
Returns:
The corresponding SensorDataIndex instance.
Throws:
java.lang.Exception - If problems occur during unmarshalling.

makeSensorData

public SensorData makeSensorData(java.lang.String xmlString)
                          throws java.lang.Exception
Takes a String encoding of a SensorData in XML format and converts it to an instance.

Parameters:
xmlString - The XML string representing a SensorData.
Returns:
The corresponding SensorData instance.
Throws:
java.lang.Exception - If problems occur during unmarshalling.

makeSensorDatas

public SensorDatas makeSensorDatas(java.lang.String xmlString)
                            throws java.lang.Exception
Takes a String encoding of a SensorDatas in XML format and converts it to an instance.

Parameters:
xmlString - The XML string representing a SensorData.
Returns:
The corresponding SensorData instance.
Throws:
java.lang.Exception - If problems occur during unmarshalling.

makeSensorData

public final java.lang.String makeSensorData(SensorData data)
                                      throws java.lang.Exception
Returns the passed SensorData instance as a String encoding of its XML representation. Final because it's called in constructor.

Parameters:
data - The SensorData instance.
Returns:
The XML String representation.
Throws:
java.lang.Exception - If problems occur during translation.

makeSensorDataRefString

public final java.lang.String makeSensorDataRefString(SensorData data)
                                               throws java.lang.Exception
Returns the passed SensorData instance as a String encoding of its XML representation as a SensorDataRef object. Final because it's called in constructor.

Parameters:
data - The SensorData instance.
Returns:
The XML String representation of it as a SensorDataRef
Throws:
java.lang.Exception - If problems occur during translation.

makeSensorDataRef

public SensorDataRef makeSensorDataRef(SensorData data)
Returns a SensorDataRef instance constructed from a SensorData instance.

Parameters:
data - The sensor data instance.
Returns:
A SensorDataRef instance.