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();
- }
- }