Class CronTriggerFactory

  • All Implemented Interfaces:
    com.inet.plugin.NamedExtension

    public class CronTriggerFactory
    extends TriggerFactory<com.inet.taskplanner.server.api.trigger.cron.CronTrigger>
    Factory which produces CronTrigger components.
    Since:
    taskplanner 3.0
    See Also:
    CronTrigger
    • Field Detail

      • PROP_CRON_EXPRESSION

        public static final java.lang.String PROP_CRON_EXPRESSION
        The cron expression which determines the time when this trigger will start the task.

        Format:
        [minute] [hour] [dayOfMonth] [month] [dayOfWeek] [year]
        One of dayOfMonth and dayOfWeek must be '?' and year can be omitted.

        Example:

         
              TriggerDefinition cron = new TriggerDefinition(CronTriggerFactory.EXTENSION_NAME);
              cron.setProperty(CronTriggerFactory.PROP_CRON_EXPRESSION, "30 10 ? * 2"); //at 10:30 on each Monday
         
         
        See Also:
        Constant Field Values
    • Constructor Detail

      • CronTriggerFactory

        public CronTriggerFactory()
        Creates a new nice CronTriggerFactory instance.
        Since:
        taskplanner 3.0
    • Method Detail

      • getInformation

        public TriggerInfo getInformation​(com.inet.id.GUID taskID)
        Returns an information object about components which can be produced with this factory.

        The returned info contains information about how such a component is to be presented in the taskPlanner GUI. This are display-infos or available options to configure. The returned information contains fields which describes the values a user can specify in the WEB GUI. The field is also responsible to replace any placeholders for the corresponding property in a serial task. That means properties without a field definition will not get any series placeholder replaced.

        If you implement a factory for a component only to be used by API, only then you can return null here.

        Specified by:
        getInformation in class AbstractFactory<com.inet.taskplanner.server.api.trigger.cron.CronTrigger,​TriggerDefinition,​TriggerInfo,​SummaryInfo>
        Parameters:
        taskID - the ID of the task the definition belongs or will belong to, for optional use. Can be null if the operation is done for a non-saved task.
        Returns:
        an information object for components this factory can produce
      • updateValues

        public java.util.Map<java.lang.String,​java.lang.String> updateValues​(TriggerDefinition definition,
                                                                                   com.inet.id.GUID taskID)
        Update values according to the give definition.

        The given definition is guaranteed to belong to this factory

        Overrides:
        updateValues in class SeriesIndependentFactory<com.inet.taskplanner.server.api.trigger.cron.CronTrigger,​TriggerDefinition,​TriggerInfo,​SummaryInfo>
        Parameters:
        definition - the definition with the current properties
        taskID - the ID of the task the definition belongs or will belong to, for optional use
        Returns:
        a map of property key with their values that have changed
      • getNextExecutionsSummaryText

        public static java.lang.String getNextExecutionsSummaryText​(java.util.List<java.time.ZonedDateTime> nextExecutionDates)
        FOR INTERNAL USE ONLY.
        Generates the text of the next executions
        Parameters:
        nextExecutionDates - list of next execution dates to get the summary text for
        Returns:
        the next executions text
      • validate

        public void validate​(TriggerDefinition definition,
                             com.inet.id.GUID taskID)
                      throws ValidationException
        Validate the given definition.

        The given definition is guaranteed to belong to this factory

        Specified by:
        validate in class SeriesIndependentFactory<com.inet.taskplanner.server.api.trigger.cron.CronTrigger,​TriggerDefinition,​TriggerInfo,​SummaryInfo>
        Parameters:
        definition - the definition to validate
        taskID - the ID of the task the definition belongs or will belong to, for optional use. Can be null if the operation is done for a non-saved task.
        Throws:
        ValidationException - if the component has some errors
      • validateCronExpression

        public static java.lang.String validateCronExpression​(@Nullable
                                                              java.lang.String cronExpression)
        FOR INTERNAL USE ONLY. Validate the given cron expression and returns the error message.
        Parameters:
        cronExpression - the expression to validate
        Returns:
        Message describing the error in the expression. Null if expression is ok. Message may also say that expression is null.
      • createInstanceFrom

        protected com.inet.taskplanner.server.api.trigger.cron.CronTrigger createInstanceFrom​(TriggerDefinition definition,
                                                                                              com.inet.id.GUID taskID)
        Construct a component (PRODUCT) from the given definition.
        Overrides:
        createInstanceFrom in class AbstractFactory<com.inet.taskplanner.server.api.trigger.cron.CronTrigger,​TriggerDefinition,​TriggerInfo,​SummaryInfo>
        Parameters:
        definition - the definition holding information for the PRODUCT
        taskID - the ID of the task the definition belongs or will belong to, for optional use. Can be null if the operation is done for a non-saved task.
        Returns:
        a new PRODUCT
      • getSummary

        public SummaryInfo getSummary​(TriggerDefinition definition)
        Construct Summary infos for the component represented by given definition.

        The summary info is used when the webgui displays the component.

        When implementing a factory for a component only to be used per API, only then you can return null here.

        Specified by:
        getSummary in class AbstractFactory<com.inet.taskplanner.server.api.trigger.cron.CronTrigger,​TriggerDefinition,​TriggerInfo,​SummaryInfo>
        Parameters:
        definition - the definition with the settings made by a user
        Returns:
        summary infos containing text lines to be displayed in the webgui for this component.
      • getNextExecutionTimes

        public java.util.List<java.time.ZonedDateTime> getNextExecutionTimes​(TriggerDefinition definition)
        Returns the calculated time of the next executions. If the trigger is e.g. event based and does not provide a time, null is returned. In case time based trigger is configured incorrectly or does not have any future executions, then an empty list is returned.
        Overrides:
        getNextExecutionTimes in class TriggerFactory<com.inet.taskplanner.server.api.trigger.cron.CronTrigger>
        Parameters:
        definition - the current definition where to get the next executions for
        Returns:
        the calculated time of the next execution. Normally 3 future executions are returned, or less if there are not 3 more from now.
      • getNextExecutionsAsSummary

        public static java.util.List<SummaryEntry> getNextExecutionsAsSummary​(java.util.List<java.time.ZonedDateTime> nextExecutions)
        FOR INTERNAL USE ONLY. Create a List with infos for the next executions which will come from the given cron expression starting at given Date.
        Parameters:
        nextExecutions - list of next execution dates to get the summary text for
        Returns:
        List with summary infos, can be empty. Is also empty if the cronExpression is null or empty.
        See Also:
        getNextExecutionsForCronExpression(String)
      • getNextExecutionsForCronExpression

        public static java.util.List<java.time.ZonedDateTime> getNextExecutionsForCronExpression​(java.lang.String cronExpression)
        FOR INTERNAL USE ONLY. Get the date of the next executions for the given cron expression from now.
        Parameters:
        cronExpression - the expression to analyse
        Returns:
        list with future executions. Can be empty if there are no future executions or the expression is invalid or null.
      • getNextExecutionsForCronExpression

        public static java.util.List<java.time.ZonedDateTime> getNextExecutionsForCronExpression​(java.lang.String cronExpression,
                                                                                                 java.time.ZonedDateTime startDate,
                                                                                                 @Nullable
                                                                                                 java.util.function.Predicate<java.time.ZonedDateTime> acceptDate)
        FOR INTERNAL USE ONLY. Get the date of the next executions for the given cron expression from the the given date on.
        Parameters:
        cronExpression - the expression to analyse
        startDate - date when he next executions are to find
        acceptDate - optional filter which will be applied on next execution date. Each next execution will be checked with this, and the filter declines the date, then that date will not be used as next execution date. It continues until enough next dates have passed the filter. BEWARE of possible endless loops!
        Returns:
        list with future executions. Can be empty if there are no future executions or the expression is invalid or null.