|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.hackystat.sensorbase.db.DbImplementation
org.hackystat.sensorbase.db.derby.DerbyImplementation
public class DerbyImplementation
Provides a implementation of DbImplementation using Derby in embedded mode. Note: If you are using this implementation as a guide for implementing an alternative database, you should be aware that this implementation does not do connection pooling. It turns out that embedded Derby does not require connection pooling, so it is not present in this code. You will probably want it for your version, of course.
Field Summary |
---|
Fields inherited from class org.hackystat.sensorbase.db.DbImplementation |
---|
logger, server |
Constructor Summary | |
---|---|
DerbyImplementation(Server server)
Instantiates the Derby implementation. |
Method Summary | |
---|---|
boolean |
compressTables()
Databases like Derby require an explicit compress command for releasing disk space after a large number of rows have been deleted. |
(package private) static java.lang.String |
constructLikeClauses(java.util.List<java.lang.String> uriPatterns)
Constructs a set of LIKE clauses corresponding to the passed set of UriPatterns. |
void |
deleteProject(User owner,
java.lang.String projectName)
Ensures that the Project with the given owner and projectName is no longer present in the db. |
void |
deleteSensorData(User user)
Ensures that sensor data with the given user is no longer present in this manager. |
void |
deleteSensorData(User user,
javax.xml.datatype.XMLGregorianCalendar timestamp)
Ensures that sensor data with the given user and timestamp is no longer present in this manager. |
void |
deleteSensorDataType(java.lang.String sdtName)
Ensures that the SensorDataType with the given name is no longer present in this manager. |
void |
deleteUser(java.lang.String email)
Ensures that the User with the given email is no longer present in this manager. |
java.lang.String |
getProject(User owner,
java.lang.String projectName)
Returns the Project instance as XML string, or null if not found. |
java.lang.String |
getProjectIndex()
Returns the XML ProjectIndex for all Projects in this server. |
java.lang.String |
getProjectSensorDataSnapshot(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 an XML SensorDataIndex to sensor data for the given time interval and sdt with the most recent runtime value. |
ProjectSummary |
getProjectSummary(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 href)
Returns a ProjectSummary instance constructed for the given Project between the startTime and endTime. |
int |
getRowCount(java.lang.String table)
Returns the current number of rows in the specified table. |
java.lang.String |
getSensorData(User user,
javax.xml.datatype.XMLGregorianCalendar timestamp)
Returns the SensorData instance as XML string, or null if not found. |
java.lang.String |
getSensorDataIndex()
Returns the XML SensorDataIndex for all sensor data in this server. |
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 an XML SensorDataIndex representing the SensorData for the given user between start and end time whose resource string matches at least one of the 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 an XML SensorDataIndex representing the SensorData for the given user between start and end time whose resource string matches at least one of the 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 since the given start and end timestamps. |
java.lang.String |
getSensorDataType(java.lang.String sdtName)
Returns the SensorDataType instance as XML string, or null if not found. |
java.lang.String |
getSensorDataTypeIndex()
Returns the XML SensorDataTypeIndex for all SDTs in this server. |
java.util.Set<java.lang.String> |
getTableNames()
Returns a set containing the names of all tables in this database. |
java.lang.String |
getUser(java.lang.String email)
Returns the User instance as XML string, or null if not found. |
java.lang.String |
getUserIndex()
Returns the XML UserIndex for all Users in this server. |
boolean |
hasSensorData(User user,
javax.xml.datatype.XMLGregorianCalendar timestamp)
Returns true if the passed [key, timestamp] has sensor data defined for it. |
boolean |
indexTables()
The most appropriate set of indexes for the database has been evolving over time as we develop new queries. |
void |
initialize()
To be called as part of the startup process for a storage system. |
boolean |
isFreshlyCreated()
Returns true if the initialize() method did indeed create a fresh storage system. |
boolean |
storeProject(Project project,
java.lang.String xmlProject,
java.lang.String xmlProjectRef)
Persists a Project instance. |
boolean |
storeSensorData(SensorData data,
java.lang.String xmlSensorData,
java.lang.String xmlSensorDataRef)
Persists a SensorData instance. |
boolean |
storeSensorDataType(SensorDataType sdt,
java.lang.String xmlSensorDataType,
java.lang.String xmlSensorDataTypeRef)
Persists a SensorDataType instance. |
boolean |
storeUser(User user,
java.lang.String xmlUser,
java.lang.String xmlUserRef)
Persists a User instance. |
Methods inherited from class org.hackystat.sensorbase.db.DbImplementation |
---|
getProjectManager, getSdtManager, getSensorDataManager, getUserManager |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public DerbyImplementation(Server server)
server
- The SensorBase server instance.Method Detail |
---|
public void initialize()
initialize
in class DbImplementation
public boolean storeSensorData(SensorData data, java.lang.String xmlSensorData, java.lang.String xmlSensorDataRef)
storeSensorData
in class DbImplementation
data
- The sensor data.xmlSensorData
- The SensorData marshalled into an XML String.xmlSensorDataRef
- The corresponding SensorDataRef marshalled into an XML String
public boolean isFreshlyCreated()
isFreshlyCreated
in class DbImplementation
public java.lang.String getSensorDataIndex()
getSensorDataIndex
in class DbImplementation
public java.lang.String getSensorDataIndex(User user)
getSensorDataIndex
in class DbImplementation
user
- The User whose sensor data is to be returned.
public java.lang.String getSensorDataIndex(User user, java.lang.String sdtName)
getSensorDataIndex
in class DbImplementation
user
- The User whose sensor data is to be returned.sdtName
- The sensor data type name.
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)
getSensorDataIndex
in class DbImplementation
users
- The list of users whose SensorData will be returned.startTime
- The earliest Sensor Data to be returned.endTime
- The latest SensorData to be returned.uriPatterns
- At least one UriPattern must match the SensorData resource field.sdt
- The SDT of interest, or null if data from all SDTs should be retrieved.
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)
getSensorDataIndex
in class DbImplementation
users
- The list of users whose SensorData will be returned.startTime
- The earliest Sensor Data to be returned.endTime
- The latest SensorData to be returned.uriPatterns
- At least one UriPattern must match the SensorData resource field.sdt
- The SDT of interest. Should not be null.tool
- The tool of interest. Should not be null.
public java.lang.String getProjectSensorDataSnapshot(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)
getProjectSensorDataSnapshot
in class DbImplementation
users
- The list of users whose sensor data will be checked.startTime
- The start time.endTime
- The end time.uriPatterns
- The uripatterns that must match the resource string.sdt
- The sensor data type of interest.tool
- The tool of interest, or null if any tool is OK.
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)
getSensorDataIndex
in class DbImplementation
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.
static java.lang.String constructLikeClauses(java.util.List<java.lang.String> uriPatterns)
Each UriPattern is translated in the following way:
(RESOURCE like 'translatedUriPattern1' escape 'escapeChar1') OR (RESOURCE like 'translatedUriPattern2' escape 'escapeChar2') ..
There is one special case. If the List(UriPattern) is null, empty, or consists of exactly one UriPattern which is "**" or "*", then the empty string is returned. This is an optimization for the common case where all resources should be matched and so we don't need any LIKE clauses.
We return either the empty string (""), or else a string of the form: " AND ([like clause] AND [like clause] ... )" This enables the return value to be appended to the SELECT statement.
This method is static and package private to support testing. See the class TestConstructUriPattern for example invocations and expected return values.
uriPatterns
- The list of uriPatterns.
public java.lang.String getSensorDataIndexLastMod(User user, javax.xml.datatype.XMLGregorianCalendar lastModStartTime, javax.xml.datatype.XMLGregorianCalendar lastModEndTime)
getSensorDataIndexLastMod
in class DbImplementation
user
- The user whose data is being monitored.lastModStartTime
- The beginning lastMod timestamp of interest.lastModEndTime
- The ending lastMod timestamp of interest.
public boolean hasSensorData(User user, javax.xml.datatype.XMLGregorianCalendar timestamp)
hasSensorData
in class DbImplementation
user
- The user.timestamp
- The timestamp
public void deleteSensorData(User user, javax.xml.datatype.XMLGregorianCalendar timestamp)
deleteSensorData
in class DbImplementation
user
- The user.timestamp
- The timestamp associated with this sensor data.public void deleteSensorData(User user)
deleteSensorData
in class DbImplementation
user
- The user.public java.lang.String getSensorData(User user, javax.xml.datatype.XMLGregorianCalendar timestamp)
getSensorData
in class DbImplementation
user
- The user.timestamp
- The timestamp associated with this sensor data.
public boolean storeSensorDataType(SensorDataType sdt, java.lang.String xmlSensorDataType, java.lang.String xmlSensorDataTypeRef)
storeSensorDataType
in class DbImplementation
sdt
- The sensor data typexmlSensorDataType
- The SensorDataType marshalled into an XML String.xmlSensorDataTypeRef
- The corresponding SensorDataTypeRef marshalled into an XML String
public void deleteSensorDataType(java.lang.String sdtName)
deleteSensorDataType
in class DbImplementation
sdtName
- The SDT name.public java.lang.String getSensorDataTypeIndex()
getSensorDataTypeIndex
in class DbImplementation
public java.lang.String getSensorDataType(java.lang.String sdtName)
getSensorDataType
in class DbImplementation
sdtName
- The SDT name.
public void deleteUser(java.lang.String email)
deleteUser
in class DbImplementation
email
- The user's email address.public java.lang.String getUser(java.lang.String email)
getUser
in class DbImplementation
email
- The user's email.
public java.lang.String getUserIndex()
getUserIndex
in class DbImplementation
public boolean storeUser(User user, java.lang.String xmlUser, java.lang.String xmlUserRef)
storeUser
in class DbImplementation
user
- The userxmlUser
- The User marshalled into an XML String.xmlUserRef
- The corresponding UserRef marshalled into an XML String
public void deleteProject(User owner, java.lang.String projectName)
deleteProject
in class DbImplementation
owner
- The User who owns this project.projectName
- The name of the Project.public java.lang.String getProject(User owner, java.lang.String projectName)
getProject
in class DbImplementation
owner
- The user who owns the project.projectName
- The name of the Project.
public java.lang.String getProjectIndex()
getProjectIndex
in class DbImplementation
public ProjectSummary getProjectSummary(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 href)
getProjectSummary
in class DbImplementation
users
- The users in this project.startTime
- The startTimeendTime
- The endTime.uriPatterns
- The UriPatterns for this project.href
- The URL naming this resource.
public boolean storeProject(Project project, java.lang.String xmlProject, java.lang.String xmlProjectRef)
storeProject
in class DbImplementation
project
- The Project.xmlProject
- The Project marshalled into an XML String.xmlProjectRef
- The corresponding ProjectRef marshalled into an XML String
public boolean compressTables()
compressTables
in class DbImplementation
public boolean indexTables()
indexTables
in class DbImplementation
public int getRowCount(java.lang.String table)
getRowCount
in class DbImplementation
table
- The table whose rows are to be counted.
public java.util.Set<java.lang.String> getTableNames()
getTableNames
in class DbImplementation
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |