Class DelayRecipients

java.lang.Object
ecmwf.ecpds.master.plugin.http.controller.monitoring.DelayRecipients

public final class DelayRecipients extends Object
ECMWF Product Data Store (OpenECPDS) Project Works out who is concerned by a delay: the destinations receiving a (product, cycle) combination, using the same data as the destinations table at the bottom of /do/monitoring, and their contact emails.
Since:
2026-10-12
Version:
8.2.0
Author:
Laurent Gougeon - syi@ecmwf.int, ECMWF.
  • Method Details

    • cyclesPerProduct

      public static Map<String, TreeSet<String>> cyclesPerProduct() throws Exception
      Gets the available cycles for each product, from the monitoring data. Products whose generic (all-types) Product Description disables Delay Notification are left out.
      Returns:
      the sorted cycles, keyed by product name
      Throws:
      Exception - if the monitoring data cannot be read
    • typesPerCycle

      public static Map<String, Map<String,Integer>> typesPerCycle() throws Exception
      Gets each type's worst generation status for each product and cycle, from the present steps shown on the summary page. As with the cycle status, a fully completed type is counted as OK.
      Returns:
      generation statuses keyed by "product@cycle", then by type (sorted)
      Throws:
      Exception - if the monitoring data cannot be read
    • minutesBeforeSchedulePerCycle

      public static Map<String,Long> minutesBeforeSchedulePerCycle() throws Exception
      Gets, for each known product and cycle, the most urgent step offset: the smallest minutes before schedule across its steps, as listed on the summary page (completed steps use their completion time). The cycle's overall offset (earliest step schedule) is used when no step is known.
      Returns:
      minutes before schedule keyed by "product@cycle"
      Throws:
      Exception - if the monitoring data cannot be read
    • minutesBeforeSchedulePerProduct

      public static Map<String,Long> minutesBeforeSchedulePerProduct(Map<String,Long> perCycle)
      Finds the most urgent cycle for each product. A negative value means that at least one cycle has a step past its schedule; cycles without a schedule are ignored.
      Parameters:
      perCycle - the minutes before schedule keyed by "product@cycle"
      Returns:
      shortest minutes before schedule, keyed by product name
    • generationStatusPerCycle

      public static Map<String,Integer> generationStatusPerCycle() throws Exception
      Gets the generation status for each known product and cycle, as shown on the summary page.
      Returns:
      generation status keyed by "product@cycle"
      Throws:
      Exception - if the monitoring data cannot be read
    • generationStatusPerProduct

      public static Map<String,Integer> generationStatusPerProduct(Map<String,Long> perCycleMinutes, Map<String,Integer> perCycleStatus)
      Gets the generation status of the most urgent cycle for each product.
      Parameters:
      perCycleMinutes - the minutes before schedule keyed by "product@cycle"
      perCycleStatus - the generation status keyed by "product@cycle"
      Returns:
      generation status keyed by product name
    • resolve

      public static DelayRecipients.Result resolve(Collection<String> cells, boolean includeNonMonitored) throws Exception
      Resolves the destinations and emails for a selection of cells.
      Parameters:
      cells - the cells, as "product@time" keys
      includeNonMonitored - also include the destinations not showing in the monitor
      Returns:
      the destinations and emails
      Throws:
      Exception - if the data cannot be read