HeartbeatStatus.java

  1. package gov.usgs.earthquake.distribution;

  2. import java.util.Date;
  3. import java.util.HashMap;
  4. import java.util.Iterator;
  5. import java.util.Map;

  6. import javax.json.Json;
  7. import javax.json.JsonObject;
  8. import javax.json.JsonObjectBuilder;

  9. /**
  10.  * Heartbeat status information for a single component
  11.  *
  12.  */
  13. public class HeartbeatStatus {

  14.   private Map<String, HeartbeatInfo> statuses = null;

  15.   /**
  16.    * Create a new HeartbeatStatus.
  17.    *
  18.    */
  19.   public HeartbeatStatus() {
  20.     statuses = new HashMap<String, HeartbeatInfo>();
  21.   }

  22.   /**
  23.    * Add or update a Heartbeat's key/value pair
  24.    *
  25.    * @param key   String key
  26.    * @param value String value of heartbeat info
  27.    */
  28.   public void updateStatus(String key, String value) {
  29.     statuses.put(key, new HeartbeatInfo(value, new Date()));
  30.   }

  31.   /** @return statuses - map of string, heartbeatInfo */
  32.   public Map<String, HeartbeatInfo> getStatuses() {
  33.     return statuses;
  34.   }

  35.   /** @return boolean - checking statuses */
  36.   public boolean isEmpty() {
  37.     return (statuses.size() == 0);
  38.   }

  39.   /**
  40.    * Purge all heartbeatStatus data for this component older than given date
  41.    *
  42.    * @param purgeDate purge data until this date
  43.    */
  44.   public void clearDataOlderThanDate(Date purgeDate) {
  45.     Iterator<String> iterator = statuses.keySet().iterator();
  46.     String key = "";

  47.     // find and purge data older than given purgeDate
  48.     while (iterator.hasNext()) {
  49.       key = iterator.next();
  50.       if (statuses.get(key).isExpired(purgeDate)) {
  51.         iterator.remove();
  52.       }
  53.     }

  54.   }

  55.   /**
  56.    * @return a JsonObject for output.
  57.    */
  58.   public JsonObject toJsonObject() {
  59.     JsonObjectBuilder builder = Json.createObjectBuilder();
  60.     for (String key : statuses.keySet()) {
  61.       builder.add(key, statuses.get(key).toJsonObject());
  62.     }
  63.     return builder.build();
  64.   }

  65. }