HeartbeatStatus.java
package gov.usgs.earthquake.distribution;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
/**
* Heartbeat status information for a single component
*
*/
public class HeartbeatStatus {
private Map<String, HeartbeatInfo> statuses = null;
/**
* Create a new HeartbeatStatus.
*
*/
public HeartbeatStatus() {
statuses = new HashMap<String, HeartbeatInfo>();
}
/**
* Add or update a Heartbeat's key/value pair
*
* @param key String key
* @param value String value of heartbeat info
*/
public void updateStatus(String key, String value) {
statuses.put(key, new HeartbeatInfo(value, new Date()));
}
/** @return statuses - map of string, heartbeatInfo */
public Map<String, HeartbeatInfo> getStatuses() {
return statuses;
}
/** @return boolean - checking statuses */
public boolean isEmpty() {
return (statuses.size() == 0);
}
/**
* Purge all heartbeatStatus data for this component older than given date
*
* @param purgeDate purge data until this date
*/
public void clearDataOlderThanDate(Date purgeDate) {
Iterator<String> iterator = statuses.keySet().iterator();
String key = "";
// find and purge data older than given purgeDate
while (iterator.hasNext()) {
key = iterator.next();
if (statuses.get(key).isExpired(purgeDate)) {
iterator.remove();
}
}
}
/**
* @return a JsonObject for output.
*/
public JsonObject toJsonObject() {
JsonObjectBuilder builder = Json.createObjectBuilder();
for (String key : statuses.keySet()) {
builder.add(key, statuses.get(key).toJsonObject());
}
return builder.build();
}
}