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. }