Class ReportStatusManager


  • public class ReportStatusManager
    extends java.lang.Object
    Filename: ReportStatusManager.java Created on Apr 02, 2015 Author: Kathy Applebaum Copyright Inductive Automation 2015 Project: Reporting

    Keeps track of what reports are currently executing and the last execution time for any report executed since the Gateway last started.

    • Constructor Detail

      • ReportStatusManager

        public ReportStatusManager​(GatewayContext context)
    • Method Detail

      • getReportExecutionContext

        public ReportExecutionContext getReportExecutionContext​(java.lang.String projectName,
                                                                java.lang.String reportPath,
                                                                boolean isSampleData)
      • getCurrentReportContextsForProject

        public java.util.List<ReportExecutionContext> getCurrentReportContextsForProject​(java.lang.String projectName)
      • getLastExecution

        public java.util.Date getLastExecution​(java.lang.String projectName,
                                               java.lang.String reportPath)
        Returns the start time of the last finished execution for this report.
      • getLastScheduledExecution

        public java.util.Date getLastScheduledExecution​(java.lang.String projectName,
                                                        java.lang.String reportPath)
        Returns the start time of the last finished scheduled execution for this report.
      • getLastExecutionDuration

        public long getLastExecutionDuration​(java.lang.String projectName,
                                             java.lang.String reportPath)
        Returns:
        Difference between start and end time in millis. Returns 0 if no last run date since gateway restart.
      • finish

        public void finish​(@Nonnull
                           ReportExecutionContext reportExecutionContext)
        Call this when report execution is finished to save last execution time and remove the report from the current execution map.
      • getStatusList

        @Nonnull
        public java.util.List<ReportStatusWatcher> getStatusList()
        Used by ReportStatusView to populate the status page.
        Returns:
        List of ReportStatusWatcher objects for reports currently executing reports
      • cancel

        public void cancel​(java.util.UUID uuid)
      • getNextScheduledRun

        @Nullable
        public ReportSchedule getNextScheduledRun​(java.lang.String projectName,
                                                  @Nonnull
                                                  java.lang.String reportPath)
        Returns the ReportSchedule that should execute next.
        Returns:
        Next ReportSchedule to execute for this path/project, or null if no reports scheduled.
      • getScheduledReportCount

        public int getScheduledReportCount()
        Used by the status page to determine if blank state page is shown.
        Returns:
        count of number of projects with scheduled reports
      • isScheduledReportsEmpty

        public boolean isScheduledReportsEmpty()
      • getProjectsWithSchedules

        @Nonnull
        public java.util.Collection<java.lang.String> getProjectsWithSchedules()
        Gets a list of project ids with scheduled reports.
        Returns:
        List of project ids, or empty list if none exist in our map.
      • getPathsWithSchedules

        @Nonnull
        public java.util.List<java.lang.String> getPathsWithSchedules​(@Nullable
                                                                      java.lang.String projectName)
        Gets a list of the report paths for a particular project that have reportSchedules in our map. Includes paths with schedules that are inactive.
        Returns:
        List of report paths, or empty list if none exist.
      • getActiveScheduledReportCount

        public long getActiveScheduledReportCount​(java.lang.String projectName)
        Used by ReportOverviewContributor. We want to know how many reports have at least one schedule that could be executed. This means we need to eliminate reports that are in a disabled project or that have no enabled schedules.
        Parameters:
        projectName - Nullable
        Returns:
        Count of how many reports in this project have at least one enabled schedule.
      • setScheduledRuns

        public void setScheduledRuns​(@Nonnull
                                     ProjectResource projectResource)
        Called to add new schedules
        Parameters:
        projectResource - Not null.
      • removeScheduledRuns

        public void removeScheduledRuns​(java.lang.String projectName)
        Removes all scheduled run entries from scheduledExecutionsByProject and resourceIdToReportPath for this project. Called when a project is deleted.
      • removeScheduledRuns

        public void removeScheduledRuns​(@Nonnull
                                        ProjectResourceId id)